balance 发表于 2010-10-27 16:45:49

[求助]CODE,DATA,CONST在单片机内部分别占用哪种存储器啊?

970 bytes of CODEmemory
103 bytes of DATAmemory (+ 13 absolute )   
16 bytes of CONST memory
MSP430F149:60KB闪速存储器,2KB RAM
RAM里不能存东西吧,说是只是在运行时,会用到。那这三种memory 就都在60KB闪速存储器里吗?

morning_sun 发表于 2010-10-27 21:38:44

code 是flash
data 是ram
const 好像也是ram

balance 发表于 2010-10-28 15:08:39

回复【1楼】morning sun
-----------------------------------------------------------------------

不对吧,ram是存不了东西滴,掉电就没有了

peterliuzq 发表于 2010-10-28 15:14:43

code是 flash
data是 ram
const 是 flash

lahori 发表于 2010-10-29 07:57:57

一般来说是3楼说的那样。。。

真实的原因是: 哪种类型的数据放在哪里?是由连接文件lnk430Fxxx.xcl文件定义的。。。

每一个连接器都会有类似的连接脚本文件,就是告诉连接器把某钟类型的数据放到某个地址范围内

balance 发表于 2010-11-1 21:17:37

回复【4楼】lahori
-----------------------------------------------------------------------

有人说ram相当于电脑的内存,它不存东西的,只是在单片机运行时,将一些东西从flash里调出来运行。平时不通电的时候,ram里是没有东西的啊?

lahori 发表于 2010-11-2 10:05:05

呵呵,楼上的,知易行难。。。你把XCL文件打开看看就比较清楚了,你说的这个问题是很基本的编译器的原理

C语言中一般都有这几类基本的数据类型代码/常量/初始化变量数据/未初始化数据/堆/栈。。。这些数据类型单片机中一般前两个定义到flash中,后边的定义到ram中

在一些特殊的项目中,也有把代码和常量也定义在ram中,这样需要就可以动态的装载/卸载某个功能程序,当然系统要实现动态装载/卸载地址重定位的功能,比如我们的Windows系统中,所有的程序的数据类型都是定义在ram中

lahori 发表于 2010-11-2 10:11:37

早期的H8单片机,有核心单周期SRAM和外部多周期SRAM,地址区也不连续,在使用中为了加快访问速度,就可以把需要频繁访问的数据定义到快速单周期SRAM中,只需要在连接脚本中定义一个区域fastram,然后在定义变量的时候使用fastram属性定义,连接器就可以把这个fastram属性的变量放到单周期SRAM中,这个是GCC编译器中是非常常见的用法

weuser 发表于 2010-11-2 10:16:39

430支持RAM中执行程序,CODE也可以定义在RAM区。

ckvlhf 发表于 2010-11-2 10:20:32

你那个是编译结果,说明单片机在运行时会这样分配变量,又不是说你现在编译了就有这么些变量在里面。所以不要纠结什么RAM里有没有数据了。

lizhaohui815 发表于 2011-3-1 09:55:36

感觉这边高手很多啊,我本想了解下CONST定义的数组存放在哪里的,看了这个帖子了解的更多,谢谢大家!尤其lahori说的,很认同,之前做dsp5402 的时候需要bootloader 把代码装到ram中,好几年不弄了 都忘了,呵呵!

ptz19861212 发表于 2011-11-17 11:17:58

MARK

yaya001 发表于 2011-11-17 23:42:43

mark
页: [1]
查看完整版本: [求助]CODE,DATA,CONST在单片机内部分别占用哪种存储器啊?