你好,
我想通过j-link将辅助引导加载程序刻录到OTP中。我想从UART从我的主机控制器复制应用程序代码。我想将GPIO引脚P1_0配置为TX和P1_1作为引导加载程序的RX。从哪里我可以下载辅助引导加载程序,我如何配置TX和RX引脚?
嗨Vivek,
辅助引导加载程序位于Utilities文件夹中的SDK中,您必须定义Support_An_B_001以启用辅助引导程序功能,然后通过拒绝SPI_FLASH_SUPOSTED和EEPROM_FLASH_SUPOSTED和定义UART_SUPPORTED并定义SPI和I2C接口并定义UEART_SUPPORTED禁用SPI和I2C接口。完成后,您必须通过更改UART_GPIO_PORT,UART_TX_PIN和UART_RX_PIN的定义来将UART引脚更改为您想要的。做上面的事情应该可以,你可以通过直接向Sysram运行并下载FW来测试FW之前将其测试到OTP之前。
谢谢mt_dialog.
嗨mt_dialog,
谢谢你的快速回复。我遵循了你最后回复的步骤。对于测试,我已使用JLink将辅助引导加载程序固件下载到Sysram,我已将UART行连接到PC到UART转换器。但我无法在UART行中看到任何东西。一旦成功加载引导加载程序固件,我期望BLE模块连续传输“0x02”。
我下载了SDK“https://support.dialog-semicondiondiondum/connectivity/product/da14580?qt ...“并进行了以下变化bootloader.h并更改了UART_GPIO_PORT,UART_TX_PIN和UART_RX_PIN MACROS.PLEASE验证它。
从#undef uart_supported到#define uart_supported更改了行号24从#define spi_flash_supported到#undef spi_flash_supported的行数27从#undef support_an_b_001到#define support_an_b_001的行
如果您没有看到0x02,则提到的配置是有效的,这意味着设备不跟踪您在Hign状态中设置的RX引脚,在UART支持的部分中的主函数中的引导加载程序中有一个如果(GPIO_GETPINSTATUS(UART_GPIO_PORT,UART_GPIO_PORT,UART_RX_PIN))在执行扫描过程之前检查RX引脚。
我在RX引脚上检查了电压,我得到3.3伏。但我仍然无法看到0x02。
如果我在调试模式下运行代码,则它正常工作。我能够在终端中看到0x02,我能够使用SmartSnippets工具编程其他示例项目。我遵循了在Alps开发套件应用笔记中解释的步骤,以便在调试模式下运行。
如何在发布模式下工作?
您究竟是什么意思在调试模式和释放模式下运行代码?副引导程序具有禁用的CFG_Development_debug定义,在我的侧面输出RAM中的项目输出0x02字节以从外部UART引导。我不熟悉阿尔卑斯山文件。
你的身边是你通过p1_0作为tx和p1_1作为rx?
释放模式意味着我将使用SmartSnippet工具将.hex文件下载到Sysram。在这种方法中,我没有得到0x02。
在调试模式下运行,我们通过单击附件中显示的图标在基尔中有一个选项。然后我们可以通过步骤执行或不断运行代码来执行步骤。在这种方法中,我得到0x02。但对于我想要使用十六进制文件的最终产品。所以我想通过在刻录到OTP之前通过下载到Sysram来验证它。
如果您需要ALPS文件,请将您的电子邮件ID发送给vivek@technosphere.in或者jasim@technosphere.in
我通过使用JTAG接口测试了下载过程,确实我看到了在P10和P11引脚上没有动作(我认为这是你所看到的)下载FW时,但我也尝试使用UART接口探讨了两个引脚和FW正常运行,我可以假设这与下载过程有关,而不是使用.hex文件,在两种情况下,在Sysram中都是相同的,它是镜像,但出于某种原因从使用智能片段从JTAG下载二进制文件时FW无法运行,但是,我不认为这与FW无关,如果例如,您将二进制文件加载到Flash才能模仿OTP复制它应该正常工作以及下载FW通过UART。
我的HARWAW中没有选项以点击Port0引脚(用于Inbuilt UART引导程序)。所以我必须使用jlink加载辅助引导程序固件。如果我刷掉次级引导加载程序的十六进制文件来选择使用jlink,它会正常工作吗?或者它会面临同样的问题?
我尝试使用jlink将十六进制文件刻录到OTP中。我跟随Wi_dialog在帖子中的指示https://support.dialog-semicondiondiondum/program-da14580-otp-memory.和用户手册“UM-B-083”。但我收到错误消息“JTAG地址0x81FEC(MSB第一):FF FF FE”并通过在失败之前通过写2个字节来损坏OTP。
请找到附加的图像。
正如我上一篇文章中所提到的那样,我怀疑没有能够使用智能片段直接从Sysram下载和运行seconder_bootlooder的原因是智能片段它是自我的,因为我能够使用Segger指挥官下载.bin运行二进制文件。所以,如果在OTP中刻录辅助启动器,我不认为会有这个问题,我也使用闪存(闪存中的闪存中的次级引导加载程序)和二进制运行时测试此问题。
关于OTP的问题。这可能是由于OTP编程供应引起的问题。所以请检查一下。
感谢您的建议。我已成功将程序刻录为OTP(问题与OTP Supply 6.8)。二级引导加载程序现在正常工作。我能够看到0x02,我能够使用Smart Scippet工具加载到Sysram的应用程序。
但只要我加载应用程序固件虽然我的主机控制器虽然,但它无法正常工作。发送标题(SOH和Length)时,我正在获得合适的ACK,我在固件数据包结束时获得CRC。由于CRC匹配我将ACK发送到BLE模块。但在那之后,我持续获得“0x02”。
似乎BLE模块正在重新启动,并且来自OTP的数据覆盖了我的应用程序代码。
我必须在OTP标题中设置一些东西来避免这种情况吗?或者在辅助引导加载程序固件中是否错过了任何东西?
笔记:-根据ALP参考手册,我已经在OTP标题中进行了以下更改。应用Flag1:是·应用程序标志2:是·校准标志:位[4] = 1。XTAL 16MHz修剪值:320·DMA长度:1FC0
该序列如此,设备将从OTP引导,它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并在设备查找内容时立即开始检查您的自定义端口,从而开始复制FWUART到Sysram,然后当设备成功完成下载序列时,它将分支到新下载的FW。辅助引导加载程序的FW运行到RET RAM而不是在Sysram中,因此我不认为OTP将下载到Sysram中的FW重写。也许下载的FW运行以及Somepoint它会导致重置设备?在OTP中没有燃烧额外的配置。
“当设备成功完成下载序列时,它将分支到新下载的FW。”>>我认为这个分支没有正常发生。从BLE模块获取CRC后,我正在发送ACK(0x06)。我希望引导加载程序代码一旦从主机控制器获得ACK就必须处理分支到新下载的固件。
“也许正在下载的FW运行以及Somepoint它导致设备重置?”>>不,我尝试过我的应用程序代码和SDK中的示例代码(SDK 5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ host_apps \ da1458x \ proximity \ eporter)。我已发送固件包含在上面提到的项目中的“prox_reporter_ext.h”文件中。在这两种情况下都失败了。它要么是重置或程序跳到一些错误的地址,一旦程序计数器达到其最大值,就会从重置地址开始。
“在OTP中没有额外的配置刻录。”>>您能否验证OTP标题的更改吗?(应用程序标志1:是·应用程序标志2:是·校准标志:位[4] = 1. XTAL 16MHz修剪值:320·DMA长度:1FC0)
您是否测试过这一点以检查这是否是在所有通行条件下发生的东西,而且不仅当引导加载程序刻录到OTP时?例如,您尝试通过Keil下载FW(为了运行次级引导加载程序),而辅助引导者运行使用Smart Scippets Booter Tool下载FW?我试过上面的问题,我能够通过UART从引脚P10和P11引导,并在成功上传图像时准确地检查辅助靴子分支的位置。
我没有看到烧焦到OTP的值的任何错误,两个标志都应该设置为yes,以便从OTP引导,这对于依赖于您的水晶的XTAL 16MHz修剪值,并且DMA长度不是必需品,但我不认为它会给你带来任何问题。
关于分支,当设备成功下载FW时,辅助引导加载程序将转到sw_reset()中的start_run_user_application()将从新下载的fw的向量表中分配堆栈值到sp寄存器和然后将分支到下载的fw的reset_handler。
谢谢您的支持。它现在正常工作。问题是阅读固件阵列的方式。我已经参与了“SDK 5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ host_apps \ da1458x \ proximity \ eporter \ src”的示例代码spi_booter.c.并将其转换为UART接口。在转换时,我犯了一个错误,导致读错的地址。
嗨Vivek,
辅助引导加载程序位于Utilities文件夹中的SDK中,您必须定义Support_An_B_001以启用辅助引导程序功能,然后通过拒绝SPI_FLASH_SUPOSTED和EEPROM_FLASH_SUPOSTED和定义UART_SUPPORTED并定义SPI和I2C接口并定义UEART_SUPPORTED禁用SPI和I2C接口。完成后,您必须通过更改UART_GPIO_PORT,UART_TX_PIN和UART_RX_PIN的定义来将UART引脚更改为您想要的。做上面的事情应该可以,你可以通过直接向Sysram运行并下载FW来测试FW之前将其测试到OTP之前。
谢谢mt_dialog.
嗨mt_dialog,
谢谢你的快速回复。我遵循了你最后回复的步骤。对于测试,我已使用JLink将辅助引导加载程序固件下载到Sysram,我已将UART行连接到PC到UART转换器。但我无法在UART行中看到任何东西。一旦成功加载引导加载程序固件,我期望BLE模块连续传输“0x02”。
我下载了SDK“https://support.dialog-semicondiondiondum/connectivity/product/da14580?qt ...“并进行了以下变化
bootloader.h并更改了UART_GPIO_PORT,UART_TX_PIN和UART_RX_PIN MACROS.PLEASE验证它。
从#undef uart_supported到#define uart_supported更改了行号24
从#define spi_flash_supported到#undef spi_flash_supported的行数27
从#undef support_an_b_001到#define support_an_b_001的行
嗨Vivek,
如果您没有看到0x02,则提到的配置是有效的,这意味着设备不跟踪您在Hign状态中设置的RX引脚,在UART支持的部分中的主函数中的引导加载程序中有一个如果(GPIO_GETPINSTATUS(UART_GPIO_PORT,UART_GPIO_PORT,UART_RX_PIN))在执行扫描过程之前检查RX引脚。
谢谢mt_dialog.
嗨mt_dialog,
我在RX引脚上检查了电压,我得到3.3伏。但我仍然无法看到0x02。
如果我在调试模式下运行代码,则它正常工作。我能够在终端中看到0x02,我能够使用SmartSnippets工具编程其他示例项目。我遵循了在Alps开发套件应用笔记中解释的步骤,以便在调试模式下运行。
如何在发布模式下工作?
嗨Vivek,
您究竟是什么意思在调试模式和释放模式下运行代码?副引导程序具有禁用的CFG_Development_debug定义,在我的侧面输出RAM中的项目输出0x02字节以从外部UART引导。我不熟悉阿尔卑斯山文件。
谢谢mt_dialog.
你的身边是你通过p1_0作为tx和p1_1作为rx?
释放模式意味着我将使用SmartSnippet工具将.hex文件下载到Sysram。在这种方法中,我没有得到0x02。
在调试模式下运行,我们通过单击附件中显示的图标在基尔中有一个选项。然后我们可以通过步骤执行或不断运行代码来执行步骤。在这种方法中,我得到0x02。但对于我想要使用十六进制文件的最终产品。所以我想通过在刻录到OTP之前通过下载到Sysram来验证它。
如果您需要ALPS文件,请将您的电子邮件ID发送给vivek@technosphere.in或者jasim@technosphere.in
嗨Vivek,
我通过使用JTAG接口测试了下载过程,确实我看到了在P10和P11引脚上没有动作(我认为这是你所看到的)下载FW时,但我也尝试使用UART接口探讨了两个引脚和FW正常运行,我可以假设这与下载过程有关,而不是使用.hex文件,在两种情况下,在Sysram中都是相同的,它是镜像,但出于某种原因从使用智能片段从JTAG下载二进制文件时FW无法运行,但是,我不认为这与FW无关,如果例如,您将二进制文件加载到Flash才能模仿OTP复制它应该正常工作以及下载FW通过UART。
谢谢mt_dialog.
嗨mt_dialog,
我的HARWAW中没有选项以点击Port0引脚(用于Inbuilt UART引导程序)。所以我必须使用jlink加载辅助引导程序固件。如果我刷掉次级引导加载程序的十六进制文件来选择使用jlink,它会正常工作吗?或者它会面临同样的问题?
嗨mt_dialog,
我尝试使用jlink将十六进制文件刻录到OTP中。我跟随Wi_dialog在帖子中的指示https://support.dialog-semicondiondiondum/program-da14580-otp-memory.和用户手册“UM-B-083”。但我收到错误消息“JTAG地址0x81FEC(MSB第一):FF FF FE”并通过在失败之前通过写2个字节来损坏OTP。
请找到附加的图像。
嗨Vivek,
正如我上一篇文章中所提到的那样,我怀疑没有能够使用智能片段直接从Sysram下载和运行seconder_bootlooder的原因是智能片段它是自我的,因为我能够使用Segger指挥官下载.bin运行二进制文件。所以,如果在OTP中刻录辅助启动器,我不认为会有这个问题,我也使用闪存(闪存中的闪存中的次级引导加载程序)和二进制运行时测试此问题。
关于OTP的问题。这可能是由于OTP编程供应引起的问题。所以请检查一下。
谢谢mt_dialog.
嗨mt_dialog,
感谢您的建议。我已成功将程序刻录为OTP(问题与OTP Supply 6.8)。二级引导加载程序现在正常工作。我能够看到0x02,我能够使用Smart Scippet工具加载到Sysram的应用程序。
但只要我加载应用程序固件虽然我的主机控制器虽然,但它无法正常工作。发送标题(SOH和Length)时,我正在获得合适的ACK,我在固件数据包结束时获得CRC。由于CRC匹配我将ACK发送到BLE模块。但在那之后,我持续获得“0x02”。
似乎BLE模块正在重新启动,并且来自OTP的数据覆盖了我的应用程序代码。
我必须在OTP标题中设置一些东西来避免这种情况吗?或者在辅助引导加载程序固件中是否错过了任何东西?
笔记:-
根据ALP参考手册,我已经在OTP标题中进行了以下更改。
应用Flag1:是·应用程序标志2:是·校准标志:位[4] = 1。XTAL 16MHz修剪值:320·DMA长度:1FC0
嗨Vivek,
该序列如此,设备将从OTP引导,它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并在设备查找内容时立即开始检查您的自定义端口,从而开始复制FWUART到Sysram,然后当设备成功完成下载序列时,它将分支到新下载的FW。辅助引导加载程序的FW运行到RET RAM而不是在Sysram中,因此我不认为OTP将下载到Sysram中的FW重写。也许下载的FW运行以及Somepoint它会导致重置设备?在OTP中没有燃烧额外的配置。
谢谢mt_dialog.
嗨mt_dialog,
“当设备成功完成下载序列时,它将分支到新下载的FW。”
>>我认为这个分支没有正常发生。从BLE模块获取CRC后,我正在发送ACK(0x06)。我希望引导加载程序代码一旦从主机控制器获得ACK就必须处理分支到新下载的固件。
“也许正在下载的FW运行以及Somepoint它导致设备重置?”
>>不,我尝试过我的应用程序代码和SDK中的示例代码(SDK 5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ host_apps \ da1458x \ proximity \ eporter)。我已发送固件包含在上面提到的项目中的“prox_reporter_ext.h”文件中。在这两种情况下都失败了。它要么是重置或程序跳到一些错误的地址,一旦程序计数器达到其最大值,就会从重置地址开始。
“在OTP中没有额外的配置刻录。”
>>您能否验证OTP标题的更改吗?(应用程序标志1:是·应用程序标志2:是·校准标志:位[4] = 1. XTAL 16MHz修剪值:320·DMA长度:1FC0)
嗨Vivek,
您是否测试过这一点以检查这是否是在所有通行条件下发生的东西,而且不仅当引导加载程序刻录到OTP时?例如,您尝试通过Keil下载FW(为了运行次级引导加载程序),而辅助引导者运行使用Smart Scippets Booter Tool下载FW?我试过上面的问题,我能够通过UART从引脚P10和P11引导,并在成功上传图像时准确地检查辅助靴子分支的位置。
我没有看到烧焦到OTP的值的任何错误,两个标志都应该设置为yes,以便从OTP引导,这对于依赖于您的水晶的XTAL 16MHz修剪值,并且DMA长度不是必需品,但我不认为它会给你带来任何问题。
关于分支,当设备成功下载FW时,辅助引导加载程序将转到sw_reset()中的start_run_user_application()将从新下载的fw的向量表中分配堆栈值到sp寄存器和然后将分支到下载的fw的reset_handler。
谢谢mt_dialog.
嗨mt_dialog,
谢谢您的支持。它现在正常工作。问题是阅读固件阵列的方式。我已经参与了“SDK 5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ host_apps \ da1458x \ proximity \ eporter \ src”的示例代码spi_booter.c.并将其转换为UART接口。在转换时,我犯了一个错误,导致读错的地址。