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

关于MSP430的数据表如何定义与存储的问题

在MSP430F5529单片机中,有128KB Flash和8KB RAM,对于存储区域的划分与作用,有以下几个问题:

(1)全局变量和局部变量分别存储在那个区域?

全局变量是预先在RAM中划定区域存储,局部变量是程序运行临时在RAM划分的吗?

全局变量的内容在Flash代码区域中是否也包含,只有在程序开始运行的时候才将全局变量存储到RAM中划定的指定区域?(否则掉电岂不是就会消失)

(2)要定义一个数据表用于程序查表操作,该如何定义?定义一个全局变量二维数组(数据量较大)是否会造成RAM区占用过多?

(3)代码烧写是将二进制机器指令烧写到Flash中,对于生成的MAP文件,其中的

4 470 bytes of CODE memory
349 bytes of DATA memory (+ 101 absolute )
4 bytes of CONST memory

CODE memory是指ROM/Flash中的程序代码大小,DATA memory是指程序中定义到的总变量存储空间大小,absolute是指全局变量大小,CONST变量是预定义的常量存储空间大小,对吗?请问它们都是存储在哪里呢?

几个问题较为繁琐,一下困扰许久,如有解答,不胜感激!

Susan Yang:

1)全局变量是存在RAM中的,而局部变量是存在堆栈中的。全局变量是从低地址往高地址存,局部变量是从RAM的高地址往低地址存

2)使用全局变量会占用更多的内存(因为其生命期长),请尽量避免使用巨大对象的全局变量

3 )
4 470 bytes of CODE memory
349 bytes of DATA memory (+ 101 absolute )
4 bytes of CONST memory

4470 个字节的代码(占FLASH)
349 个字节的变量数据(占RAM) 括号内表示内存的绝对使用量,对应设的全局变量大小
4 个字节的常量数据(占FLASH)

user5280439:

回复 Susan Yang:

请问烧写进Flash的占的总内存是4470+349+4个吗?然后上电初始化的过程中,把flash中全局变量内容写进RAM,在程序运行再在RAM中划分堆栈存放局部变量,还有这个常量数据对应的是C语言程序中的什么定义呢?

灰小子:

回复 user5280439:

你用的什么开发环境?

你可以看一下生成的.map文件

里面比较详细

user5280439:

回复 灰小子:

好的,谢谢

Hao Mengzhen:

回复 user5280439:

user5280439请问烧写进Flash的占的总内存是4470+349+4个吗?然后上电初始化的过程中,把flash中全局变量内容写进RAM,在程序运行再在RAM中划分堆栈存放局部变量,还有这个常量数据对应的是C语言程序中的什么定义呢?

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430的数据表如何定义与存储的问题
分享到: 更多 (0)