Hi,
msp430f5438a,CCS7.4 环境,
参考
e2echina.ti.com/…/15799的说明,
代码中添加如下:
#pragma DATA_SECTION(temp, ".infoD")
int temp = 20;
编译成功后,在生成的TI-TXT中,没有看到类似@1800的字段。
程序下载到mcu中,读取0x1800地址的值,也显示为FF。
请问,还需要如何修改??
Susan Yang:
CCS中可以给变量分配固定地址,C语言对应语法为:
#pragma DATA_SECTION ( symbol , " section name " );
对应的使用例子为:
#pragma DATA_SECTION(bufferB, "my_sect")
char bufferA[512];
char bufferB[512];而其中的 my_sect是在对应工程的cmd文件中进行指定的,你可以在cmd文件的
MEMORY
{
RAM1:o = 200h, l = 10h……
}中专门指定出一块RAM用来存放你的变量,此段RAM的起始地址直接定成你想要给变量分配的固定地址,再给它自己起个名字RAM1,自己可以定。其中o后为起始地址,l为长度。
而后在
SECTIONS
{
……..
my_sect > RAM1
}中指定my_sect存在RAM1中即可。
这样symbol就可以放在固定的地址了。
您也可以看一下之前的分享帖:e2echina.ti.com/…/15799
希望对您有所帮助!
user5273112:
回复 Susan Yang:
Hi,Susan:
多谢您的答复。
我的变量不想放在RAM中,我想把变量放在info memory中,这样mcu运行过程中,如果改变了该变量的值,该变量的值会被再次写入到INFO memory中。这样mcu断电后再次启动,该变量的值就是上次mcu运行过程中更改的值。e2echina.ti.com/…/15799
我按照这个分享帖操作,但是在编译生成的TI-TXT中,没有生成帖子中的@1800字段,程序下载到mcu中,读取0x1800地址的值,也显示为FF。
Seven Han:
您的cmd文件是如何修改的呢?对照下wiki中的写法:
processors.wiki.ti.com/…/Placing_Variables_in_Specific_Memory_Location_-_MSP430
user5273112:
回复 Seven Han:
Hi,Seven:
lnk_msp430f5438a.cmd 文件我没做修改。
默认的lnk_msp430f5438a.cmd文件中,有如下内容:
MEMORY
{……INFOD: origin = 0x1800, length = 0x0080……
}SECTIONS
{…….infoD: {} > INFOD……
}还需要做别的修改吗?