This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652R:BLE5-堆栈中使用的 NVS

Guru**** 2455360 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1069221/cc2652r-nvs-used-in-the-ble5-stack

部件号:CC2652R
“Thread:sysconfigtest”中讨论的其他部件

大家好,团队

以下是客户提出的一些问题可能需要您的帮助:

示例项目是 C:\ti\simplelink_cc13x2_26x2_SDK_5_20_00_52\examples\RTOS\CC26X2R1_LAUNCHXL\bl5stack\simple_PE Ripheral_加 载_offchip。 使用 clang 编译器,而 IDE 是 CCS。

simple 外围设备加载芯片。syscfg -> TI 驱动程序-> NVS 有两个 NVS 区域:CONFIG_NVSIONNAL 和 CONFIG_NVSIONNAL。 其中,配置类型为 NVSINTERNAL1的区域类型选择指针,基本地址为0x0,区域大小为0x34000,如下图所示:

问题1: simple-peripheral 项目中没有 config_NVSIBNAL1区域,只有 CONFIG_NVSIONNAL 区域。

CONFIG 在 OAD 工程中的作用是什么? 基本地址为0x0,区域大小为0x34000,这是整个应用程序的固件区域。

为什么要调用 NVS_READ 和 NVS_WRITE,剂量甚至需要修改固件自身的代码? 生成 CONFIG_NVSIONNAL 的区域类型,基本地址为0x34000,区域大小为0x4000,如下图所示:

编译的内存分配如下图所示,整个闪存大小为136T,由 CONFIG_NVSIONNAL 定义的区域被分配给闪存中的.TI.Bound.flashBuf0部分。 大小为16384 (即0x4000):

为 CONFIG_NVSIONNAL 选择要指针的区域类型,基本地址为0x34000,区域大小为0x4000,如下图所示:

编译的内存分配如下图所示,当生成区域类型时,整个闪存大小为120K (16384 (0x4000))。 无法找到 CONFIG_NVSIONNAL:定义的区域分配

问题2: 在 sysconfig 中提示“区域类型”字段时,将生成—自动生成闪存内部区域;指针—将区域分配给“区域基础”指定的地址。

BLE 的配对绑定信息是否保存在 CONFIG_NVSIINNAL 定义的区域中?

是否由调用 osal_SNV_read 和 osal_SNV_write 操作的 CONFIG_NVSIONNAL 定义的区域? 为什么最终固件中的指针配置方式不存在此区域? 但是测试 BLE 配对,绑定和 osal_SNV_READ/WRITE 是正常的。

请帮您检查此案例? 谢谢。

此致,

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Cherry,

    您似乎在这里有几个问题,因此我将尝试逐一回答:

    [引用 userid="496057" url="~ë/support/wireless-connection/other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-usede-ine-ble5-stack"] config_NVSIINTERNAL1在 OAD 工程中的作用是什么?[/引用]

    这是为了为 OAD 图像的 NVS 创造空间。

    [引用 userid="496057" url="~ë/support/wireless-connectivity / other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-use-used-IN-e-ble5-stack"]

    BLE 的配对绑定信息是否保存在 CONFIG_NVSIINNAL 定义的区域中?

    [/引用]

    否,但绑定信息存储在 NV 内存中。

    [引用 userid="496057" url="~ë/support/wireless-connection/other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-usede-ine-ble5-stack"]由 config_NVSINAL 定义的区域是否调用 osal_SNV_write_write_v_example_operations[和引号]

    这对我来说毫无意义,NVS 用于存储数据,而不是指令,因此我认为您不太可能在那里存储指令。

    [引用 userid="496057" url="~/support/wireless-connectivity / other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-usede-IN-ble5-stack"]为什么在最终固件中指针配置的方式中不存在此区域?]

    我不知道为什么你发布的图表中没有显示它,但我在内部询问,一位专家会发表评论。

    最佳

    不会

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nate 您好,

    感谢您的支持!

    [引用 userid="358670" url="~ë/support/wireless-connectivity / other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-usede-In-the-bstack/3957004#3957004"]否,但绑定信息存储在内存[引用数据]中。

    按照将 OSAL SNV 放入 ble5-Stack 用户向导的说明,此 CONFIG_NVSINAL 定义区域是 NV 内存。 使用 NVS_READ 和 NVS_WRITE 进行读写,NVS_WRITE 是 osal_SNV_READ 和 osal_SNV_WRITE 函数的上层。

    [引用 userid="358670" url="~ë/support/wireless-connectivity / other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS-usede-ine-ble5-stack/3957004#3957004"]这对我来说毫无意义,我认为 NVS-存储指令的可能性不大,我认为 NVS[我不可能存储数据]。

    也许存在误解。 让我澄清一下:客户并不是要存储数据,他们想知道 config_NVSIONNAL 定义的区域是否是调用 osal_SNV_read 和 osal_SNV_write 操作的位置。

    [引用 userid="358670" url="~ë/support/wireless-connection/other-wireless-group/other-wireless/f/other-wireless-technologies -forum/1069221/cc2652r-NVS 即用即用即用即用型5-stack/3957004#3957004"]我不知道为什么没有在图表中,但我会在内部询问专家/您的意见。]

    再次感谢,期待您的回应。

    此致,

    樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿 Cherry,

    查看芯片 OAD 和持久应用程序项目中定义的 NVS 区域以及.cmd 链接器文件,我能够验证 CONFIG_NVSIONNAL (即区域0x00034000-0x00038000)是 NV 的最后2页。  您是正确的,例如,当应用程序使用 osal_SNV_write()时,它将写入该空间。 快速测试是执行快速写入(可能使用客户 NV 项目)并在 SmartRF 闪存编程器中读回此信息以查找写入数据及其写入位置。

    当从“生成”更改为“指针”时,您会发现 sysconfig 不再使用静态定义的缓冲区(即)保留 NVS 空间 FlashBuf0)。 因此,您在内存分配终端中看不到特定对象。 这一变化的动机是什么? 如果修改了此选项,可能会影响应用程序,因为它无法将配对信息存储到 SNV。

    如果还有其他未回答的问题,请告诉我。