打印

关于嵌入式系统中的程序存储器

[复制链接]
2313|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2010-12-15 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在嵌入式硬件系统中,经常会用到程序存储器,顾名思义,程序存储器是用来存储程序的芯片,较早的程序存储器由ROM,之后又EPROM、EEPROM,到现在常用的Flash。我们知道ROM芯片只能是出厂前有制造商来写入程序,之后就不能再作修改,由于这个缺点,被上面提到的其他存储方式替代。但是,在现在的嵌入式系统中,经常还会碰到ROM、EEPROM,为什么呢?现在的ROM用来做什么呢?回答是用来存放,启动代码    由于处理器上电后,所有的寄存器都会复位,包括CPU的程序指针,所以程序会从程序指针的位置(arm是从0地址处,X86从FFFF0地址处)开始执行,从这个地址处开始执行的就是ROM芯片中的启动代码,启动代码主要做一下几方面的事情:开机自检、初始化寄存器、初始化内存,然后根据cpu引脚的电平(arm为OM0、OM1)判断是进入下载模式还是测试模式或是其他模式,并执行相应的启动代码。由于这部分比较复杂,所以,生产商会把这部分程序固化到内部,不用修改。当然,对于PC来说启动代码就是BIOS了,而且现在也用flash做了
    EEPROM主要用来存储用户的数据,具有掉电数据不丢失的优点,主要存储程序运行过程中产生的数据。一般容量不是很大。
    容量最大的算是falsh了,由于flash只能先进行擦除,然后进行写入,故而主要用于存储用户的程序和一些常量数据。flash主要分为两种Nor Flash和Nand Flash,这两种flash的结构存在较大的差异,最先出现的Nor flash,采用并口输入输出数据,速度快,CPU可以直接从Nor Flash中取指令执行专门术语叫XIP (eXecute In Place),但是价格昂贵,同时,由于要占用地址线,容量不能很大。基于以上的缺点,三星公司开发了Nand Flash结构,这种结构采用串行数据存储,而且使用块存储,故而容量可以很高。但是他的缺点是程序不能直接在Nand Flash中运行,只能拷贝到Nor Flash或者是RAM中运行,这样程序启动的过程中就存在一个程序拷贝的过程,这个过程主要在Nor Flash中运行。所以,一般Nor Flash用作存放BootLoader(这部分内容也类似于PC中的BIOS和MBR),主要是在单片机上电后,执行将Nand Flash中的程序拷贝到RAM中,然后将CPU控制权交给RAM中的程序(用户自己编写的函数或者是系统内核)。所以,一般的嵌入式系统中都带有容量较小的Nor Flash和大容量的Nand Flash。Nor Flash主要用来存放引导程序,而Nand Flash存放用户真正的程序。如果使用操作系统,一般内核比较大,系统启动过程比较慢,大约5-10秒不等,这个过程中主要执行开机自检和硬件初始化以及程序拷贝。

相关帖子

沙发
火箭球迷| | 2010-12-15 21:25 | 只看该作者
普及教育

使用特权

评论回复
板凳
3B1105| | 2010-12-15 22:44 | 只看该作者
基础知识

使用特权

评论回复
地板
numLiu| | 2011-2-28 22:16 | 只看该作者
呵呵,对初学者理解很有用的。

使用特权

评论回复
5
即时生效| | 2011-3-2 22:39 | 只看该作者
受益匪浅啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