ad_nvms_write /读取自定义数据的适当偏移是什么?

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
托马斯Donhauser
离线
最后看到:8个月1天前
加入:2019-10-20 10:45
ad_nvms_write /读取自定义数据的适当偏移是什么?

你好!

我需要在分区中存储一些自定义数据(大约1500字节)NVMS_GENERIC_PART。我的自定义配置是

#定义SUOTA_VERSION SUOTA_VERSION_1_3 # define SUOTA_PSM 0 x81 # define USE_PARTITION_TABLE_1MB_WITH_SUOTA # define dg_configSUOTA_SUPPORT (1) # define dg_configFLASH_ADAPTER 1 # define dg_configNVMS_ADAPTER 1 # define dg_configNVMS_VES 1 # define CONFIG_BLE_STORAGE # define defaultBLE_MAX_BONDED (8) # define defaultBLE_MAX_CONNECTIONS (1)

据我对文档的理解,BLE还在NVMS_GENERIC_PART中存储最多8个设备的自定义键。因此,我需要知道ad_nvms_write和ad_nvms_read存储自定义数据的正确偏移量是多少,以避免与绑定设备的BLE生成的数据发生冲突。

在示例中,WSP_WEIGHTSCale BLE使用#define config_wsp_storage_offset(0x00001000)的偏移量。但我现在已经Clue如何计算这个值,或者它是什么,但没有什么是好的猜测。

所以我的第一个问题:如何计算偏移来存储我的自定义数据?

PS:我已经用cli_programmer直接读取了内存,不理解偏移量如何与写入数据的真实地址相关联。这可能是因为dg_configNVMS_VES 1。但我想知道原因,但在医生那里找不到。即使是新的写入数据也会被放在与前一个不同的位置。它有某种管理启用/禁用64字节块。

我的第二个问题是:如何在v模式下组织和管理数据?

谢谢你!
托马斯。

设备:
PM_Dialog
离线
最后看到:1天20小时前
工作人员
加入:2018-02-08 11:03
你好托马斯Donhauser。

你好托马斯Donhauser。

该机制由NVMS VES自动处理。用户不知道SDK是如何提供这种机制的。

一般情况下,Generic分区(NVMS_GENERIC_PART)用于:

  • 存储绑定数据。例如8台设备的绑定信息
  • 通过BLE存储机制保存信息。

在NVMS_GENERIC_PART分区内搜索并查找存储的/在哪里,因此您无法使用它来存储自定义数据。我不会建议这种方法。

根据您的描述,我建议将定制数据存储到另一个分区中。例如,日志分区(NVMS_LOG_PART)可以用于此范围。

下列的DA1469x教程Flash适配器(非易失性内存存储)教程直接使用NVMS_LOG_PART并存储自定义数据。

谢谢,PM_Dialog

托马斯Donhauser
离线
最后看到:8个月1天前
加入:2019-10-20 10:45
你好PM_Dialog,

你好PM_Dialog,

谢谢你的回答,但是没有帮助!因为我必须存储数据,所以我必须理解这个机制是如何工作的。因此,我需要一个可靠的方法来做它,它是完全不能接受的告诉我“用户不知道”!你知道我不是用户,因为我是开发者吗?

您正在提供具有SDK的开发人员。这就是为什么你必须能够解释每个细节。所以请不要充实你是微软的。谢谢你!

首先,我需要医生来解释这是如何运作的,

第二:正如我所提到的那样,WSP_WeightScale正在使用#define config_wsp_storage_offset(0x00001000)的偏移量存储此分区中的数据。所以请解释我如何计算这个偏移量。

我有一个1MB的闪存,NVMS_GENERIC_PART的大小是126.976字节,你要告诉我所有这些都用于8对设备?

我有一个客户为我开发的东西买单,我不能解释所有的记忆有什么用,或者那里发生了什么。如果这是真的,那么da1468x的整个SDK就是垃圾!所以请别告诉我我不知道的事!因为这就是我问你的原因!

如果得出结论认为最好将其存储在NVMS_LOG_PART中,那么我需要确保没有其他机制将数据存储在那里。如果使用SUOTA更新应用程序会发生什么?我必须考虑什么来保护我的客户数据?

如果你能按照我问你的方式回答我的问题,我将非常感激!

谢谢你!

ps.:你提到的链接是ub the1469x。正如您所看到的,我正在研究DA1468x。

PM_Dialog
离线
最后看到:1天20小时前
工作人员
加入:2018-02-08 11:03
你好托马斯•Donhauser

你好托马斯•Donhauser

抱歉错误的链接,我再次在DA1468x产品系列中重新安装。

http://lpccs-docs.dialog-semiconductor.com/da1468x_adapters_concept/index.html

如前所述,Generic分区(NVMS_GENERIC_PART)用于:

  • 存储绑定数据。
  • 通过BLE存储机制保存信息。

此外,Generic分区被标记为VES。请参阅2.4.2节。有关ve的更多信息,请参阅上述文档。VES将数据写入闪存内的随机位置。

我会在内部询问CONFIG_WSP_STORAGE_OFFSET如何计算。

但是,由于客户想要存储自定义数据,我们建议使用以前所建议的另一个分区(例如日志或自定义分区)。

如果您对SUOTA机制感兴趣,请查看以下文档中的图44:

//www.wsdof.com/sites/default/files/um-b-056-da1468x_software_developers_guide_6v0.pdf

根据这份文件,

  • fw_update,fw_exec,image_header在套筒期间修改
  • 通用,param,platform_params,日志在Suota期间访问
  • Partition_Table,Product_Header,FIMRWARE在Suota期间保持完整

日志分区与Suota无关,因此您可以存储自定义数据。Suota机制将仅修改FW相关分区。

关于绑定设备的持久存储,请阅读sdk\interfaces\ble\readme。md文档。

谢谢,PM_Dialog