Part Number:LP-CC2652RBOther Parts Discussed in Thread:SYSCONFIG
Hi Ti,
今天我们在 OAD 过程中遇到 FLASH 不足的问题,在通过增加 persistent_app 的 sysconfig 的 NVS 的 CONFIG_NVSINTERNAL1 空间,问题可以解决。
但是对其中的细节还是很不清晰,所以特来求助:
在 simplelink_cc13x2_26x2_sdk_4_30_00_54 中,persistent_app 的 sysconfig 关于 NVS 配置如下:
在 simplelink_cc13x2_26x2_sdk_5_10_00_48 中,persistent_app 的 sysconfig 关于 NVS 配置如下:
通过以上两个 SDK 配置的对比,我们想请教一下:
1. CONFIG_NVSINTERNAL1 和 CONFIG_NVSINTERNAL 两个 NVS 区域的功能是什么?
2. CONFIG_NVSINTERNAL1 的具体范围是多少?这个范围是否跟 SDK 版本有关?如果范围和SDK版本有关系,则这两个SDK版本的范围分别是多少呢?
我还查看了一下不同 SDK 的 simple_peripheral_oad_onchip 工程中 NVS 的配置:
在 simplelink_cc13x2_26x2_sdk_4_30_00_54 中 simple_peripheral_oad_onchip 的 sysconfig 配置如下:
在 simplelink_cc13x2_26x2_sdk_5_10_00_48 中 simple_peripheral_oad_onchip 的 sysconfig 配置如下:
通过对比,发现:在相同版本的 SDK 中, persistent_app 和 simple_peripheral_oad_onchip 工程的 NVS 配置是完全一致的。
由此,我们想请教一下:
3. persistent_app 和 simple_peripheral_oad_onchip 工程的 NVS 配置是否一定要完全匹配呢?
4. 在这两个工程中的两个 NVS 区域功能是一样的吗?
最后,还想问一下:
5. Region Type 中的 Generated 和 Pointer 区别是什么,什么情况下会用到呢?
(可参考问题 LP-CC2652RB: 关于在支持 OAD 功能的 app 中使用内部 flash 问题 – 蓝牙论坛 – Bluetooth – E2E 设计支持 (ti.com) )
由于是在开发中遇到了这个问题,所以我们需要尽可能地了解更多的细节,多谢你们的帮助!
Kevin Qiu1:
我会仔细研究一下,预计明天这个时候回复你
,
junde deng:
多谢 kevin
,
Kevin Qiu1:
CONFIG_NVSINTERNAL是persistent所占用的空间,CONFIG_NVSINTERNAL1是从flash 起始地址到persistent之前的区域
junde deng 说:2. CONFIG_NVSINTERNAL1 的具体范围是多少?这个范围是否跟 SDK 版本有关?如果范围和SDK版本有关系,则这两个SDK版本的范围分别是多少呢?
是与SDK版本有关,版本变了后部分程序所占的空间会大一些
范围可以在flash layout中查看内存布局https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/ble5stack/ble_user_guide/html/oad-secure/flash-layout-on-chip-stack-library.html
junde deng 说:3. persistent_app 和 simple_peripheral_oad_onchip 工程的 NVS 配置是否一定要完全匹配呢?
不能出现覆盖
junde deng 说:4. 在这两个工程中的两个 NVS 区域功能是一样的吗?
一样的
junde deng 说:Region Type 中的 Generated 和 Pointer 区别是什么,什么情况下会用到呢?
Generated – An internal flash region is automatically generated.
Pointer – Provide a pointer to the memory location of a predefined internal flash region.更多OAD文档查看上面链接中的OAD部分,它涵盖了所有OAD信息
,
junde deng:
Kevin Qiu1 说:CONFIG_NVSINTERNAL是persistent所占用的空间,CONFIG_NVSINTERNAL1是从flash 起始地址到persistent之前的区域
在 simplelink_cc13x2_26x2_sdk_4_30_00_54 中的 persistent_app 的烧录起始地址是 0x36000, 而 CONFIG_NVSINTERNAL 定义的空间是 0x32000-0x35FFF,刚好两个衔接上,但是并不重叠,如果 CONFIG_NVSINTERNAL 是 persistent 占用的空间,那这个 persistent 就占用了两个空间???
还有:如果 CONFIG_NVSINTERNAL1 是从flash 起始地址到 persistent (CONFIG_NVSINTERNAL?) 之前的区域,那就是说我可以将 simplelink_cc13x2_26x2_sdk_4_30_00_54 的 CONFIG_NVSINTERNAL1 空间直接改成 0x0 ~ 0x31FFF 而没有增加与 SDK 已定义的其他空间的冲突对吗?
,
Kevin Qiu1:
junde deng 说:如果 CONFIG_NVSINTERNAL 是 persistent 占用的空间,那这个 persistent 就占用了两个空间???
占用两个空间是什么意思,persistent是从0x32000开始的
junde deng 说:simplelink_cc13x2_26x2_sdk_4_30_00_54 的 CONFIG_NVSINTERNAL1 空间直接改成 0x0 ~ 0x31FFF 而没有增加与 SDK 已定义的其他空间的冲突对吗?
理论上是可以的,但这没经过验证,我建议你使用一个版本进行开发,新的版本会对之前的bug进行修复,SDK5.20会是
更好的选择