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

变量和函数位置和大小怎么定义

全局变量一般都是编译器自动分配在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文件中找到

赞(0)
未经允许不得转载:TI中文支持网 » 变量和函数位置和大小怎么定义
分享到: 更多 (0)