我在SDK中发现了一个bug。当我把二级引导加载程序放入外部Flash时,当芯片从休眠中唤醒时。它将卡住在“system_DA14531.c”重新应用BANDGAP regs。
if (GetBits16(hibernation_reg, HIBERNATION_ENABLE) == 1) & (GetBits16(SYS_CTRL_REG, REMAP_ADR0) > 1)){//应用BANDGAP_REG值SetWord16(BANDGAP_REG, booter_val.bandgap_reg);// SetWord16(CLK_RC32M_REG, booter_val.clk_rc32m_reg);//应用CLK_RC32K_REG值SetWord16(CLK_RC32K_REG, booter_val.clk_rc32k_reg);//应用调试器配置SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, booter_val.dbg_cfg);}
当我们从ExtFlash中存储的二级botloader中唤醒时,无论我们在休眠之前设置了什么,REMAP_ADR0在唤醒后总是> 1。它会重新应用这些规则。
但是在引导加载程序中,散射文件没有定义“otp_cs_booter”节的地址。它将导致对这些规则应用不正确的值。它会导致芯片死亡!
LR_1 0x07FC0000 0x00008000 {;load_region ER_1 +0 0x00002000 {;加载地址=执行地址*。o (RESET, +First) *(InRoot$$Sections) startup_DA14531。o system_DA14531。o}ER_2 0x07FC8000 0x3000 { ; push it to the end of SysRAM .ANY (+RO) .ANY (+RW +ZI) .ANY (STACK) } ; *************************************************************************** ; Above the address 0x07FCB000 (0x07FC8000 + 0x3000) the RAM shall not be ; used by the secondary bootloader and shall remain uninitialized. The buffer ; used by the DA14531 TRNG software mechanism must use only uninitialized ; RAM space in order to generate random seeds. ; ; The maximum size of the uninitialized RAM data, which can be fed to the ; TRNG buffer, is 0xA00 since the DA14531 flash programmer (UART version) ; leaves unattached the memory space from 0x07FCB000 to 0x7FCBA00. ; *************************************************************************** }
这是引导加载程序使用的分散文件。其中没有“otp_cs_booter”部分。
现在,让我们看看SDK关于“otp_cs_booter”一节的Scatter文件。
LR_IROM1 0x07fc0000 0xc0 {;ER_IROM1 0x07fc0000 0xc0 {;加载地址=执行地址*。o (RESET, +FIRST) .ANY (otp_cs_booter)}}
它集.ANY (otp_cs_booter)。所以从休眠中唤醒不会导致应用程序卡住,它只会导致二级引导加载程序卡住!
请告诉我,当我将引导程序刻录到OTP时,bug会消失吗?
或者,我能用这个方法解出来吗?
ER_1 +0 0x00002000 {;加载地址=执行地址*。在这里添加section *(InRoot$$Sections) startup_DA14531。o system_DA14531。o}
添加节到引导加载程序分散.ANY (otp_cs_booter)
设备:
你好,
感谢您的反馈。请问您使用的SDK版本是什么?
谢谢,PM_Dialog
我使用SDK版本:6.0.14.1114与hotfix_001
你好,
谢谢你的意见。让我评估他们,我很快就会通知你。
Thansk, PM_Dialog
这是SDK中确认的bug吗?我还面临着休眠和Flash中二级引导加载程序的问题
为什么Dialog_PM还没有注意到它?
大家好!
很抱歉耽搁了。我们正在努力,本周末就会回来。
谢谢,PM_Dialog
大家好!
请查看更新的SW示例,演示如何配置DA14531在休眠模式。以下是下载链接:DA14531配置休眠和状态感知休眠模式.在运行这个示例之前,我建议首先检查README文件。
谢谢,PM_Dialog