前言:
在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解。下面细说一下标题中的中Flash中的关系。
Flash Memory(闪存)是非易失性的存储器。
http://www.longsto.com/news/27.html?bd_vid=10703896747443450430
一,Flash的内存存储结构
flash按照内部存储结构不同,分为两种:nor flash和nand flash。
Nor FLASH使用方便,易于连接,可以在芯片上直接运行代码,稳定性出色,传输速率高,在小容量时有很高的性价比,这使其很适合应于嵌入式系统中作为 FLASH ROM。Nor Flash架构提供足够的地址线来映射整个存储器范围。
相对于NorFLASH,NandFLASH强调更高的性能,更低的成本,更小的体积,更长的使用寿命。这使Nand FLASH很擅于存储纯资料或数据等,在嵌入式系统中用来支持文件系统。缺点包括较慢的读取熟读和I/O映射类型或间接接口。
二、具体内容
2.1Nor Flash
在通信方式上Nor Flash 分为两种类型:CFI Flash和 SPI Flash。即采用的通信协议不同,
a,CFI Flash
英文全称是common flash interface,也就是公共闪存接口,是由存储芯片工业界定义的一种获取闪存芯片物理参数和结构参数的操作规程和标准。CFI有许多关于闪存芯片的规定,有利于嵌入式对FLASH的编程。现在的很多NOR FLASH 都支持CFI,但并不是所有的都支持。
CFI接口,相对于串口的SPI来说,也被称为parallel接口,并行接口;另外,CFI接口是JEDEC定义的,所以,有的又成CFI接口为JEDEC接口。所以,可以简单理解为:对于Nor Flash来说,CFI接口=JEDEC接口=Parallel接口 = 并行接口
特点在于支持的容量更大,读写速度更快。
缺点由于拥有独立的数据线和地址总线,会浪费电路电子设计上的更多资源。
b,SPI Flash
serial peripheral interface串行外围设备接口,是一种常见的时钟同步串行通信接口。有4线(时钟,两个数据线,片选线)或者3线(时钟,两个数据线)通信接口,由于它有两个数据线能实现全双工通信,读写速度上较快。拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行;可以单字节或单字编程,但不能单字节擦除,必须以Sector为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对Sector或整片进行预编程和擦除操作。如W25Q64
c,CFI Flash 和 SPI Flash 比较
SPI flash和 CFI Flash 的介质都是Norflash ,但是SPI 是通过串行接口来实现数据操作,而 CFI Flash 则以并行接口进行数据操作,SPI容量都不是很大,市场上 CFI Flash 做大可以做到128Mbit,而且读写速度慢,但是价格便宜,操作简单。而parallel接口速度快,容量上市场上已经有1Gbit的容量,价格昂贵。
2.2 Nand Flash
同样根据接口类型不同,可分为SPI 和 并行。
并行NandFlash在工艺制程方面分三种类型:MLC、SLC和TLC。MLC和SLC属于两种不同类型的NAND FLASH存储器。
SLC全称是Single-Level Cell,即单层单元闪存,而MLC全称则是Multi-Level Cell,即为多层单元闪存。它们之间的区别,在于SLC每一个单元,只能存储一位数据,MLC每一个单元可以存储两位数据,MLC的数据密度要比SLC 大一倍。在页面容量方面分NAND也有两种类型:大页面NAND flash(如:HY27UF082G2B)和小页面NAND flash(如:K9F1G08U0A)。
这两种类型在页面容量,命令序列、地址序列、页内访问、坏块标识方面都有很大的不同,并遵循不同的约定所以在移植驱动时要特别注意。
3、Nor Flash和Nand Flash使用区别
1、Nand 闪存的密度要更高写,且每比特成本较低,因此Nand 闪存具有1Gb到64Gb的容量。而NorFlash的容量大小从64Mb到2Gb。随技术发展,范围可能有所扩大,但是Nand 闪存容量更大,成本更低的特点不会轻易改变。
2、Nand 闪存因为共用地址和数据总线的原因,不允许对一个字节甚至一个快进行数据清空,只能对一个固定大小的区域进行清零操作;Nor 闪存可以对字进行操作,
4、总结
SPI Flash : 每次传输一个bit位的数据,传输速度慢,但是价格便宜,任意地址读数据,擦除按扇区进行
CFI Flash : 每次传输一个字节 ,速度快,任意地址读数据,擦除按扇区进行
Nand Flash:芯片操作是以“块”为基本单位.NAND闪存的块比较小,一般是8KB,然后每块又分成页,页大小一般是512字节.要修改NandFlash芯片中一个字节,必须重写整个数据块,读和写都是按照扇区进行的。