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

CMD文件

我在CMD文件的MEMORY部分定义了一块RAM区域(假如我定义的名字为UserRAMMem),然后在SECTIONS指定了一个段名(假如叫.UserSections )到UserRAMMem存储区域中。

问题1:

在C语言代码中用  #pragmaCODE_SECTION(Fun_1,".UserSections");  Fun_1是一个函数名这样是不是可以将Fun_1这个函数放在

我定义的UserRAMMem内存中去执行了呢?

问题2:

如果我有多个函数都要放在自己定义的内存区域内,可不可以

#pragma CODE_SECTION(Fun_1,".UserSections"); 

#pragmaCODE_SECTION(Fun_2".UserSections"); 

#pragma CODE_SECTION(Fun_3,".UserSections"); 

这样将多个函数都指定到同一个段内?我觉得这样后面的函数会将前面的覆盖了,不知道这样可不可行。

问题3:

#pragmaDATA_SECTION(buf,".UserSections");

使用DATA_SECTION这个时是将buf这个变量存储到指定的内存区域嘛?buf应该是一个指针类型还是任何变量都可以呢?

手里没有硬件没法实际调试有知道的指点下谢谢啦!!!

gaoyang9992006:

最后一个问题是

 #pragma DATA_SECTION(bufferB,"my_sect")

char bufferA[512];

char bufferB[512]:

一般这种,你说那个是什么变量呢

数组名并不是指针,也不是常指针,它和一般的变量名一样都是内存地址的助记符。

第一个问题没有查到官方的具体说明,你可以对应每一个的Fun单独设置一个UserSections,比如用统一的编号后缀

gaoyang9992006:

通常第一个问题是这么用的

#pragma CODE_SECTION(funcA, codeA)

查了好多都是这么实现的,用统一的后缀,一对一

user4099083:

回复 gaoyang9992006:

就是说一个函数设置一个对应的段来存放它,

 .UserSection   : LOAD = FLASH0,                          RUN = MYRAM,                          LOAD_START(_RamfuncsLoadStart),                          LOAD_END(_RamfuncsLoadEnd),                          RUN_START(_RamfuncsRunStart),                          PAGE = 0

设置指定段时候是不是必须像上面这样,然后在用

#pragma CODE_SECTION(Fun1,".UserSection   ");  和

MemCopy(&_RamfuncsLoadStart, &_RamfuncsLoadEnd, &_RamfuncsRunStart);将函数拷贝到RAM中去。

这里面的

LOAD

RUN

LOAD_START

LOAD_END

RUN_START

这几个关键字是什么含义呢?

========================================================================================================================

还是

.UserSection   : {} > UserMemRAM

#pragma CODE_SECTION(Fun1,".UserSection   ");然后在用这一个声明就可以呢?

我试了必须用上面的方式才可以正常运行,那#pragma CODE_SECTION(Fun1,".UserSection   ");该如何理解,是将Fun1的地址放到UserSection   指定的起始地址嘛?

user4099083:

回复 gaoyang9992006:

我说的变量就是int Var;这样的变量不是一个数组。一般在RAM中存放数据是不是都存放数组的数据啊。

赞(0)
未经允许不得转载:TI中文支持网 » CMD文件
分享到: 更多 (0)