搞清楚nand flash和 nor flash 以及 spi flash 和cfi flash 的区别
前言:
在嵌入式开发中,如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芯片中一个字节,必须重写整个数据块,读和写都是按照扇区进行的。
搞清楚nand flash和 nor flash 以及 spi flash 和cfi flash 的区别相关推荐
- STM32学习之SPI协议(读写FLASH)
关于STM32学习分享 第八章 SPI协议(读写FLASH) 文章目录 关于STM32学习分享 前言 二.代码 1.spi_flash.c 2.spi_flash.h 3.main.c 总结 前言 开 ...
- CFI Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
flash按照内部访问接口(技术)不同,flash分为两种:nor flash和nand flash. nor flash:像访问SDRAM一样,按照数据/地址总线直接访问:读数据快,写数据慢: na ...
- CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系 简单说就是,Flash,按照内部访问接口不同 ...
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
第24章 SPI-读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- SPI—读写串行FLASH(时序中的无关项)
SPI-读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章 ...
- SPI—读写串行FLASH
1 SPI协议简介 SPI协议是由摩托罗拉公司提出的通讯协议(SerialPeripheralInterface),即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在ADC.LCD等设备 ...
- freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(三)之Flash控制器指令执行
前面我们介绍了Flash主要的几个寄存器,如果还有其他的疑问可以再返回去看看或者直接查阅S12系列单片机的手册中相关的内容.这一节我将介绍Flash控制器指令执行的过程,并举出相关的例子,希望能够起到 ...
- Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法
Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 ...
- Flash Builder 找不到所需的 Adobe Flash Player
经测试该方法可用! http://bbs.9ria.com/thread-108472-1-1.html 最近重装了系统,flash开发工具也由flex换成了flash builder.调试时就出现了 ...
最新文章
- 矩阵对抗与系统补丁200911(第2期)下载
- prometheus rfc3339 php date 转换
- (六)构建优化(揭开webpack性能优化的内幕)
- 雷军 1994 年写的代码,经典老古董。
- 转: java多线程-ThreadPoolExecutor的拒绝策略RejectedExecutionHandler
- c#下不同命名空间的引用(一个project使用另外一个project的名称空间)
- 跨域 cors 请求两次_请求两次的故事-CORS
- linux PHP卸载不了
- linux input输入子系统分析《一》:初识input输入子系统
- powerpoint 2016表格中添加行
- Blocks的申明调用与Queue当做锁的用法
- 命令dd 及简单应用
- 判断table中的tbody是否有数据
- [论文翻译]YOLOX: Exceeding YOLO Series in 2021
- C语言 实现 面向对象编程 OOC
- 第五章 全连接神经网络
- Echarts 图表不能渲染问题整理
- java开发报错怎么处理_Java开发中常见报错及解决办法
- Android开发——编译FFmpeg(一、前言)
- matlab矩阵指定行最大值,求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.*...