你好,
我想通过J-Link刻录一个辅助引导加载程序到OTP。我想通过UART将应用程序代码从主控制器复制到RAM。我想配置GPIO引脚P1_0为Tx, P1_1为引导加载器的Rx。从哪里我可以下载辅助引导加载程序和我如何配置Tx和Rx引脚?
嗨,维克,
二级引导装载程序位于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
嗨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第27行,从#define SPI_FLASH_SUPPORTED到#undef SPI_FLASH_SUPPORTED第37行,从#undef SUPPORT_AN_B_001到#define SUPPORT_AN_B_001
我已经提到的配置是有效的,如果你不看到0 x02这意味着设备跟踪RX销,你没有设置高的状态,引导装载程序的主要功能在UART支持部分如果有条件(GPIO_GetPinStatus (UART_GPIO_PORT,在执行扫描过程之前检查RX引脚。
我检查了Rx引脚的电压,我得到3.3伏。但我仍然无法看到0x02。
如果我在调试模式下运行代码,它工作得很好。我能够看到0x02在终端和我能够使用SmartSnippets工具编程其他样本项目。我遵循了阿尔卑斯开发工具包应用程序说明中解释的在调试模式下运行的步骤。
我如何让它在发布模式下工作?
在调试模式和发布模式下运行代码到底是什么意思?辅助引导加载程序禁用了CFG_DEVELOPMENT_DEBUG定义,在我这边的RAM中运行项目总是输出一个0x02字节用于从外部UART引导。我不熟悉ALPS的文件。
你这边是否尝试通过P1_0作为Tx, P1_1作为Rx引导加载程序?
释放模式意味着我将使用smarsnippet工具下载.hex文件到sysRam。在这个方法中我没有得到0x02。
为了在调试模式下运行,我们在kiel中有一个选项,点击附件中显示的图标。然后我们可以逐步执行或连续运行代码。在这个方法中,我得到0X02。但是对于最终产品,我想使用hex文件。所以我想在刻录到OTP之前通过下载到sysRam来验证它。
如果您需要阿尔卑斯的文件,请发送您的电子邮件id到vivek@technosphere.in或jasim@technosphere.in
我测试了下载过程通过使用JTAG接口的智能片段,事实上我没有看到行动第10页和侯别针(我想这是你所看到的)当下载弗兰克-威廉姆斯,但是我也尝试使用UART接口和探索两个别针和弗兰克-威廉姆斯是正常操作,我可以假设这是相关的下载过程而不是.hex文件了,在这两种情况下,.hex文件是相同的,其反映在sysram但出于某种原因,当从JTAG使用智能下载二进制代码片段弗兰克-威廉姆斯不跑,但是我不认为这与弗兰克-威廉姆斯无关,例如,如果你加载二进制文件到flash,以模拟OTP副本,它应该正常工作,并通过UART下载fw。
我没有选择在我的硬件tap PORT0引脚(这是用于内置uart引导加载程序)。所以我必须使用Jlink加载二级引导加载程序固件。如果我使用JLink将辅助引导程序的十六进制文件flash到OPT,它会正常工作吗?还是会面临同样的问题?
我尝试过使用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字节之前失败。
请查收附件中的图片。
如前所述在我之前的帖子我怀疑的原因无法下载和运行使用智能片段直接从sysram secondary_bootloader是聪明的自我片段,因为我能够下载。斌使用耐火指挥官和下载并运行二进制。所以,不,我不认为会有这个问题,如果你烧伤在OTP的辅助引导程序,我也测试了这个使用flash (bunred的辅助引导加载程序在flash)和二进制运行它应该。
关于OTP的问题。这很可能是由于OTP编程供应造成的问题。请检查一下。
谢谢你的建议。我已经成功地将程序烧录到OTP中(问题是OTP供应6.8)。次级引导加载程序现在工作正常。我能够看到0x02,我能够加载应用程序到系统ram使用智能片段工具。
但是每当我加载应用程序固件通过我的主机控制器,它是不工作的。我在发送报头(SOH和长度)时得到正确的ACK,我在固件包的末尾得到CRC。由于CRC正在匹配,我正在向BLE模块发送ACK。但在那之后,我不断地得到“0x02”。
似乎BLE模块正在重新启动,来自OTP的数据覆盖了我的应用程序代码。
我必须设置一些东西在OTP头来避免这个?或者在辅助引导加载程序固件中有什么遗漏吗?
注意:-根据阿尔卑斯参考手册,我在OTP头部做了以下更改。应用flag1:是的・应用flag2:是的・校准标志:[4]= 1。晶体16兆赫削减值:320・DMA长度:1 fc0
顺序是这样的,设备将从OTP启动它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并开始检查您的自定义端口,一旦设备发现一些东西,它将开始从UART复制fw到Sysram,然后当设备成功完成下载顺序时,它将分支到新下载的fw。二级引导装载器的fw会进入ret ram而不是sysram,所以我不认为OTP会将下载的fw重写到sysram中。也许下载的fw运行时,在某一点上它导致设备复位?在OTP中没有额外的配置要刻录。
嗨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)
您是否进行了测试,以检查这是否在所有情况下都发生,而不仅仅是在将引导加载程序烧录到OTP时发生?例如,你有没有试过通过keil下载fw(为了辅助引导加载程序运行),而辅助引导程序运行时,使用智能片段引导工具下载fw ?我已经尝试了以上,我能够通过UART从P10和P11引脚启动,并检查当成功上传图像时,二级引导程序分支的确切位置。
我不看到任何错误的价值观烧到OTP,两个国旗应该设置为yes为了从OTP引导,对于晶体16兆赫削减值取决于你的水晶,和DMA长度并不是必需的,但我不认为它会造成你的任何问题。
对于分支,二级引导装载程序当设备已经成功下载了弗兰克-威廉姆斯则去Start_run_user_application sw_reset()的()橄榄球员将从矢量表分配堆栈值新下载的弗兰克-威廉姆斯SP寄存器,将分支的Reset_Handler下载固件。
谢谢你的支持。它现在工作得很好。问题是读取固件阵列的方式。我已经从“SDK 5.0.4\DA1458x_SDK\5.0.4\projects\host_apps\da1458x\proximity\reporter\src”中获取了示例代码spi_booter.c,并将其转换为uart接口。在转换过程中,我犯了一个错误,读取了错误的地址。
嗨,维克,
二级引导装载程序位于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
嗨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
第27行,从#define SPI_FLASH_SUPPORTED到#undef SPI_FLASH_SUPPORTED
第37行,从#undef SUPPORT_AN_B_001到#define SUPPORT_AN_B_001
嗨,维克,
我已经提到的配置是有效的,如果你不看到0 x02这意味着设备跟踪RX销,你没有设置高的状态,引导装载程序的主要功能在UART支持部分如果有条件(GPIO_GetPinStatus (UART_GPIO_PORT,在执行扫描过程之前检查RX引脚。
由于MT_dialog
嗨MT_dialog,
我检查了Rx引脚的电压,我得到3.3伏。但我仍然无法看到0x02。
如果我在调试模式下运行代码,它工作得很好。我能够看到0x02在终端和我能够使用SmartSnippets工具编程其他样本项目。我遵循了阿尔卑斯开发工具包应用程序说明中解释的在调试模式下运行的步骤。
我如何让它在发布模式下工作?
嗨,维克,
在调试模式和发布模式下运行代码到底是什么意思?辅助引导加载程序禁用了CFG_DEVELOPMENT_DEBUG定义,在我这边的RAM中运行项目总是输出一个0x02字节用于从外部UART引导。我不熟悉ALPS的文件。
由于MT_dialog
你这边是否尝试通过P1_0作为Tx, P1_1作为Rx引导加载程序?
释放模式意味着我将使用smarsnippet工具下载.hex文件到sysRam。在这个方法中我没有得到0x02。
为了在调试模式下运行,我们在kiel中有一个选项,点击附件中显示的图标。然后我们可以逐步执行或连续运行代码。在这个方法中,我得到0X02。但是对于最终产品,我想使用hex文件。所以我想在刻录到OTP之前通过下载到sysRam来验证它。
如果您需要阿尔卑斯的文件,请发送您的电子邮件id到vivek@technosphere.in或jasim@technosphere.in
嗨,维克,
我测试了下载过程通过使用JTAG接口的智能片段,事实上我没有看到行动第10页和侯别针(我想这是你所看到的)当下载弗兰克-威廉姆斯,但是我也尝试使用UART接口和探索两个别针和弗兰克-威廉姆斯是正常操作,我可以假设这是相关的下载过程而不是.hex文件了,在这两种情况下,.hex文件是相同的,其反映在sysram但出于某种原因,当从JTAG使用智能下载二进制代码片段弗兰克-威廉姆斯不跑,但是我不认为这与弗兰克-威廉姆斯无关,例如,如果你加载二进制文件到flash,以模拟OTP副本,它应该正常工作,并通过UART下载fw。
由于MT_dialog
嗨MT_dialog,
我没有选择在我的硬件tap PORT0引脚(这是用于内置uart引导加载程序)。所以我必须使用Jlink加载二级引导加载程序固件。如果我使用JLink将辅助引导程序的十六进制文件flash到OPT,它会正常工作吗?还是会面临同样的问题?
嗨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字节之前失败。
请查收附件中的图片。
嗨,维克,
如前所述在我之前的帖子我怀疑的原因无法下载和运行使用智能片段直接从sysram secondary_bootloader是聪明的自我片段,因为我能够下载。斌使用耐火指挥官和下载并运行二进制。所以,不,我不认为会有这个问题,如果你烧伤在OTP的辅助引导程序,我也测试了这个使用flash (bunred的辅助引导加载程序在flash)和二进制运行它应该。
关于OTP的问题。这很可能是由于OTP编程供应造成的问题。请检查一下。
由于MT_dialog
嗨MT_dialog,
谢谢你的建议。我已经成功地将程序烧录到OTP中(问题是OTP供应6.8)。次级引导加载程序现在工作正常。我能够看到0x02,我能够加载应用程序到系统ram使用智能片段工具。
但是每当我加载应用程序固件通过我的主机控制器,它是不工作的。我在发送报头(SOH和长度)时得到正确的ACK,我在固件包的末尾得到CRC。由于CRC正在匹配,我正在向BLE模块发送ACK。但在那之后,我不断地得到“0x02”。
似乎BLE模块正在重新启动,来自OTP的数据覆盖了我的应用程序代码。
我必须设置一些东西在OTP头来避免这个?或者在辅助引导加载程序固件中有什么遗漏吗?
注意:-
根据阿尔卑斯参考手册,我在OTP头部做了以下更改。
应用flag1:是的・应用flag2:是的・校准标志:[4]= 1。晶体16兆赫削减值:320・DMA长度:1 fc0
嗨,维克,
顺序是这样的,设备将从OTP启动它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并开始检查您的自定义端口,一旦设备发现一些东西,它将开始从UART复制fw到Sysram,然后当设备成功完成下载顺序时,它将分支到新下载的fw。二级引导装载器的fw会进入ret ram而不是sysram,所以我不认为OTP会将下载的fw重写到sysram中。也许下载的fw运行时,在某一点上它导致设备复位?在OTP中没有额外的配置要刻录。
由于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)
嗨,维克,
您是否进行了测试,以检查这是否在所有情况下都发生,而不仅仅是在将引导加载程序烧录到OTP时发生?例如,你有没有试过通过keil下载fw(为了辅助引导加载程序运行),而辅助引导程序运行时,使用智能片段引导工具下载fw ?我已经尝试了以上,我能够通过UART从P10和P11引脚启动,并检查当成功上传图像时,二级引导程序分支的确切位置。
我不看到任何错误的价值观烧到OTP,两个国旗应该设置为yes为了从OTP引导,对于晶体16兆赫削减值取决于你的水晶,和DMA长度并不是必需的,但我不认为它会造成你的任何问题。
对于分支,二级引导装载程序当设备已经成功下载了弗兰克-威廉姆斯则去Start_run_user_application sw_reset()的()橄榄球员将从矢量表分配堆栈值新下载的弗兰克-威廉姆斯SP寄存器,将分支的Reset_Handler下载固件。
由于MT_dialog
嗨MT_dialog,
谢谢你的支持。它现在工作得很好。问题是读取固件阵列的方式。我已经从“SDK 5.0.4\DA1458x_SDK\5.0.4\projects\host_apps\da1458x\proximity\reporter\src”中获取了示例代码spi_booter.c,并将其转换为uart接口。在转换过程中,我犯了一个错误,读取了错误的地址。