TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430 如何将变量的初始化值存储在指定memory 地址中

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……
}

还需要做别的修改吗?

赞(0)
未经允许不得转载:TI中文支持网 » msp430 如何将变量的初始化值存储在指定memory 地址中
分享到: 更多 (0)