自定义数据的ad_nvms_write / read的适当偏移量是多少

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
托马斯Donhauser
离线
最后看到:5个月2周之前
加入:2019-10-20 10:45
自定义数据的ad_nvms_write / read的适当偏移量是多少

你好!

我需要在分区中存储一些自定义数据(大约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)的偏移量。但是我现在知道了这个值是如何计算的或者它只是一个好的猜测。

那么我的第一个问题是:如何计算偏移量来存储自定义数据?

PS:我已经阅读与cli_programmer内存直接,不明白偏移如何与写入的数据的真实地址相关。这可能是因为dg_configNVMS_VES 1。但我想知道原因,但在文件里找不到。即使是新的写入数据也会被放在与前一个数据不同的位置。它似乎有一种管理方式可以启用/禁用64字节块。

那么我的第二个问题是:在vs模式中数据是如何组织和管理的?

谢谢你!
托马斯。

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

你好托马斯Donhauser。

该机制由NVMS虚拟机自动处理。用户不知道SDK是如何传递这种机制的。

一般来说,Generic分区(NVMS_GENERIC_PART)用于:

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

在NVMS_GENERIC_PART分区中搜索并找到存储的内容/位置是极其困难的,因此您不能使用它来存储自定义数据。我不建议采用这种方法。

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

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

谢谢,PM_Dialog

托马斯Donhauser
离线
最后看到:5个月2周之前
加入: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更新应用会发生什么?我必须考虑什么以保护我的客户资料?

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

谢谢你!

附注:您提到的链接是für The da1469x。如你所见,我正在研究da1468x。

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

你好托马斯•Donhauser

抱歉链接错误,我再次附上DA1468x产品系列的教程。

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

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

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

此外,Generic分区被标记为VES。请参阅第2.4.2节。关于VES的更多信息,请参阅上述文件中的VES。VES将数据写入flash内的随机位置。

我将在内部询问CONFIG_WSP_STORAGE_OFFSET是如何计算的。

但是,由于您的客户希望存储自定义数据,我们建议使用前面建议的另一个分区(例如Log或自定义分区)。

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

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

根据这份文件,

  • 在SUOTA过程中,FW_UPDATE、FW_EXEC、IMAGE_HEADER被修改
  • SUOTA期间访问GENERIC、PARAM、PLATFORM_PARAMS、LOG
  • PARTITION_TABLE, PRODUCT_HEADER,固件在SUOTA期间保持不变

LOG分区与SUOTA无关,因此可以存储自定义数据。SUOTA机制只会修改FW相关的分区。

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

谢谢,PM_Dialog