Part Number:CC2652ROther Parts Discussed in Thread:SYSCONFIG
我用到的示例工程是C:\ti\simplelink_cc13x2_26x2_sdk_5_20_00_52\examples\rtos\CC26X2R1_LAUNCHXL\ble5stack\simple_peripheral_oad_offchip。用的是CLang编译器,IDE是CCS。
打开simple_peripheral_oad_onchip.syscfg -> TI DRIVERS -> NVS,看到有两个NVS区域:CONFIG_NVSINTERNAL和CONFIG_NVSINTERNAL1。其中,CONFIG_NVSINTERNAL1的Region Type选择的是Pointer,基地址是0x0,区域大小是0x34000,如下图。
问题1:在simple_peripheral工程中没有CONFIG_NVSINTERNAL1区域,只有CONFIG_NVSINTERNAL区域,想问一下在OAD工程中CONFIG_NVSINTERNAL1的作用?基地址是0x0,区域大小是0x34000,这是整个应用程序的固件区域了,需要调用nvs_read和nvs_write做什么,难道需要修改固件自身的代码吗?
CONFIG_NVSINTERNAL的Region Type选择的是Generated,基地址是0x34000,区域大小是0x4000,如下图。
编译之后的Memory Allocation如下图所示,整个Flash大小是136K,CONFIG_NVSINTERNAL定义的区域被分配到FLASH中的.TI.bound.flashBuf0段,大小是16384(即0x4000)
将CONFIG_NVSINTERNAL的Region Type选择为Pointer,基地址是0x34000,区域大小是0x4000,如下图。
编译之后的Memory Allocation如下图所示,整个Flash大小是120K(正好Region Type为Generated时小16384(即0x4000)),未找到CONFIG_NVSINTERNAL定义的区域分配
问题2:按照sysconfig中对Region Type字段的提示说明,Generated—自动生成flash内部区域;Pointer-按照Region Base指定的地址分配区域。BLE的配对绑定信息是保存在CONFIG_NVSINTERNAL定义的区域吗?调用osal_snv_read和osal_snv_write操作的是CONFIG_NVSINTERNAL定义的区域吗,为何配置为Pointer的方式在最终的固件中没有此区域,但为何我测试BLE的配对、绑定,还有osal_snv_read/write的读写都正常?
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
wei wang:
好的,非常感谢您
,
Cherry Zhou:
wei wang said:想问一下在OAD工程中CONFIG_NVSINTERNAL1的作用?
为了给OAD image的NVS创造空间。
wei wang said:BLE的配对绑定信息是保存在CONFIG_NVSINTERNAL定义的区域吗?
不是的,绑定信息存储在 NV 存储器中。
wei wang said:调用osal_snv_read和osal_snv_write操作的是CONFIG_NVSINTERNAL定义的区域吗,
NVS 用于存储数据,而不是指令,因此不太可能在那里存储指令。
wei wang said:为何配置为Pointer的方式在最终的固件中没有此区域,
正常情况下都有,关于您的这个问题我们已经寻求其他工程师的帮助,会尽快给您解答。
,
wei wang:
wei wang 说:
BLE的配对绑定信息是保存在CONFIG_NVSINTERNAL定义的区域吗?不是的,绑定信息存储在 NV 存储器中。
按照ble5-Stack用户向导中的放置OSAL SNV的说明,这个CONFIG_NVSINTERNAL定义的区域就是NV存储器。用NVS_read和NVS_write进行读写,它的上层就是osal_snv_read和osal_snv_write函数
wei wang 说:调用osal_snv_read和osal_snv_write操作的是CONFIG_NVSINTERNAL定义的区域吗, NVS 用于存储数据,而不是指令,因此不太可能在那里存储指令。
我的意思并不是存储指令。按照ble5-Stack用户向导中的放置OSAL SNV的说明,osal_snv_read和osal_snv_write操作的区域就是CONFIG_NVSINTERNAL定义的区域,就是用于存储数据的,
,
Cherry Zhou:
您好,查看chip OAD and persistent app项目中定义的 NVS 区域以及.cmd linker files,工程师能够能够验证:CONFIG_NVSIONNAL (即区域 0x00034000-0x00038000) 是 NV 的最后 2 页。 您是正确的,例如,当应用程序使用 osal_SNV_write() 时,将写入该空间。 您可以通过以下快速测试来验证下:执行快速写入 (可能会用到您的 NV 项目) 并在 SmartRF Flash Programmer 中读回此信息以查找写入数据及其写入位置。
把"Generated" 改为"Pointer"后,您会发现 sysconfig 不再保留使用静态定义的buffer(例如FlashBuf0)的NVS space。因此您在内存分配终端中是看不到特定object的。 您进行这一更改的原因是什么? 如果修改了此选项,可能会影响应用程序,因为它不能够将配对信息存储到 SNV。
以上回答您请参考,如有遗漏的问题没有回答,请您告知我们,