FLASH 的基本原理和分类

一、Flash的不同分类 - 百度文库

1. FLASH根据内部存储结构的不同,闪存可分为NOR闪存和NAND闪存两种。

NOR闪存:像访问SDRAM一样,可以根据数据/地址总线直接访问SDRAM。可以写入的次数少,速度慢。因为它的读写时序类似于SRAM,读地址是一种线性结构,多用于程序代码存储。

NAND闪存:只有8位/16位/32位甚至更多位宽的总线,每次访问,都要将长地址分为几部分,一点点的分布传入才能访问nand flash。


Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快,但是在使用以及使用过程中会出现坏块因此需要做特殊处理才可以使用。其主要用于数据存储,大部分U盘都是Nand Flash。
Nand和Nor的使用寿命,块擦除的速度,数据存储的出错几率等,都有很大区别。


2. 外置flash按接口分有总线flashSPI flash
总线flash需要你的MCU上有外部总线接口,SPI flash就是通过SPI口对flash进行读写。
速度上,总线flash比SPI的快,但是SPI的便宜。


3. Nor Flash,根据外部接口分,可分为普通接口和SPI接口。
普通接口的Nor Flash,多数支持CFI接口,所以,一般也叫做CFI接口。
CFI接口,相对于串口的SPI来说,也被称为parallel接口,并行接口;
另外,CFI接口是JEDEC定义的,所以,有的又成CFI接口为JEDEC接口。
所以,可以简单理解为:对于Nor Flash来说,CFI接口=JEDEC接口=Parallel接口 = 并行接口


1) SPI:serial peripheral interface串行外围设备接口,是一种常见的时钟同步串行通信接口。


2) CFI,英文全称是common flash interface,也就是公共闪存接口,是由存储芯片工业界定义的一种获取闪存芯片物理参数和结构参数的操作规程和标准。CFI有许多关于闪存芯片的规定,有利于嵌入式对FLASH的编程。现在的很多NOR FLASH 都支持CFI,但并不是所有的都支持。


3) 普通的parallel/CFI/JEDEC接口的的Nor Flash的针脚比较多,芯片比较大。之所有会有SPI接口的,主要是相对CFI/Parallel的Nor,可以减少针脚数目,减少芯片封装大小,采用了SPI后的Nor Flash,针脚只有8个。


4) SPI flash和parallel的介质都是Norflash ,但是SPI 是通过串行接口来实现数据操作,而parallel则以并行接口进行数据操作,SPI容量都不是很大,市场上Numonyx做大可以做到128mbit,而且读写速度慢,但是价格便宜,操作简单。而parallel接口速度快,容量上市场上已经有1Gmbit的容量,价格昂贵。

二、Flash的基本原理及分类是什么?-电子发烧友网 

一、Flash基本原理及分类

1.1、基本存储单元

存储数据基本的元件:浮栅场效应管

存储时,信息存放在浮置栅极中,浮置栅极有无电荷或电荷量来表明当前存储的数据

1.2、存储颗粒分类

当前存储颗粒主要分类:SLC、MLC、TLC、QLC

单位存储单元下数据存储密度:(一个存储单元要表示的数据类型)

SLC (Single-Level Cell) 单个存储单元存储1bit数据,即表示2种(2^1)数据状态:0和1

MLC (Multi-Level Cell) 单个存储单元存储2bit数据,即表示4种(2^2)数据状态:00,01,10,11

TLC (Trinary-Level Cell) 单个存储单元存储3bit数据,即表示8种(2^3)数据状态:000,……,111

QLC (Quad-Level Cell) 单个存储单元存储4bit数据,即表示16种(2^4)数据状态:0000,……,1111

注:单个存储单元:指一个浮栅场效应管

对于一个存储单元存储多个bit的情况,识别和写入通常是通过控制阈值电压来实现,阈值电压可以通过调整浮置栅极的电荷量(电荷量越多导通性越好,分压越小)实现。

