工具/软件:Code Composer Studio
在下面的小程序中、变量 FramVar 不是在.TI.persistent 段中创建的、而是在.bss 段中、请参阅底部映射文件的提取。 我使用 CodeComposerStudio 版本:9.3.0.00012
有什么建议吗?
此致、Robert
#include #pragma PERSISTENT (FramVar) unsigned int FramVar; void main (void){ WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器 SYSCFG0 = FRWPPW | DFWP; //设置 FRAM 写入使能 ++FramVar; SYSCFG0 = FRWPPW | PFWP | DFWP; //设置 FRAM 写保护(不可写) while (1){}
从映射文件提取:
部分分配映射
输出 属性/
段 页 原点 长度 输入段
---- -------- ------ --------
.TI.persistent
0 0000e300 00000000 未初始化
.cinit 0 0000e300 00000012
0000e300 00000006 (.cinit、.bss.load)[加载映像、压缩= zero_init]
0000e306 00000004 (_TI_handler_table)
0000e30a 00000008 (_TI_cinit_table)
.pinit 0 0000e312 00000000 未初始化
.binit 0 0000e312 00000000
init_array
0 0000e312 00000000 未初始化
mspabi.exidx
0 0000e312 00000000 未初始化
.mspabi.extab
0 0000e312 00000000 未初始化
.const 0 0000e312 00000000 未初始化
.text 0 0000e312 000000ce
0000e312 0000006a rts430x_lc_sd_eabi.lib:autobinit.c.obj (.text:__TI_auto_init_nobinit_nopinit_hold_wdt:__TI_auto_init_nobinit_nopinit_hold_wdt)
0000e37c 0000003e :copy_zero_init.c.obj (.text:decompress:Zi:_TI_zero_init_nomemset:_TI_zero_init_nomemset)
0000e3ba 0000001a main.obj (.text:main)
0000e3d4 00000006 rts430x_lc_sd_eabi.lib:exit.c.obj (.text:abort)
0000e3da 00000004 :pre_init.c.obj (.text:_system_pre_init)
0000e3de 00000002 :startup.c.obj (.text:_system_post_cinit)
.text:_ISR
* 0 0000e3e0 00000024
0000e3e0 0000001c rts430x_lc_sd_eabi.lib:boot.c.obj (.text:_isr:_c_int00_noargs)
0000e3fc 00000008 :ISR_TRAP_ASM.obj (.text:_ISR:__TI_ISR_TRAP)
.bss 0 00002000 00000002 未初始化
00002000 00000002 (.common:FramVar)
.stack 0 00002760 000000a0 未初始化
00002760 00000002 rts430x_lc_sd_eabi.lib:boot.c.obj (.stack)
00002762 0000009e --孔--