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,大小);
,但没有成功。
非常感谢您提前帮助。
罗尔夫
设备:
嗨Uniben,
嗯,它并不那么简单,你不会能够实际擦除设备的通用分区(闪存上读取0xFF),因为您正在使用CONFIG_BLE_STORAGE(其实际上是启用设备存储模块的标志能够将数据存储在闪存中)。原因是,因为存储是使用VES方案的,以便存储数据,这意味着它实际上并不从闪存中擦除数据,而是将它们标记为无效。如果调试上面已连接的代码,则会看到ad_nvms_erase_region()对应于VES模块的擦除功能,返回FALSE(而这是您应该在使用时实际擦除的原因)。如果您想要这种功能,您应该使用自定义方式使用直接访问NVMS部分来存储绑定数据,并以这种方式正确地擦除绑定数据的扇区。
谢谢mt_dialog.
嗨mt_dialog,
我可以使用ad_flash_erase_region()来擦除nvms_generic_part。
这没有问题。我之后重新启动系统。
谢谢Uneben.
嗨Uniben,
是的,您可以直接调用AD_FLASH_ERASE_REGION()函数,以便直接擦除闪存的特定扇区(即使它被称为VES并绕过NVMS适配器),虽然我无法推荐这种实践违反结构和使用SDK的正确方式。无论如何,如果这适用于您的应用程序,并且在设备重新启动之后(因此ves重新运行的初始化),我就不会看到任何问题。
谢谢mt_dialog.