SDK:1.0.10-1072
你好,
我需要一个函数将所有NVM数据重置为工厂已交付的状态。
如何在不使用每个单个设备的ble_gap_unpair()的情况下重置(删除)从通用分区中重置所有键合设备数据?
我已经尝试了:
part = ad_nvms_open(nvms_generic_part);
size = ad_nvms_get_size(part);
ad_nvms_erase_region(零件,0,size);
,但没有成功。
非常感谢您提前的帮助。
罗尔夫
设备:
嗨,Uniben,
好吧,它并不那么简单,您将无法实际删除设备的通用分区(在闪存上读取0xff),因为您正在使用config_ble_storage(实际上是启用设备存储模块以便为了使设备的标志能够将数据存储在闪存中)。这样做的原因是,因为存储使用VES方案以存储数据,这意味着它实际上并未从闪存中删除数据,而是将其标记为无效。如果您在上方附加的代码调试,您会发现AD_NVMS_ERASE_RIGION()对应于VES模块的擦除函数,并且返回false(这是因为您在使用VES时实际上没有擦除)。如果您想要这种功能功能,则应使用一种自定义方法来使用直接访问NVMS零件来存储键合数据,这样您就可以正确删除容纳键合数据的扇区。
谢谢mt_dialog
嗨mt_dialog,
我可以使用ad_flash_erase_region()来擦除nvms_generic_part。
这没有问题。之后,我重新启动了系统。
谢谢Uniben
嗨,Uniben,
是的,您可以直接调用ad_flash_erase_region()函数,以直接删除闪光灯的特定扇区(即使它声明为VES并绕过NVMS适配器),尽管我无法推荐这种做法违反了使用SDK的结构和正确的方法。无论如何,如果这适用于您的应用程序,此后重新启动设备(因此,VES重新运行的初始化),我认为这样做没有任何问题。
谢谢mt_dialog