This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

Other Parts Discussed in Thread: MSP430F5529

在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变量是预定义的常量存储空间大小,对吗?请问它们都是存储在哪里呢?

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

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

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

    里面比较详细

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

    这个常量应该是被定义成persistent的吧,如果有map文件,还是看一下map文件是怎么定义的吧