我发现也许在SDK中的错误。当我把二次启动程序到外接闪光灯,当芯片唤醒从休眠状态。它会停留在“system_DA14531.c”重新申请禁带暂存器。
如果((GetBits16(HIBERN_CTRL_REG,HIBERNATION_ENABLE)== 1)&&(GetBits16(SYS_CTRL_REG,REMAP_ADR0)> 1)){//应用BANDGAP_REG值SetWord16(BANDGAP_REG,booter_val.bandgap_reg);//应用CLK_RC32M_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 {;负载区域size_region ER_1 0 0x00002000 {;加载地址=执行地址*的.o(RESET,+第一)*($$器InRoot段)startup_DA14531.o system_DA14531.o} ER_2 0x07FC8000 0x3000处{;把它推到SysRAM .ANY的端部(+ RO).ANY(+ RW + ZI).ANY(STACK)};**********************************************************;地址0x07FCB000以上(0x07FC8000 + 0x3000处)的RAM不得;使用由二次引导程序和应保持初始化。该缓冲器中;使用的DA14531 TRNG软件机制只能使用未初始化;为了RAM空间来生成随机种子。 ; ; 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”一节。
现在,突然想到看到有关“otp_cs_booter”部分SDK`s分散文件。
LR_IROM1 0x07fc0000将0xC0 {;ER_IROM1 0x07fc0000将0xC0 {;加载地址=执行地址*的.o(RESET,+ FIRST).ANY(otp_cs_booter)}}
它设置.ANY(otp_cs_booter)。因此,从休眠那倒会导致应用程序唤醒卡住了,只造成二次引导程序卡住!
请告诉我将在错误消失时,我烧的bootloader到OTP?
或者,我可以用这种方式来解决呢?
ER_1 0 0x00002000 {;加载地址=执行地址*的.o(RESET,+前).ANY(otp_cs_booter);添加部这里*($$器InRoot段)startup_DA14531.o system_DA14531.o}
栏目添加到引导程序散射.ANY(otp_cs_booter);添加此节
设备:
嗨,
谢谢你的反馈。你能请注明SDK版本,您正在使用?
谢谢,PM_DIALOG.
我真的使用SDK版本:6.0.14.1114与hotfix_001
嗨,
谢谢你的意见。让我评估他们,我很快就会通知你。
Thansk,PM_Dialog
这是一个SDK确认的错误?我也面临着与休眠问题,并有闪光灯辅助引导程序
为什么Dialog_PM没有注意到它了吗?
大家好,
为延迟道歉。我们正在就这个问题和将回到在本周末结束。
谢谢,PM_DIALOG.
大家好,
请检查更新SW示例演示了如何配置休眠模式DA14531。这是链接下载它:DA14531配置休眠和状态感知休眠模式。运行这个例子之前,我建议首先检查README文件。
谢谢,PM_DIALOG.