颗粒配合制作工艺实现:2D和3D Flash技术,2D最早在SLC阶段应用广泛,3D在TLC阶段应用广发,具体结构区分:

2D内部结构:

3D内部构造:

3D芯片内部结构:

1.3、Flash存储分类

存储技术分类:NandFlash、NorFlash

存储芯片分类:目前市面上常见的集成存储芯片类型:SSDeMMCUFSSPI-FlashQSPI-Flash、各尺寸的SD卡等。

NandFlash存储阵列:

NorFlash存储阵列:

写入数据:

NorFlash:热电子注入效应(高压沟道雪崩击穿注入电子流)

NandFlash:F-N隧道效应(P/N结半导体导电特性)

读取时控制栅极的控制电压不会过大影响浮置栅极的电荷,因此可以依据有无电荷读取存储的数据,当浮置栅极有电荷时,源极和漏极可以导通,读取到的bit是0;擦除后浮置栅极无电荷,源极和漏极不能导通,读取的bit是1(控制栅极的电平);

读取数据:

NorFlash一次最小可以读取1bit数据,NandFlash一次最小可以读取1byte数据;

擦除数据:

NorFlash和NandFlash都是通过F-N隧道效应擦除数据(消耗浮置栅极的电荷)

1.4、NandFlash和NorFlash异同

NandFlash

存储容量:适用于大容量的场景,不可运行程序

擦写次数:擦写次数相对NorFlash较高;

擦写方式:按擦写,可擦写次数较,读写速率相对较

缺陷:需要管理坏块,NandFlash存在随机坏块问题,需要算法探测坏块并本分数据,EDC/ECC等一般在文件系统下实现,时序操作负责容易引起错误,只能以块为单位擦写,整体寿命相对短;

应用:当前市场的NandFlash用于大容量产品,如SSD的Flash、EMMC的Flash、UFS的Flash等都是NandFlash,不同的是SSD、EMMC、UFS等芯片集成的控制器对外接口类型不同

常见产品:市场常见产品均是串行接口,集成了控制器,控制器中集成坏块替换、均衡等管理;

SSD(solid state disk)可以向外提供SATA或PCIe接口(代表产品有M.2 SSD,兼容SATA和PCIe接口);

EMMC(embeded MultiMedia Card)集成的控制器对外提供的接口类似于NandFlash的接口,统称SDIO(适用于SD卡的数据总线类型),以I/O地址数据线复用形式提供,CMD等实现指令操作;

UFS(Universal Flash Storage)对外提供的接口MIPI(Mobile Industry Processor Interface:该接口由ARM组织发起,目的是将摄像头、LCD显示屏、存储设备等统一为一个总线规范),处理器也需要支持MIPI接口,目前较新智能手机的SOC(ARM核)一般都支持该接口;

NorFlash:

存储容量:适用于存储容量小的场景,可运行程序

擦写次数:擦写次数相对NandFlash较低;

擦写方式:按bit擦写,极少出现坏块,可靠性高写入速率相对,读取速率和NandFlash相差不大;

硬件接口:地址总线和数据总线是分开的,读写速率相对较高;

缺陷:写入速度低,可擦写次数相对NandFlash低;

应用:当前市场的NorFlash主要有串行和并行两种接口形式,

并行的NorFlash芯片提供类似SRAM的接口,即有地址总线和数据总线,

串行的NorFlash一般提供SPI等串行协议的接口实现数据读写;

二、Flash的硬件电气特性

2.1、芯片封装类型

芯片封装依据厂商的设计和应用场景而不同,目前主要有SOP类、BGA类,相关封装对应的引脚定义参见以下描述;数据通道依据不同芯片也有不同的设计,当前有8bit数据通道和16bit数据通道。

以下是NandFlash的常见芯片封装和引脚定义:

SOP类芯片封装

8根数据线的存储芯片:

16根数据线的存储芯片:

BGA类芯片封装

8根数据线的存储芯片:

16根数据线的存储芯片:

LGA-52封装尺寸:

