嵌入式系统中RAM和ROM的疑惑澄清

而嵌入式系统中的RAM,一般也就是和PC上的(DDR)SDRAM一样,掉电丢失。
嵌入式系统特别是手机中ROM的构成,可能是NorFlash也可能是NandFlash,速度较快,但是掉电不丢失。

而之所以之前疑惑地方在于,
一、现在很多时候手机都标榜自己的ROM很大。而大多数情况下,在PC上厂商都是标榜自己产品的RAM很大,从而造成了误解。
原因在于:这里的嵌入式上的ROM类似于PC上的硬盘,但是比硬盘读写速度应该要快一些。嵌入式上的ROM造价单位上肯定比硬盘要贵的多,如果有更多的ROM空间,即可以存储更多的程序代码,所以嵌入式厂商才会不断提升并提供不同的ROM的空间,比如苹果的8G,16G,32G。

二、如果是ROM只是存储的话,为什么又有些说法是程序可以直接在ROM上运行?ROM不是只读吗?
原因在于ROM上说的可执行,是指cpu可以直接把ROM中的NorFlash部分的程序代码当做RAM中程序代码段,不需要载入RAM中才能让cpu直接读取。但是中间的处理数据和最终结果数据都是存放在RAM中的。这里涉及到一个芯片内执行的概念即XIP。

在NOR器件上运行代码不需要任何的软件支持即XIP,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
即norflash在读操作上,是不需要MTD的,但是擦除和写操作还是需要MTD。对比之下,nanflash虽然有擦除和写操作快的优势,但是其读写及擦除操作都全部依赖于MTD,原因在于NAND器件使用复杂的I/O口来串行地存取数据,又比norflash更多的要注意坏块。
XIP的示意图如下:
这里写图片描述

关于XIP,首先需要了解的是嵌入式系统中代码的执行方式主要有3种,XIP是其中一种:

  ①完全映射(fully shadowed)。嵌入式系统程序运行时,将所有的代码从非易失存储器(Flash、ROM等)复制到RAM中运行。

  ②按需分页(demand paging)。只复制部分代码到RAM中。这种方法对RAM中的页进行导入/导出管理,如果访问位于虚存中但不在物理RAM中会产生页错误,这时才将代码和数据映射到RAM中。

  ③ eXecute In Place (XIP)。在系统启动时,不将代码复制到RAM,而是直接在非易失性存储位置执行。RAM中只存放需要不断变化的数据部分,如图1所示。
这里写图片描述
如果非易失性存储器的读取速度与RAM相近,则XIP可以节省复制和解压的时间。NOR Flash和ROM的读取速度比较快(约100 ns),适合XIP;而NAND Flash的读操作是基于扇区的,速度相对很慢(μs级),因此不宜实现XIP系统。而NAND

闪存写入速度比NOR快,更适合SND(存储和下载)系统。

三、为什么norflash可以实现XIP,而nandflash就不适合?
(1)NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
(2)NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。

由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

引文:
http://blog.csdn.net/amberman/article/details/8122300
http://www.elecfans.com/bandaoti/cunchu/20120925290176.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值