原创 LPC2136的内存结构

2012-4-4 12:34 4260 32 36 分类: 消费电子

LPC2136的内存结构

前面的两个程序“跑马灯”和“蜂鸣器”是你嵌入式职业生涯的一个美好开端,之所以先运行程序,然后讲理论知识,是为了通过实验让学生产生兴趣,再通过实验引出理论知识。

我举一个我曾经学吉他的例子:我读中学的时候有一次去我外婆家,看到我一个舅舅拿着吉他在拨弄,我第一次看到这种乐器,而且第一次被这么优美的声音吸引。上大学第一个学期,我就买了吉他,但是我发现所有吉他教科书上都是从那些枯燥无味的五线谱和指法开始。到吉他老师哪里去听课,也是从这些枯燥无味的东西开始。如果不是狂热爱好者,从一开始就练这些枯燥的东西是坚持不下去的。为什么这么做的,教科书和老师都是说,如果一开始不练指法,就开始弹歌曲会把手型搞坏,后来纠正起来很麻烦。

可是,对吉他的热爱,使我买了吉他后第一件事就是弹一只歌曲,而不是练那些枯燥无味的五线谱和指法!我这样做的目的,第一是让我感觉到自己能用吉他弹唱歌曲的成就感,同时在宿舍,班级同学中有种自豪感。

我当时练了两只歌,一首是单玄《其实你不懂我的心》,另一首是扫玄《对面的女孩看过来》。我把这两首歌练好后,才开始练指法,指法确实是枯燥无味的,但必须坚持,我就是在练指法累了,乏味了的时候弹唱一曲来进行调节坚持下去的。当时,有几个宿舍同学也买了吉他,但是没有一个坚持下去的。

LPC2136是ARM7架构,是32位地址总线和数据总线,可以寻址的范围为2的32次方=4GB(0x00000000~0xFFFFFFFF)

xjs_1.jpg

xjs_2.jpg


我们的程序在哪里运行?

还记得我们在做“跑马灯”和“蜂鸣器”两个实验,用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的程序。

文章评论4条评论)

登录后参与讨论

用户1010725 2011-5-23 10:52

看得出,是个实干的人才。

用户1511605 2010-10-19 11:54

study

用户1413134 2010-8-26 13:48

前段时间准备弄ARM7,但是结果工作的事情冲了。 如今准备重新再来,看你说的,坚持是最重要的。关注你!!! 我也用的NXP的,买的小板子是LPC2132,有问题时请多指教。

用户1143234 2010-8-25 09:55

纯粹就文章里内容来说,学弹吉它和嵌入式的关系似乎有些牵强,文性太随意了
相关推荐阅读
用户1037328 2016-04-17 17:59
好的理论可以避免犯错——读《丈量世界》有感!
     《丈量世界》,早就因为仰慕高斯而想看这本书      1.殊途同归      这本书写的是高斯和洪堡两个人,为什么要把这两个人放在一起写呢?因为高斯是一个宅男,不喜欢什么旅游,考察!他觉得...
用户1037328 2016-04-05 09:10
叛逆在爱因斯坦性格中的重要性(一)
叛逆在爱因斯坦性格中的重要性(一) 《爱因斯坦传》读书笔记      昨天晚上,读完了2016年书单的第二部书,《爱因斯坦传》。我想梳理一下自己读这本书的收获,或者说感悟!在读这...
用户1037328 2016-04-05 09:09
叛逆在爱因斯坦性格中的重要性(二)
叛逆在爱因斯坦性格中的重要性(二) 《爱因斯坦传》读书笔记                                四  叛逆性 在爱因斯坦的同时期科学家中,我想比他IQ...
用户1037328 2014-07-09 19:55
RTEMS系统时钟原理
作者,下家山(转载请注明作者及出处,请尊重原创)   专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训 一:从应用看原理      每个...
用户1037328 2014-07-09 19:47
RTEMS在S3C2410上的移植(一)
作者:下家山(转载,请注明) 1:RTEMS开发环境建立 1.1开发环境建立前的准备工作 因为RTEMS开发环境主要用的是GNU的工具链,所以需要一台装有Linux的HOST. 1.2...
用户1037328 2014-07-09 19:45
深入浅出学Makefile<三,如何自动生成Makefile>
(请尊重原创,转载请注明,作者:下家山) 五: 运行make编译得到可执行文件 root@parson-desktop:/home/parson/tmp/automk# make gcc ...
我要评论
4
32
关闭 站长推荐上一条 /2 下一条