其他封装具体参见开源文档《Open Nand Flash Interface》描述。

以下是NorFlash的常见芯片封装和引脚定义:

2.2、芯片和处理器接口

飞思卡尔(现属于NXP处理器下,存储芯片等的硬件接口统称为IFC(Integrated flash controller),该总线在嵌入式系统中比较常见。IFC总线可以连接NandFlash、NorFlash、SRAM/DDR、EEPROM以及ASIC处理器的IFC总线一般带有NandFlash和NorFlash的控制器,以硬件的形式完成NandFlash或NorFlash的访问和控制;

以LS1021A处理器(ARM核)为例:

The IFC contains one NAND controller, one NOR flash controller, and one GPCM/generic-ASIC controller.

即IFC总线包含了NorFlash/NandFlash/GPCM/ASIC等控制器,帮助处理器完成对外围存储、器件的访问。

由上一节的芯片硬件接口可以看出,NandFlash没有数据线和地址线,只有I/O总线,其余引脚用于时序控制完成对应功能;

RK系列ARM处理器(瑞芯微),处理器对外的存储器接口,均以集成的方式展现,如MIPI、EMMC PHY等,这种情况下,就需要EMMC、UFS等芯片去连接,而不能直接用NandFlash连接到处理器上(注意)

全志A、H系列ARM处理器,可以通过本地数据总线连接NandFlash,但名称不叫IFC,其中RK系列处理器的外置存储控制器,更适用于安卓系统的驱动,对于嵌入式系统也是一个新的发展趋势

2.3、Flash读写

NorFlash需要热电子注入,因此需要升压,电压要高于当前芯片的逻辑电压,因此NorFlash的写入速度较低,同样电压低的器件速度快,CPU从最初的5V电源系统更新到3.3V,乃至最新的1.8V和1.2V,都是为了提高元件的运行速度(频率),减少因逻辑切换引起的电压变换时延。

NandFlash由于借助半导体的P/N结特性,不存在电压超过芯片自身工作电压的工作情况,因此写入速度要大于NorFlash。

NorFlash和NandFlash的擦除速度相当,擦除原理均基于P/N结特性(F-N隧道效应),因此擦除速率几乎相等。

NandFlash的读写命令字规定(来自ONFI标准):

注:此规定是ONFI规定的,并非某厂商芯片的使用说明,某型号的芯片需要参照相关数据手册。

Flash的读、写、擦以及回写操作应为原子操作,执行原子操作时不应切换逻辑分区选择!

 

读取(包含回读)

o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 30h》

o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 31h》

o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 32h》

o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 35h》

•编程注意事项(包括回写编程):The Volume Select command may be issued prior to the 10h, 11h, or 15h command if the next command to this Volume is Change Row Address. After Volume Select command is issued to resume data input, the host shall wait tCCS before issuing Change Row Address command. o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》

o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》

o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》

o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》

o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》

o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》

o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》

o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》

o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》

• 擦除Flash命令:

o 《CMD: 60h》 《ADDR: Row》 《CMD: D0h》

o 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》

o 《CMD: 60h》 《ADDR: Row》 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》

2.4、制造工艺

制程相对CPU的小,一般在28nm左右

三、软件适配和文件系统

3.1、文件系统

此处以Linux为例。

Linux操作系统本身支持很多文件系统:ext系列(2~4)、cramfs、ubifs、jffs2、yaffs、yaffs2、等。

如果是发行版的linux,可以查看:/lib/modules/3.10.0-327.el7.x86_64/build/fs 目录下的文件夹,即可知道当前的linux支持的文件系统,同时该发行版支持的文件系统工具可以查看:ls /usr/sbin/ | grep mkfs。

如果是自行开发的linux内核,则在linux内核编译时,已由开发人员指定了内核支持的文件系统类型,(处理器架构非x86时)开启UBIFS选项如下图:

Linux下使用MTD工具管理Flash,其中支持在Flash上运行的文件系统有:cramfs、jffs、、ubifs等

Linux下文件系统的目录:

3.2、软件适配

Linux下适配NandFlash、NorFlash的分区信息时,通常是在设备树中配置mtd信息,以供linux启动后,用户层软件可以通过linux的ioctl实现对NandFlash或者NorFlash进行读写操作,来完成底层flash的数据替换等操作。

四、性能对比

各类型颗粒性能对比。

Nand和Nor特性参数对比。

  • 3
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式系统开发基础——基于ARM微处理器和Linux操作系统[滕英岩][习题解答] 目录第1章 嵌入式系统基础知识 1.1 嵌入式系统的特点及分类 1.1.1 嵌入式系统的特点 1.1.2 嵌入式系统的分类 1.2 嵌入式系统的软硬件结构 1.3 嵌入式微处理器ARM 1.3.1 ARM简述 1.3.2 ARM编程模型 1.3.3 ARM指令集 1.3.4 C语言和汇编语言的混合编程 1.4 嵌入式操作系统 1.5 基于ARM和Linux的嵌入式开发平台 习题 第2章 嵌入式交叉编译环境 2.1 嵌入式交叉编译环境简介 2.2 NFS服务 2.3 Samba服务 2.4 Windows和LJnux混合开发模式 2.4.1 VMware虚拟机设置共享 2.4.2 SSH客户端软件 2.4.3 Windows下的文本编辑工具 2.5 GCC编译器 2.5.1 GCC的编译过程 2.5.2 GCC的其他选项 2.6 GDB调试器 2.6.1 GDB基本使用方法 2.6.2 GDB基本命令 2.6.3 GDB典型实例 2.7 Make工具的使用 2.7.1 Makefile基础知识 2.7.2 Makefile应用 2.7.3 使用autotools自动生成Makefile文件 2.8 嵌入式交叉编译环境的搭建 2.8.1 嵌入式交叉编译环境的安装与配置 2.8.2 minicom和Windows XP超级终端的配置 习题 第3章 嵌入式开发环境的搭建 3.1 嵌入式开发环境概述 3.2 Flash程序烧写 3.3 BootLoader程序 3.3.1 BootLoader程序原理 3.3.2 几种流行的Linux BootLoader 3.3.3 S3C2410平台上的VIVI分析 3.4 内核的裁减和编译 3.4.1 内核的裁减 3.4.2 内核的编译 3.4.3 内核的烧写 3.5 根文件系统的构建 3.5.1 根文件系统 3.5.2 BusyBox工具介绍 3.5.3 根文件系统的构建过程 3.6 驱动程序原理与开发 3.6.1 驱动程序基本原理 3.6.2 Linux下字符型设备驱动管理 3.6.3 Linux下字符型设备驱动程序实例分析 习题 第4章 MiniGUI应用程序设计 4.1 嵌入式GUI概述 4.2 常用嵌入式GUI介绍 4.3 MiniGUI概述 4.4 MiniGUI的编译和安装 4.5 MiniGUI程序框架 4.6 MiniGUI编程基础 4.6.1 MiniGUI窗口 4.6.2 MiniGUI消息及消息队列 4.6.3 MiniGUI对话框 4.6.4 MiniGUI菜单 4.6.5 MiniGUI基本控件 4.7 MiniGUI综合实例 习题 第5章 嵌入式数据库 5.1 嵌入式数据库的特点 5.2 嵌入式数据库的应用 5.3 SQLite数据库 5.3.1 SQLite3的安装 5.3.2 SQLite3的命令 5.3.3 SQLite3的数据类型 5.3.4 SQLite3的API函数 5.3.5 SQLite3在MiniGUI中的应用 习题 第6章 Qt图形界面应用程序开发 6.1 Qt简介 6.1.1 Qt的历史 6.1.2 Qt中主要的类 6.1.3 信号和槽 6.1.4 Qt的帮助文档 6.1.5 Qt4的特点和优势 6.1.6 Qt4的安装与配置 6.1.7 Qt4程序结构及实例 6.2 Qt4 Designer的应用 6.2.1 Qt Designer的应用 6.2.2 Qt中的控件及对话框类 6.2.3 Qt应用程序实例——计算器 6.3 Qt4与数据库 6.3.1 Qt4与数据库的连接 6.3.2 执行SQL命令 6.3.3 SQL模型 6.3.4 Linux下中文输入 6.3.5 Qt4与SQLite3的应用程序实例 6.4 Qt/Embedded 6.4.1 Qt/Embedded的图形引擎实现 6.4.2 Qt/Embedded的事件驱动 6.4.3 Qt/Embedded的移植 6.4.4 VMware增加虚拟的硬盘 6.4.5 Qt/Embedded的安装 习题 参考文献
嵌入式系统设计师教程简介: 本书按照人事部、信息产业部全国计算机技术与软件专业技术资格(水平)考试要求编写,内容紧扣《嵌入式系统设计师考试大纲》。全书共6章,分别对嵌入式系统基础知识、嵌入式微处理器与接口设计、嵌入式软件与操作系统、嵌入式软件程序设计、嵌入式系统设计与维护等知识进行了详细的讲解,最后介绍了一个典型的嵌入式系统设计案例。 本书内容丰富,结构合理,概念清晰。既可作为全国计算机技术与软件专业技术资格(水平)考试中嵌入式系统设计师级别的考试用书,供有关考生学习使用,也可以作为本科生嵌入式系统相关课程教材或培训用书使用。 作者简介: 目录: 第1章 嵌入式系统基础知识 1.1 嵌入式系统的定义和组成 1.1.1 嵌入式系统的定义 1.1.2 嵌入式系统发展概述 1.1.3 嵌入式系统的组成 1.1.4 实时系统 1.2 嵌入式微处理器体系结构 1.2.1 冯·诺依曼与哈佛结构 1.2.2 CISC与RISC 1.2.3 流水线技术 1.2.4 信息存储的字节顺序 1.3 嵌入式系统的硬件基础 1.3.1 组合逻辑电路基础 1.3.2 时序逻辑电路 1.3.3 总线电路及信号驱动 1.3.4 电平转换电路 1.3.5 可编程逻辑器件基础 1.4 嵌入式系统中信息表示与运算基础 1.4.1 进位计数制与转换 1.4.2 计算机中数的表示 1.4.3 非数值数据编码 1.4.4 差错控制编码 1.5 嵌入式系统的性能评价 1.5.1 度量项目 1.5.2 评价方法 1.5.3 评估嵌入式系统处理器的主要指标 第2章 嵌入式微处理器与接口知识 2.1 嵌入式微处理器的结构和类型 2.1.1 嵌入式微处理器的分类 2.1.2 典型8位微处理器的结构和特点 2.1.3 典型16位微处理器的结构和特点 2.1.4 典型32位微处理器的结构和特点 2.1.5 DSP处理器的结构和特点 2.1.6 多核处理器的结构和特点 2.2 嵌入式系统的存储体系 2.2.1 存储器系统概述 2.2.2 嵌入式系统存储设备分类 2.2.3 ROM的种类与选型 2.2.4 Flash:Memory的种类与选型 2.2.5 RAM的种类与选型 2.2.6 外部存储器的种类与选型 2.3 嵌入式系统输入输出设备 2.3.1 嵌入式系统常用输入/输出设备概述 2.3.2 GPIO原理与结构 2.3.3 A/D接口基本原理与结构 2.3.4 D/A接口基本原理与结构 2.3.5 键盘接口基本原理与结构 2.3.6 显示接口基本原理与结构 2.3.7 触摸屏接口基本原理与结构 2.3.8 音频接口基本原理与结构 2.4 嵌入式系统总线接口 2.5 嵌入式系统网络接口 2.6 嵌入式系统电源 2.7电子电路设计基础 第3章 嵌入式系统软件及操作系统知识 第4章 嵌入式软件程序设计 第5章 嵌入式系统开发与维护知识 第6章 嵌入式系统设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值