在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 memory4470 个字节的代码(占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语言程序中的什么定义呢?
TI中文支持网



