主题中讨论的其他器件:CC3220SF
您好!
我使用 CC3220MODASF 模块、CCS 12.0.00009、simplelink_cc32xx_sdk_6_10_00_05以及编译器 TI v20.2.7 LTS 和 TI Clang v2.1.0.LTS。
我想创建自己的数据段以保存特定于应用的值。
该段应放置在闪存中。
我通过以下方式修改了 uart2echo 示例:
- 添加源文件 budrate.c、其中包含为.usersec 段标记的常量变量 cfgbaud
- 我知道关键字__attribute__不是 TI 和 TICLANG 编译器的最佳关键字,但它会导致所需的结果;)
- 我还使用 TI 编译器 pragma 方向检查了它。 它还会导致所描述的行为
#include
#if 0
#pragma DATA_SECTION (cfgbaud、".usersec")
const uint32_t cfgbaud = 115200;
其他
const uint32_t cfgbaud __attribute__((section(".usersec"))= 115200;
#endif
- 使用.usersec 段中的变量在 uart2echo.c 文件中设置波特率
// uartParams.budrate = 115200;
uartParams.baudrate = cfgbaud;
- 将.usersec 段添加到链接文件 cc32xxsf_tirtos.cmd 中
部分
{
dbghdr :> flash_hdr
.resetVecs :>0x01000800
.text :> FLASH
.TI.ramfunc:{} load=flash,run=SRAM,table (BINIT)
.const :> FLASH
.rodata :> FLASH
.cinit :>闪存
.pinit :> FLASH
init_array:> FLASH
.usersec :>闪存
vecs :>0x20000000
.data :> SRAM
.bss :> SRAM
.sysmem :> SRAM
/* HeapMem 使用的堆缓冲区*/
.priheap :{
_primary_heap_start__=.;
。 += HEAPSIZE;
__primary_heap_end__=.;
}> SRAM 对齐8
.stack :> SRAM (高)
log_data : > log_data,type = copy
}
映射文件显示创建了.usersec 段、变量 cfgbaud 位于该段内。
在调试器环境中、程序按预期运行。 这对 TI C 和 TI Clang 编译器工具链这两个变体都有效。
但是、从闪存运行不起作用。
变量 cfgbaud 设置为零、未按预期初始化为115200。
有什么想法出错了吗?
此致、
罗马