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.

[参考译文] LAUNCHXL-CC2650:如何在 RO&quot 中使用"RTOS;在 flash&quot 中使用"配置而不是"RTOS;启用了 CC2650 OAD 的项目的配置?

Guru**** 652440 points
Other Parts Discussed in Thread: CC2650, SYSBIOS, CC2640
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1197634/launchxl-cc2650-how-use-rtos-in-rom-configuration-instead-of-rtos-in-flash-configuration-for-cc2650-oad-enabled-project

器件型号:LAUNCHXL-CC2650
Thread 中讨论的其他器件:CC2650SYSBIOSCC2640

尊敬的 TI 支持:

使用 LaunchPad CC2650项目名称"simple_peripheral_cc2650lp_app"、生成配置-"FlashOnly" OAD_ExtFlash"项目成功编译 。

我想在此项目中启动 UART 日志打印。

因此、我启用了与"Project Zero code"中完成相同的记录代码。

但是、我遇到了内存不足问题-程序将无法装入内存错误。

为了保存内存、我尝试使用模块 xdc.useModule('ti.sysbios.rom.ROM');

但是、我会遇到错误、如所示

"默认存储器范围与现有存储器范围重叠"

<Linking>
"configPkg/linker.cmd", line 596: warning #10096-D: specified address lies outside memory map
error #10264: DEFAULT memory range overlaps existing memory range IMAGE_HEADER
error #10264: DEFAULT memory range overlaps existing memory range FLASH
error #10264: DEFAULT memory range overlaps existing memory range SRAM
"configPkg/linker.cmd", line 721: warning #10096-D: specified address lies outside memory map
error #10263: DEFAULT memory range has already been specified
error #10264: DEFAULT memory range overlaps existing memory range DEFAULT
error #10264: DEFAULT memory range overlaps existing memory range IMAGE_HEADER
error #10264: DEFAULT memory range overlaps existing memory range FLASH

error #10264: DEFAULT memory range overlaps existing memory range SRAM
>> Compilation failure
makefile:200: recipe for target 'simple_peripheral_cc2650lp_app_STACK_IN_ROM.out' failed
error #10010: errors encountered during linking; "simple_peripheral_cc2650lp_app_STACK_IN_ROM.out" not built
gmake[1]: *** [simple_peripheral_cc2650lp_app_STACK_IN_ROM.out] Error 1
gmake[1]: Target 'secondary-outputs' not remade because of errors.
gmake: *** [all] Error 2
makefile:196: recipe for target 'all' failed

**** Build Finished ****

CC2640 BLE OAD 用户指南第8.3节  

"8.3 RTOS RCFG 部分
为了节省空间、CC26xx 在其 ROM 映像中包含 TI-RTOS 内核的一部分。 这些 ROM 函数依赖于内部闪存的闪存页0内的一个被称为 RCFG 的数据结构。 RCFG 部分本质上是一个函数指针表(以及一些其他内核数据)、允许内核 ROM 函数访问内部闪存中的某些数据结构。
在 ROM 映像中构建新的 RTOS 时、必须更新 RCFG。 但是、由于 RCFG 位于 PAGE 0 (包含矢量表、因此受写保护)内、因此无法通过 OAD 更新。
这意味着所有打算通过无线发送的映像都必须使用闪存配置中的 RTOS、其中包括它们自己的 RCFG 实例。"

本节是否有任何线索可以解决我的问题?

我是否需要重新排列链接器文件中堆栈或应用程序的闪存边界?

我是否需要在 cc26xx_app_oad.cmd 文件中进行更改?

这是一项谦逊的要求,请认真对待。

有关更多详细信息、我将使用 BLE SDK 2_02_07_06、 CCS7.4、编译器版本5.2.6、 XDC 工具版本3.32.0.06_CORE、TI RTOS 版本2.21.1.08

此致

Gajendra