如何为辅助引导装载器配置UART引脚?

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
16个员额/ 0个新员额
最后发表
Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
如何为辅助引导装载器配置UART引脚?

你好,

我想通过J-Link刻录一个辅助引导加载程序到OTP。我想通过UART将应用程序代码从主控制器复制到RAM。我想配置GPIO引脚P1_0为Tx, P1_1为引导加载器的Rx。从哪里我可以下载辅助引导加载程序和我如何配置Tx和Rx引脚?

设备:
MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

二级引导装载程序位于SDK工具文件夹中,你需要定义SUPPORT_AN_B_001为了启用二级引导装载程序特性,然后通过它通过禁用spi和i2c接口UART_SUPPORTED SPI_FLASH_SUPPORTED EEPROM_FLASH_SUPPORTED和定义。这样做之后,您必须通过更改UART_GPIO_PORT、UART_TX_PIN和UART_RX_PIN的定义,将UART引脚更改为您想要的引脚。以上操作应该没问题,您可以在将fw刻录到OTP之前进行测试,方法是将其直接运行到sysram并下载一个fw到UART。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

谢谢您的快速回复。我已经按照你上次回复的步骤做了。为了测试,我已经下载了使用Jlink的辅助引导加载程序固件到sysram,我已经通过USB连接到Uart转换器的Uart线到PC。但是我在uart线中看不到任何东西。一旦引导加载程序固件成功加载,我预计BLE模块将连续发送“0x02”。

我已经下载了SDKhttps://support.dialog-semiconductor.com/connectivity/product/da14580?qt..。,并做了以下修改
并更改了UART_GPIO_PORT、UART_TX_PIN和UART_RX_PIN宏。请检查它。

将第24行从#undef UART_SUPPORTED改为#define UART_SUPPORTED
从#define spi_flash_supported到#undef spi_flash_supported的行数27
第37行,从#undef SUPPORT_AN_B_001到#define SUPPORT_AN_B_001

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

