"); //-->
我们的程序在哪里运行?
还记得我们在做“跑马灯”和“蜂鸣器”两个实验,用ads1.2中建立工程文件的时候有设置三个地址:
RO Base :0x40000000
RW Base :0x40001000
Image entry point :0x40000000
开始没有讲为什么,通过上面的系统存储器映射图解不知大家是否有所悟。LPC2136内部自带32KB RAM和256KB FLASH。
32KB RAM分布在整个CPU存储器空间的0x40000000~0x40007FFF;
256KB FLASH分布在整个CPU存储器空间的0x00000000~0x0003 FFFF;
RO Base是告诉编译系统把编译生成的目标码放在0x40000000起始的位置,也就是代码段存放在0x40000000开始的位置。
RW Base告诉编译系统把各种变量(常量放在RO开始的位置),堆栈放在0x40001000起始的位置。
Image entry point:是告诉编译系统程序入口点在0x40000000,即程序从这个地址开始执行。(此部分在附录二中细说)
Flash与RAM的区别
通过以上所说,好像FLASH在这里没什么用,如果你的RO地址定位在RAM中,那么FLASH确实没有用。但FLASH是必须的功能部件。
Flash的作用也许要从其与RAM的区别说起:
区别一:RAM是易失性存储器,Flash是非易失性存储器。通俗的说,存储在RAM中的数据掉电后数据丢失;而存储在FLASH中的数据掉电后任然保持。(必须通过工具或特殊命令来擦除)
区别二:RAM是可读写存储器,Flash只读存储器。(也许有人要问,Flash难道不能写吗?Flash可以写,但不能象RAM一样做简单赋值操作,必须通过Flash写命令写,而且写入数据的最小单位为512字节,即一个扇区)
区别三:RAM访问速度快,而Flash访问速度慢的多。
区别四:RAM价格昂贵,Flash便宜。
FLASH有何用途
我们一般在调试程序的时候为了提高开发进度,都把程序放在RAM中调试,在RAM中调试有一个缺陷就是每次上电必须下载程序到板子上,当产品的各个模块调试OK,产品就要实现脱机功能,即把程序烧写到FLASH中,这样就不需要每次上电加载程序。我们手中拿的手机,在开发阶段都是在RAM(SDRAM)中调试的,开发完成,要发布的时候就把程序烧到FLASH,这样我们开机有能运行FLASH的程序。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
eleaction01 阅读:4511