你好,
我想通过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工具编程其他样本项目。我遵循了阿尔卑斯开发工具包应用程序说明中解释的在调试模式下运行的步骤。
我如何让它在发布模式下工作?
在调试模式和发布模式下运行代码到底是什么意思?辅助引导加载程序禁用了CFG_DEVELOPMENT_DEBUG定义,在我这边的RAM中运行项目总是输出一个0x02字节用于从外部UART引导。我不熟悉ALPS的文件。
你的身边是你通过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-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 Supply 6.8)。二级引导加载程序现在正常工作。我能够看到0x02,我能够使用Smart Scippet工具加载到Sysram的应用程序。
但是每当我加载应用程序固件通过我的主机控制器,它是不工作的。我在发送报头(SOH和长度)时得到正确的ACK,我在固件包的末尾得到CRC。由于CRC正在匹配,我正在向BLE模块发送ACK。但在那之后,我不断地得到“0x02”。
似乎BLE模块正在重新启动,并且来自OTP的数据覆盖了我的应用程序代码。
我必须在OTP标题中设置一些东西来避免这种情况吗?或者在辅助引导加载程序固件中是否错过了任何东西?
笔记:-根据ALP参考手册,我已经在OTP标题中进行了以下更改。应用Flag1:是·应用程序标志2:是·校准标志:位[4] = 1。XTAL 16MHz修剪值:320·DMA长度:1FC0
顺序是这样的,设备将从OTP启动它将从OTP加载自定义引导加载程序,设备将运行引导加载程序并开始检查您的自定义端口,一旦设备发现一些东西,它将开始从UART复制fw到Sysram,然后当设备成功完成下载顺序时,它将分支到新下载的fw。二级引导装载器的fw会进入ret ram而不是sysram,所以我不认为OTP会将下载的fw重写到sysram中。也许下载的fw运行时,在某一点上它导致设备复位?在OTP中没有额外的配置要刻录。
“当设备成功完成下载序列时,它将分支到新下载的FW。”>>我认为这个分支没有正确地发生。我从ble模块得到CRC后发送ACK(0X06)。我希望引导加载程序代码在从主机控制器获得ACK后,必须负责分支到新下载的固件。
“也许下载的fw运行时,在某一点上它导致设备复位?”>>不,我尝试过我的应用程序代码和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(为了辅助引导加载程序运行),而辅助引导程序运行时,使用智能片段引导工具下载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 \ 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工具编程其他样本项目。我遵循了阿尔卑斯开发工具包应用程序说明中解释的在调试模式下运行的步骤。
我如何让它在发布模式下工作?
嗨Vivek,
在调试模式和发布模式下运行代码到底是什么意思?辅助引导加载程序禁用了CFG_DEVELOPMENT_DEBUG定义,在我这边的RAM中运行项目总是输出一个0x02字节用于从外部UART引导。我不熟悉ALPS的文件。
谢谢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-semiconductor.com/program-da14580-otp-memory用户手册“UM-B-083”。但是我得到一个错误消息“附加错误信息在JTAG地址0x81FEC (MSB第一):FF FF FF FE”和破坏OTP写2字节之前失败。
请找到附加的图像。
嗨Vivek,
如前所述在我之前的帖子我怀疑的原因无法下载和运行使用智能片段直接从sysram secondary_bootloader是聪明的自我片段,因为我能够下载。斌使用耐火指挥官和下载并运行二进制。所以,不,我不认为会有这个问题,如果你烧伤在OTP的辅助引导程序,我也测试了这个使用flash (bunred的辅助引导加载程序在flash)和二进制运行它应该。
关于OTP的问题。这很可能是由于OTP编程供应造成的问题。请检查一下。
谢谢mt_dialog.
嗨mt_dialog,
感谢您的建议。我已成功将程序刻录为OTP(问题与OTP Supply 6.8)。二级引导加载程序现在正常工作。我能够看到0x02,我能够使用Smart Scippet工具加载到Sysram的应用程序。
但是每当我加载应用程序固件通过我的主机控制器,它是不工作的。我在发送报头(SOH和长度)时得到正确的ACK,我在固件包的末尾得到CRC。由于CRC正在匹配,我正在向BLE模块发送ACK。但在那之后,我不断地得到“0x02”。
似乎BLE模块正在重新启动,并且来自OTP的数据覆盖了我的应用程序代码。
我必须在OTP标题中设置一些东西来避免这种情况吗?或者在辅助引导加载程序固件中是否错过了任何东西?
笔记:-
根据ALP参考手册,我已经在OTP标题中进行了以下更改。
应用Flag1:是·应用程序标志2:是·校准标志:位[4] = 1。XTAL 16MHz修剪值:320·DMA长度:1FC0
嗨Vivek,
顺序是这样的,设备将从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 \ eporter)。我已发送固件包含在上面提到的项目中的“prox_reporter_ext.h”文件中。在这两种情况下都失败了。它要么是重置或程序跳到一些错误的地址,一旦程序计数器达到其最大值,就会从重置地址开始。
“在OTP中没有额外的配置刻录。”
>>您能否验证OTP标题的更改吗?(应用程序标志1:是·应用程序标志2:是·校准标志:位[4] = 1. XTAL 16MHz修剪值:320·DMA长度:1FC0)
嗨Vivek,
您是否进行了测试,以检查这是否在所有情况下都发生,而不仅仅是在将引导加载程序烧录到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 \ eporter \ src”的示例代码spi_booter.c.并将其转换为UART接口。在转换时,我犯了一个错误,导致读错的地址。