NorFlash和NandFlash区别
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.
(1)闪存芯片读写的基本单位不同
应用程序对NorFlash芯片操作以“字”为基本单位.为了方便对大容量NorFlash闪存的管理,通常将NOR闪存分成大小为128KB或64KB的逻辑块,有时块内还分扇区.读写时需要同时指定逻辑块号和块内偏移.应用程序对NandFlash芯片操作是以“块”为基本单位.NAND闪存的块比较小,一般是8KB,然后每块又分成页,页大小一般是512字节.要修改NandFlash芯片中一个字节,必须重写整个数据块.
(2)NorFlash闪存是随机存储介质,用于数据量较小的场合;NandFlash闪存是连续存储介质,适合存放大的数据.
(3)由于NorFlash地址线和数据线分开,所以NorFlash芯片可以像SDRAM一样连在数据线上.NOR芯片的使用类似于通常内存芯片,传输效率高,可执行程序可以在芯片内执行(XI P, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.由于NorFlash的这个特点,嵌入式系统中经常将NOR芯片做启动芯片使用.NandFlash共用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将NAND芯片做启动芯片比较难.
(4)NandFlash闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进行的数据清空,只能对一个固定大小的区域进行清零操作;NorFlash芯片可以对字进行操作.所以在处理小数据量的I/O操作的时候的速度要快与NorFlash的速度.比如一块NorFlash芯片通常写一个字需要10us,在32位总线上写512字节需要1280us;NandFlash闪存写512字节需要的时间包括:512×每字节50ns+10us的寻页时间+200us的片擦写时间=234us.
(5)NandFlash闪存的容量比较大,最大容量己达到8G字节.为了方便管理,NandFlash的存储空间使用了块和页两级存储体系,也就是说它的存储空间是二维的,比如K9F5608UOA闪存块的大小为16K,每页大小是512字节,每页还16字节空闲区用来存放错误校验码空间(也称为out-of-band,OOB空间).在进行写操作时,NandFlash闪存每次将一个字节的数据放入内部的缓存区,然后再发出“写指令”进行写操作.由于对NandFlash闪存的操作都是以块和页为单位的,所以在向NandFlash闪存进行大量数据的读写时,NAND的速度要快于NOR闪存.
(6)NorFlash闪存的可靠性要高于NandFlash闪存,是因为NorFlash型闪存的接口简单,数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,一般用在对可靠性要求高的地方.NandFlash型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需安错误探测/错误更正(EDC/ECC)算法来确保数据的完整性,因此出现问题的几率要大得多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到.
(7)NANDFlash一般地址线和数据线共用,对读写速度有一定影响;NORFlash闪存数据线和地址线分开,相对而言读写速度快一些.NANDFlash和NORFlash芯片的共性
首先表现在向芯片中写数据必须先将芯片中对应的内容清空,然后再写入,即先擦后写.只不过NORFlash芯片只用擦写一个字,而NAND需要擦写整个块.其次,闪存擦写的次数都是有限的.当闪存使用接近使用寿命时,经常会出现写操作失败;到达使用寿命时,闪存内部存放的数据虽然可以读,但不能再进行写操作了.所以为了防止上面问题的发生,不能对某个特定的区域反复进行写操作.通常NANDFlash可擦写次数高于NORFlash芯片,但是由于NANDFlash通常是整块擦写,块内的页面中如果有一位失效整个块就会失效,而且由于擦写过程复杂,失败的概率相对较高,所以从整体上来说NOR的寿命较长.
另一个共性是闪存的读写操作不仅仅是一个物理操作,实际上在闪存上存放数据必须使用算法实现,这个模块一般在驱动程序的MTD'(Memory Technology Drivers)模块中或者在FTLZ (Flash Translation Layer)层内实现,具体算法和芯片的生产厂商以及芯片型号有关系.通过比较可以发现,NAND更适用于复杂的文件应用,但是由于NAND芯片的使用相对复杂,所以对文件系统有较高的要求.
(8)接口对比
NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.如uboot中的ro段可以直接在NorFlash上运行,只需要把rw和zi段拷贝到RAM中运行即可.
NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。由于时序较为复杂,所以一般CPU最好集成NandFlash控制器.另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2410在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中.如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码.
(9)容量和成本对比
相比起NandFlash来说,NorFlash的容量要小,一般在1~16MByte左右,一些新工艺采用了芯片叠加技术可以把NorFlash的容量做得大一些.在价格方面,NorFlash相比NandFlash来说较高,如目前市场上一片4Mbyte的AM29lv320 NorFlash零售价在20元左右,而一片128MByte的k9f1g08 NandFlash零售价在30元左右. NandFlash生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,这样也就相应地降低了价格.
(10)可靠性性对比
NandFlash器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算.Nand器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用.在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在的.
在Flash的位翻转(一个bit位发生翻转)现象上,NAND的出现几率要比NorFlash大得多.这个问题在Flash存储关键文件时是致命的,所以在使用NandFlash时建议同时使用EDC/ECC等校验算法.
(11)升级对比
NorFlash的升级较为麻烦,因为不同容量的NorFlash的地址线需求不一样,所以在更换不同容量的NorFlash芯片时不方便.通常我们会通过在电路板的地址线上做一些跳接电阻来解决这样的问题,针对不同容量的NorFlash. 而不同容量的NandFlash的接口是固定的,所以升级简单.
(12)读写性能对比
写操作:任何flash器件的写入操作都只能在空或已擦除的单元内进行.NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1.擦除NOR器件时是以64~128KB的块进行的,执行一个擦除/写入操作的时间约为5s.擦除NAND器件是以8~32KB的块进行的,执行一个擦除/写入操作最多只需要4ms. 读操作:NOR的读速度比NAND稍快一些.
(13)文件系统比较
Linux系统中采用MTD来管理不同类型的Flash芯片,包括NandFlash和NorFlash.支持在Flash上运行的常用文件系统有cramfs、jffs、jffs2、yaffs、yaffs2等.cramfs文件系统是只读文件系统.如果想在Flash上实现读写操作,通常在NorFlash上我们会选取jffs及jffs2文件系统,在NandFlash上选用yaffs或yaffs2文件系统.Yaffs2文件系统支持大页(大于512字节/页)的NandFlash存储器.
NorFlash和NandFlash区别的更多相关文章
- 路由器 NorFlash与NandFlash区别
在淘宝上买修改openwrt的路由器,基本上都是改的16MB flash,那么为什么不改到1GB呢? 现在U盘的价格也很便宜啊. 于是我调查了一下,发现flash分为两种,NorFlash与NandF ...
- 使用jlink直接烧norflash或者nandflash不借助uboot的猜想
由于喜欢折腾,我是在linux下使用jlink的,既然JLinkExe可以进行内存读写操作,loadbin等操作,并且通过指定命令文件支持批量指令输入,那么首先jlink是可以直接访问内部存储器的,包 ...
- 嵌入式开发之NorFlash 和NandFlash
http://blog.csdn.net/tigerjibo/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对NorFlash 和NandFlash要有最起码的认知 ...
- 关于NOR-FLASH和NAND-fLASH的区别。——Arvin
NANDFLASH: Nand-flash内存是flash内存的一种,1989年,东芝公司发表了NAND flash结构.其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案.N ...
- NorFlash、NandFlash在技术和应用上有些什么区别?
首先你要搞懂什么是Flash Memory? Flash Memory(快闪存储器),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器.这种科技主要用于一般性数据存储,以及在 ...
- 闪存中的NorFlash、NandFlash及eMMC三者的区别【转】
本文转载自:https://blog.csdn.net/Blazar/article/details/77843655 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器 ...
- NorFlash、NandFlash、eMMC比较区别
快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器.这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存 ...
- NorFlash、NandFlash、eMMC比较区别【转】
本文转载自:http://www.veryarm.com/1200.html 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器. ...
- u-boot分析1:Nandflash、Norflash启动
了解u-boot之前首先了解下Bootloader,简单说Bootloader就是一段小程序,它在系统上电时开始运行,初始化硬件设备,准备好软件环境,最后调用操作系统内核. u-boot全称:Univ ...
随机推荐
- 【Unity技巧】Unity中的优化技术
http://blog.csdn.net/candycat1992/article/details/42127811 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得 ...
- 【转】 简单理解Socket
题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...
- zoj 1204 Additive equations
ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...
- C++数据类型范围
C++中有很多基本的数据类型,我们在使用过程中需要根据所需要存储数据的范围的不同而选择恰当的数据类型. Visual C++ 32 位和 64 位编译器可识别本文后面的表中的类型. int (unsi ...
- 你不知道的JavaScript--面向对象高级程序设计
转载http://blog.csdn.net/i10630226/article/details/51088841 1. JS是基于原型的程序 建立一个简单的面向对象的类.有属性,有方法. funct ...
- SAP BDC说明
简单说一下这个DBC,之前也一直在用,每次找记录都很麻烦,所以今天干脆就记下来吧 T-CODE:SHDB 输入个NAME,T-CODE.然后执行...最后用保存或者返回来结束录屏. 然后选择记录,创建 ...
- CRM创建物料FM1
这是在中联混凝土那边搞的.... method create_prd. data: lt_return type bapiret2_tab, ls_return like line o ...
- Java多线程-新特性-有返回值的线程
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了. 现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现 ...
- 转:Nginx 配置 location 总结及 rewrite 规则写法
转: http://www.linuxidc.com/Linux/2015-06/119398.htm 1. location正则写法 一个示例: location =/{ # 精确匹配 / ,主机名 ...
- CentOS 6.2下SVN服务器的安装与配置
安装了一下SVN服务器,本文没有与Apache整合,过程如下: 一,下载相关软件: [root@youxia201 test]# wget http://subversion.tigris.org/d ...