全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
peter shi:
回复 Eric Ma:
这个方法我知道,如果我有很多变量都需要指定地址,是不是需要把CMD文件分成好多段?
Microchip好像支持以下的写法
Uint16 LEDcount @ 0x080;
void test(void) @0x3F500;
TI有类似的写法吗?
全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
Eric Ma:
回复 peter shi:
peter,
可以用指针的方式,
#define variable (volatile unsigned int *)0x00000000
…
void main(void) {
*variable= 0x1234; //write entire register
但是还要保证你用的这些存储空间没有被cmd文件中的某些段使用。
另外关于函数我建议还是可以用段的方式解决,因为函数固定地址的情况还是比较少的。
Eric
全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
peter shi:
回复 Eric Ma:
这样全部要用指针变量,比较麻烦,
全局变量一般放在RAM中,为什么我增加一个全局变量,FLASH为什么会变啊
全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
peter shi:
回复 peter shi:
FLASH会变,是因为全局变量的初始值放在FLASH里吗?
还有Static 变量放在哪里?
全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
Eric Ma:
回复 peter shi:
FLASH会变,是因为全局变量的初始值放在FLASH里吗?
对。
还有Static 变量放在哪里?
跟全局变量一样,变量放在RAM,值在Flash.
Eric
全局变量一般都是编译器自动分配在RAM中,
如果我想把全局变量放在固定的地址(绝对地址中)怎么定义?
函数一般是编译器自动分配FLASH地址
如果我想把函数放在固定的地址(绝对地址)怎么办?
peter shi:
回复 Eric Ma:
Static 变量和全局变量差不多,只是Static 变量把范围缩小了,只能定义的.C文件能识别,出了定义的.C文件就不认识了,
Static 变量为什么在Map文件中找不到?
全局变量可以在Map文件中找到