我想在NoInit部分中存储键信息,以便在深度睡眠中重置时,我的债券信息不会丢失。
嗨cgha,
因为你使用的是DA14580,我假设是SDK5.04, SDK的一些变化应该是不赢的,以便在重置期间保留初始化数据。DA14585/6和我们最新的SDK6(最新版本6.0.10),有存储初始化数据的能力。你有没有想过搬进DA14585/6?有一个软件示例演示了这种功能。
SW示例:DA14585 / 586检测重置源
谢谢,PM_DIALOG.
你能告诉我我应该在重置后存储和获取值的更改。在我的想法中,我应该更改分散文件,任何其他我应该在SDK 5.0.4中修改的任何其他地方,以便在重置后保留值?
我在正常模式下使用延迟睡眠,当睡眠命令在ble上收到时,DA14580将陷入深沉的睡眠状态,另一个MCU将为DA14580提供RESET信号,在重启后,我需要保留键信息以重新连接到粘合的iOS设备。
我注意到我要存储的数据位于在分散文件中标记为uninit的区域,例如,地图文件显示我的数据开始地址为0x00082448,数据长度为476字节,并分散文件列出此区域作为uninit“zi_ret20 0x00080768 uninit 0x22b8”,但似乎我的数据仍然丢失,即使当我设置DA14580以在重置之前延长睡眠时,也仍然丢失(因为我注意到该区域在Sysram区域中)。
请检查SystemInit()函数,并找到setBits16(PMU_CTRL_REG,RETENT_MODE,0xF);因此,由于您已经看到了归零器,因此已经看到了归零器的归零器,因此在沉睡的沉睡中升起时应该完成的东西,所以归零ram的归零器是应该完成的。除了用户数据,额外的BLE信息(BLE堆,堆栈等)。
重置后,归零功能将再次运行,并将消除保留存储区域中的任何数据。为了避免您可以做的是要知道您的“数据”驻留在保留存储区域和初始化期间,您应该避免将它们归零。没有参考设计或示例,演示了,我所做的是以下内容:
在scatterfile中,为深度睡眠定义了保留内存区域,分配一个空间来保存不应该初始化的数据。
将从新的部分中使用的部分回序,从而从#define retram_len中删除您将使用的字节量并添加新部分的大小(新的Retram_len = Retram_len - sz_aft_rst_data):
§LR_Retention_ram00x00080768(Retram_len + Exchange_memory_size + sz_aft_rst_data){
在从0x00080768开始的lr_retention_ram0中声明一个执行区域。新的执行区域将从0x00080768开始,并且将具有您要求的范围(例如,例如,您想要的范围是SZ_AFT_RST_DATA 80字节)。所以散射文件会改变为:
§ret_reset01 0x00080768 uninit sz_aft_rst_data {.any(Unitialized_data_test)} < - 标记新区域。
在这样做之后,zi_ret00将从地址0x00080768 + sz_aft_rst_data开始,而不是0x00080768。
所以现在您知道将使用Unitialized_Data_Test标记的数据将从地址0x00080768驻留到地址0x00080768 + sz_aft_rst_data。由于您知道您可以转到SystemInit()函数并指示功能不归零0x00080768和0x00080768 + sz_aft_rst_data之间的内存。
//填充0x80000 - 0x83000与零unsigned int * p_retmem =(无符号int *)0x80000;for(i = 0xbff; i> = 0; i--){if((p_retmem>(unsigned int *)0x80768)&&(p_retmem <(unsigned int *)(0x80768 + 80)))*(易于unsigned *)p_retmem ++;else *(volatile unsigned *)p_retmem ++ = 0;}
嗨cgha,
因为你使用的是DA14580,我假设是SDK5.04, SDK的一些变化应该是不赢的,以便在重置期间保留初始化数据。DA14585/6和我们最新的SDK6(最新版本6.0.10),有存储初始化数据的能力。你有没有想过搬进DA14585/6?有一个软件示例演示了这种功能。
SW示例:DA14585 / 586检测重置源
谢谢,PM_DIALOG.
你能告诉我我应该在重置后存储和获取值的更改。在我的想法中,我应该更改分散文件,任何其他我应该在SDK 5.0.4中修改的任何其他地方,以便在重置后保留值?
我在正常模式下使用延迟睡眠,当睡眠命令在ble上收到时,DA14580将陷入深沉的睡眠状态,另一个MCU将为DA14580提供RESET信号,在重启后,我需要保留键信息以重新连接到粘合的iOS设备。
我注意到我要存储的数据位于在分散文件中标记为uninit的区域,例如,地图文件显示我的数据开始地址为0x00082448,数据长度为476字节,并分散文件列出此区域作为uninit“zi_ret20 0x00080768 uninit 0x22b8”,但似乎我的数据仍然丢失,即使当我设置DA14580以在重置之前延长睡眠时,也仍然丢失(因为我注意到该区域在Sysram区域中)。
嗨cgha,
请检查SystemInit()函数,并找到setBits16(PMU_CTRL_REG,RETENT_MODE,0xF);因此,由于您已经看到了归零器,因此已经看到了归零器的归零器,因此在沉睡的沉睡中升起时应该完成的东西,所以归零ram的归零器是应该完成的。除了用户数据,额外的BLE信息(BLE堆,堆栈等)。
重置后,归零功能将再次运行,并将消除保留存储区域中的任何数据。为了避免您可以做的是要知道您的“数据”驻留在保留存储区域和初始化期间,您应该避免将它们归零。没有参考设计或示例,演示了,我所做的是以下内容:
在scatterfile中,为深度睡眠定义了保留内存区域,分配一个空间来保存不应该初始化的数据。
将从新的部分中使用的部分回序,从而从#define retram_len中删除您将使用的字节量并添加新部分的大小(新的Retram_len = Retram_len - sz_aft_rst_data):
在从0x00080768开始的lr_retention_ram0中声明一个执行区域。新的执行区域将从0x00080768开始,并且将具有您要求的范围(例如,例如,您想要的范围是SZ_AFT_RST_DATA 80字节)。所以散射文件会改变为:
在这样做之后,zi_ret00将从地址0x00080768 + sz_aft_rst_data开始,而不是0x00080768。
所以现在您知道将使用Unitialized_Data_Test标记的数据将从地址0x00080768驻留到地址0x00080768 + sz_aft_rst_data。由于您知道您可以转到SystemInit()函数并指示功能不归零0x00080768和0x00080768 + sz_aft_rst_data之间的内存。
谢谢,PM_DIALOG.