如何配置辅助引导加载程序的UART引脚?

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
16个职位/ 0个新职位
最后发表
Vivek
离线
最后看到:2年5个月前
加入:2017-07-08 07:11
如何配置辅助引导加载程序的UART引脚?

你好,

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

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

嗨,维克,

辅助引导加载程序位于实用程序文件夹中的SDK中,您必须定义SUPPORT_AN_B_001以启用辅助引导加载程序特性,然后通过取消定义SPI_FLASH_SUPPORTED和EEPROM_FLASH_SUPPORTED并定义UART_SUPPORTED来禁用spi和i2c接口。在此之后,您必须通过更改UART_GPIO_PORT、UART_TX_PIN和UART_RX_PIN的定义来将UART引脚更改为您想要的引脚。执行上述操作应该没问题,您可以在将fw烧录到OTP之前通过直接运行到systram并将fw下载到UART来测试它。

由于MT_dialog

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

嗨MT_dialog,

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

我下载了SDKhttps://support.dialog-semiconductor.com/connectivity/product/da14580?qt..。,并在
bootloader.h和改变UART_GPIO_PORT, UART_TX_PIN和UART_RX_PIN宏。请核实。

将第24行从#undef UART_SUPPORTED更改为#define UART_SUPPORTED
第27行从#define SPI_FLASH_SUPPORTED到#undef SPI_FLASH_SUPPORTED
第37行从#undef SUPPORT_AN_B_001到#define SUPPORT_AN_B_001

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

嗨,维克,

我提到的配置是有效的,如果你没有看到0x02,这意味着设备没有跟踪你设置在高状态的RX引脚,在UART支持部分的主函数的引导加载程序中,有一个条件if (GPIO_GetPinStatus(UART_GPIO_PORT, UART_RX_PIN)),在执行扫描过程之前检查RX引脚。

由于MT_dialog

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

嗨MT_dialog,

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

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

我怎么能让它工作在释放模式?

MT_dialog
离线
最后看到:两个月前两个星期前
工作人员
加入: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引导加载程序吗?

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

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

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

附件:
MT_dialog
离线
最后看到:两个月前两个星期前
工作人员
加入:2015-06-08 34
嗨,维克,

嗨,维克,

我已经通过智能片段使用JTAG接口测试了下载过程,确实我在下载fw时没有看到P10和P11引脚的动作(我猜这是你看到的),但我也尝试了使用UART接口,探测了两个引脚,fw运行正常,我可以假设这与下载过程有关,而不是与.hex文件产生,在这两种情况下。hex文件是相同的,它在sysram中镜像,但出于某种原因,当使用智能片段从JTAG下载二进制文件时,fw不运行,但我不认为这与fw无关,例如,如果你将二进制文件加载到flash中以模拟OTP副本,它应该和通过UART下载fw一样正常工作。

由于MT_dialog

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

嗨MT_dialog,

我没有选择在我的硬件tap PORT0引脚(这是用于内置uart引导加载程序)。所以我必须使用Jlink来加载辅助引导加载程序固件。如果我闪光辅助引导加载十六进制文件到OPT使用JLink,它会正常工作吗?还是会面临同样的问题?

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

嗨MT_dialog,

我曾尝试使用Jlink将十六进制文件烧成OTP。我遵循了WI_Dialog在帖子中的指示https://support.dialog-semiconductor.com/program-da14580-otp-memory以及用户手册“UM-B-083”。但我得到一个错误消息“附加错误信息在JTAG地址0x81FEC (MSB第一):FF FF FF FE”,并在失败前写2字节破坏了OTP。

请查收附件图片。

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

嗨,维克,

正如我在上一篇文章中提到的,我怀疑无法直接从系统中使用智能片段下载和运行secondary_bootloader的原因是智能片段本身,因为我能够使用SEGGER命令下载.bin并下载并运行二进制文件。所以,不,我不认为会有这个问题,如果你在OTP燃烧次级引导程序,我也测试了这个使用闪存(bunred次级引导加载程序在闪存)和二进制运行,因为它应该。

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

由于MT_dialog

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

嗨MT_dialog,

谢谢你的建议。我已经成功地将程序刻录到OTP(问题是OTP供应6.8)。辅助引导加载程序现在工作正常。我能够看到0x02,我能够使用智能代码片段工具将应用程序加载到sysRAM。

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

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

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

注意:-
根据阿尔卑斯山参考手册,我在OTP报头中做了以下更改。
应用flag1: Yes·应用flag2: Yes·校准标志:比特[4]=1。Xtal 16MHz Trim值:320·DMA长度:1FC0

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

嗨,维克,

顺序是这样的,设备将从OTP启动,它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并开始检查您的自定义端口,一旦设备发现一些东西,它将开始从UART复制fw到syram,然后当设备成功地完成下载序列时,它将分支到新下载的fw。辅助引导加载程序的fw运行到ret ram而不是在系统中,所以我不认为OTP重写下载到系统中的fw。也许下载的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: Yes·应用flag2: Yes·校准标志:比特[4]=1。Xtal 16MHz Trim值:320·DMA长度:1FC0

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

嗨,维克,

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

我没有看到你烧到OTP的值有任何问题,为了从OTP启动,两个标志都应该设置为yes,关于XTAL 16MHz的修剪值,这取决于你的晶体,DMA长度不是必要的,但我认为它不会给你带来任何问题。

关于分支,当设备成功下载fw时,辅助引导加载程序将进入sw_reset()中的Start_run_user_application(),引导程序将新下载fw的向量表中的堆栈值分配到SP寄存器,然后分支到下载fw的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\reporter\src”中取了示例代码spi_booter.c,并将其转换为uart接口。在转换时,我犯了一个错误,导致读取错误的地址。