[求助]CODE,DATA,CONST在单片机内部分别占用哪种存储器啊?
970 bytes of CODEmemory103 bytes of DATAmemory (+ 13 absolute )
16 bytes of CONST memory
MSP430F149:60KB闪速存储器,2KB RAM
RAM里不能存东西吧,说是只是在运行时,会用到。那这三种memory 就都在60KB闪速存储器里吗? code 是flash
data 是ram
const 好像也是ram 回复【1楼】morning sun
-----------------------------------------------------------------------
不对吧,ram是存不了东西滴,掉电就没有了 code是 flash
data是 ram
const 是 flash 一般来说是3楼说的那样。。。
真实的原因是: 哪种类型的数据放在哪里?是由连接文件lnk430Fxxx.xcl文件定义的。。。
每一个连接器都会有类似的连接脚本文件,就是告诉连接器把某钟类型的数据放到某个地址范围内 回复【4楼】lahori
-----------------------------------------------------------------------
有人说ram相当于电脑的内存,它不存东西的,只是在单片机运行时,将一些东西从flash里调出来运行。平时不通电的时候,ram里是没有东西的啊? 呵呵,楼上的,知易行难。。。你把XCL文件打开看看就比较清楚了,你说的这个问题是很基本的编译器的原理
C语言中一般都有这几类基本的数据类型代码/常量/初始化变量数据/未初始化数据/堆/栈。。。这些数据类型单片机中一般前两个定义到flash中,后边的定义到ram中
在一些特殊的项目中,也有把代码和常量也定义在ram中,这样需要就可以动态的装载/卸载某个功能程序,当然系统要实现动态装载/卸载地址重定位的功能,比如我们的Windows系统中,所有的程序的数据类型都是定义在ram中 早期的H8单片机,有核心单周期SRAM和外部多周期SRAM,地址区也不连续,在使用中为了加快访问速度,就可以把需要频繁访问的数据定义到快速单周期SRAM中,只需要在连接脚本中定义一个区域fastram,然后在定义变量的时候使用fastram属性定义,连接器就可以把这个fastram属性的变量放到单周期SRAM中,这个是GCC编译器中是非常常见的用法 430支持RAM中执行程序,CODE也可以定义在RAM区。 你那个是编译结果,说明单片机在运行时会这样分配变量,又不是说你现在编译了就有这么些变量在里面。所以不要纠结什么RAM里有没有数据了。 感觉这边高手很多啊,我本想了解下CONST定义的数组存放在哪里的,看了这个帖子了解的更多,谢谢大家!尤其lahori说的,很认同,之前做dsp5402 的时候需要bootloader 把代码装到ram中,好几年不弄了 都忘了,呵呵! MARK mark
页:
[1]