SDK: 1.0.10-1072
你好,
我需要一个功能重置所有nvm数据到工厂交付状态。
我如何重置(删除)所有绑定设备数据从通用分区不使用ble_gap_unpair()为每个单一设备?
我已经试过了:部分= ad_nvms_open (NVMS_GENERIC_PART);大小= ad_nvms_get_size(部分);ad_nvms_erase_region(部分,0,大小);
,但没有成功。
提前非常感谢你的帮助。罗尔夫
嗨uniben,
也不是那么简单,你不能够消除设备的通用分区(0 xff的flash)因为你是使用CONFIG_BLE_STORAGE(实际上是国旗,使设备的存储模块为了能够存储flash中的数据)。这样做的原因是,因为存储使用VES方案来存储数据,这意味着它实际上并没有擦除闪存中的数据而是将它们标记为无效。如果您调试上面附加的代码,您将看到ad_nvms_erase_region()对应于VES模块的erase函数,并返回false(这就是它应该做的,因为在使用VES时实际上不需要擦除)。如果您想要这种功能,您应该使用一种自定义的方式来存储绑定数据,直接访问NVMS部分,这样您就可以正确地擦除存储绑定数据的扇区。
由于MT_dialog
嗨MT_dialog,
我可以使用ad_flash_erase_region()来擦除NVMS_GENERIC_PART。
这没有问题。然后我重新启动系统。
由于uniben
是的你可以直接调用函数ad_flash_erase_region()为了消除直接的特定部门flash(尽管其声明为类型和绕过nvms适配器),虽然我不能推荐这种做法,因为它违反了使用SDK的结构和适当的方式。无论如何,如果这对你的应用程序和之后的设备重新启动(所以VES的初始化重新运行),我不认为这样做有任何问题。
嗨uniben,
也不是那么简单,你不能够消除设备的通用分区(0 xff的flash)因为你是使用CONFIG_BLE_STORAGE(实际上是国旗,使设备的存储模块为了能够存储flash中的数据)。这样做的原因是,因为存储使用VES方案来存储数据,这意味着它实际上并没有擦除闪存中的数据而是将它们标记为无效。如果您调试上面附加的代码,您将看到ad_nvms_erase_region()对应于VES模块的erase函数,并返回false(这就是它应该做的,因为在使用VES时实际上不需要擦除)。如果您想要这种功能,您应该使用一种自定义的方式来存储绑定数据,直接访问NVMS部分,这样您就可以正确地擦除存储绑定数据的扇区。
由于MT_dialog
嗨MT_dialog,
我可以使用ad_flash_erase_region()来擦除NVMS_GENERIC_PART。
这没有问题。然后我重新启动系统。
由于uniben
嗨uniben,
是的你可以直接调用函数ad_flash_erase_region()为了消除直接的特定部门flash(尽管其声明为类型和绕过nvms适配器),虽然我不能推荐这种做法,因为它违反了使用SDK的结构和适当的方式。无论如何,如果这对你的应用程序和之后的设备重新启动(所以VES的初始化重新运行),我不认为这样做有任何问题。
由于MT_dialog