我已经提到的配置是有效的,如果你不看到0 x02这意味着设备跟踪RX销,你没有设置高的状态,引导装载程序的主要功能在UART支持部分如果有条件(GPIO_GetPinStatus (UART_GPIO_PORT,在执行扫描过程之前检查RX引脚。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

我检查了Rx引脚的电压,我得到3.3伏。但我仍然无法看到0x02。

如果我在调试模式下运行代码,它工作得很好。我能够看到0x02在终端和我能够使用SmartSnippets工具编程其他样本项目。我遵循了阿尔卑斯开发工具包应用程序说明中解释的在调试模式下运行的步骤。

我如何让它在发布模式下工作?

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

在调试模式和发布模式下运行代码到底是什么意思?辅助引导加载程序禁用了CFG_DEVELOPMENT_DEBUG定义,在我这边的RAM中运行项目总是输出一个0x02字节用于从外部UART引导。我不熟悉ALPS的文件。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
你这边你在努力吗

你这边是否尝试通过P1_0作为Tx, P1_1作为Rx引导加载程序?

释放模式意味着我将使用smarsnippet工具下载.hex文件到sysRam。在这个方法中我没有得到0x02。

为了在调试模式下运行,我们在kiel中有一个选项,点击附件中显示的图标。然后我们可以逐步执行或连续运行代码。在这个方法中,我得到0X02。但是对于最终产品,我想使用hex文件。所以我想在刻录到OTP之前通过下载到sysRam来验证它。

如果您需要阿尔卑斯的文件,请发送您的电子邮件id到vivek@technosphere.in要么jasim@technosphere.in

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

我通过使用JTAG接口测试了下载过程,确实我看到了在P10和P11引脚上没有动作(我认为这是你所看到的)下载FW时,但我也尝试使用UART接口探讨了两个引脚和FW正常运行,我可以假设这与下载过程有关,而不是使用.hex文件,在两种情况下,在Sysram中都是相同的,它是镜像,但出于某种原因从使用智能片段从JTAG下载二进制文件时FW无法运行,但是,我不认为这与FW无关,如果例如,您将二进制文件加载到Flash才能模仿OTP复制它应该正常工作以及下载FW通过UART。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

我的HARWAW中没有选项以点击Port0引脚(用于Inbuilt UART引导程序)。所以我必须使用jlink加载辅助引导程序固件。如果我刷掉次级引导加载程序的十六进制文件来选择使用jlink,它会正常工作吗?或者它会面临同样的问题?

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

我尝试过使用Jlink将hex文件刻录到OTP中。我遵循了WI_Dialog在文章中的指示https://support.dialog-semiconductor.com/program-da14580-otp-memory用户手册“UM-B-083”。但是我得到一个错误消息“附加错误信息在JTAG地址0x81FEC (MSB第一):FF FF FF FE”和破坏OTP写2字节之前失败。

请查收附件中的图片。

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

如前所述在我之前的帖子我怀疑的原因无法下载和运行使用智能片段直接从sysram secondary_bootloader是聪明的自我片段,因为我能够下载。斌使用耐火指挥官和下载并运行二进制。所以,不,我不认为会有这个问题,如果你烧伤在OTP的辅助引导程序,我也测试了这个使用flash (bunred的辅助引导加载程序在flash)和二进制运行它应该。

关于OTP的问题。这很可能是由于OTP编程供应造成的问题。请检查一下。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

感谢您的建议。我已成功将程序刻录为OTP(问题与OTP Supply 6.8)。二级引导加载程序现在正常工作。我能够看到0x02,我能够使用Smart Scippet工具加载到Sysram的应用程序。

但是每当我加载应用程序固件通过我的主机控制器,它是不工作的。我在发送报头(SOH和长度)时得到正确的ACK,我在固件包的末尾得到CRC。由于CRC正在匹配,我正在向BLE模块发送ACK。但在那之后,我不断地得到“0x02”。

似乎BLE模块正在重新启动,来自OTP的数据覆盖了我的应用程序代码。

我必须设置一些东西在OTP头来避免这个?或者在辅助引导加载程序固件中有什么遗漏吗?

注意:-
根据阿尔卑斯参考手册,我在OTP头部做了以下更改。
应用flag1:是的・应用flag2:是的・校准标志:[4]= 1。晶体16兆赫削减值:320・DMA长度:1 fc0

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

顺序是这样的,设备将从OTP启动它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并开始检查您的自定义端口,一旦设备发现一些东西,它将开始从UART复制fw到Sysram,然后当设备成功完成下载顺序时,它将分支到新下载的fw。二级引导装载器的fw会进入ret ram而不是sysram,所以我不认为OTP会将下载的fw重写到sysram中。也许下载的fw运行时,在某一点上它导致设备复位?在OTP中没有额外的配置要刻录。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_Dialog,

嗨MT_Dialog,

当设备成功完成下载顺序时,它将分支到新下载的fw。
>>我认为这个分支没有正确地发生。我从ble模块得到CRC后发送ACK(0X06)。我希望引导加载程序代码在从主机控制器获得ACK后,必须负责分支到新下载的固件。

“也许下载的fw运行时,在某一点上它导致设备复位?”
> >没有。我已经尝试了我的应用程序代码和SDK中的示例代码(SDK 5.0.4\DA1458x_SDK\5.0.4\projects\host_apps\da1458x\proximity\reporter)。我已经发送了固件包含在“prox_reporter_ext.h”文件在上述项目。在这两种情况下,它都失败了。它要么被重置,要么程序跳到错误的地址,一旦程序计数器达到最大值,就从重置地址开始执行。

“在OTP中不需要燃烧额外的配置。”
>>能否验证一下我对OTP头的改动?应用程序(应用程序flag1:是的・flag2:是的・校准标志:[4]= 1。晶体16兆赫削减值:320・DMA长度:1 fc0)

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

您是否进行了测试,以检查这是否在所有情况下都发生,而不仅仅是在将引导加载程序烧录到OTP时发生?例如,你有没有试过通过keil下载fw(为了辅助引导加载程序运行),而辅助引导程序运行时,使用智能片段引导工具下载fw ?我已经尝试了以上,我能够通过UART从P10和P11引脚启动,并检查当成功上传图像时,二级引导程序分支的确切位置。

我不看到任何错误的价值观烧到OTP,两个国旗应该设置为yes为了从OTP引导,对于晶体16兆赫削减值取决于你的水晶,和DMA长度并不是必需的,但我不认为它会造成你的任何问题。

对于分支,二级引导装载程序当设备已经成功下载了弗兰克-威廉姆斯则去Start_run_user_application sw_reset()的()橄榄球员将从矢量表分配堆栈值新下载的弗兰克-威廉姆斯SP寄存器,将分支的Reset_Handler下载固件。

由于MT_dialog

Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
嗨MT_dialog,

嗨MT_dialog,

感谢您的支持。它现在正常工作。问题是阅读固件阵列的方式。我已经参与了“SDK 5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ host_apps \ da1458x \ proximity \ eporter \ src”的示例代码spi_booter.c.并将其转换为UART接口。在转换时,我犯了一个错误,导致读错的地址。