【Linux】嵌入式·NAND Flash
Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
Flash的内部存储是金属-氧化层-半导体-场效晶体管(MOSFET),里面有个悬浮门(Floating Gate),是真正存储数据的单元。
数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少,取决于图中的控制门(Control gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth 来表示。
1.对于NAND Flash的写入(编程),就是控制Control Gate去充电(对Control Gate加压),使得悬浮门存储的电荷够多,超过阈值Vth,就表示0。
2.对于NAND Flash的擦除(Erase),就是对悬浮门放电,低于阀值Vth,就表示1。
NAND Flash的架构:
如上图所示,这是一个8Gb 50nm的SLC颗粒内部架构。
每个page有33,792个单元,每个单元代表1bit(SLC),所以每个page就是4096Byte + 128Byte(SA)。
每个Block有64个page组成,所以每个Block容量为262,114Byte + 8192Byte (SA)
page是NAND Flash上最小的读/写单位(一个page上的单元共享一根字符线Word line),块是最小的擦除单位(。不同厂牌不同型号颗粒有不同的page和block大小。
下图是个8Gb 50nm的SLC颗粒。
4KB的页尺寸,256KB的块尺寸。图中4096字节用于存储数据,另外128字节用来做管理和ECC用。
SLC 和 MLC 区别:
SLC主要针对军工,企业级应用,有着高速写入,低出错率,长耐久度特性。
MLC主要针对消费级应用,有着2倍容量于SLC,低成本,适合USB闪盘,手机,数码相机等储存卡。如今也被用于消费级固态硬盘上。
由上图可以看到,MLC和SLC虽然使用相同的电压值,但是电压之间的阀值被分成了4份,直接影响了性能和稳定性。主要有下面几点:
1.相邻的存储电荷的悬浮门间会互相干扰,造成悬浮门里的电荷不稳定出现bit错误,MLC由于阀值相比SLC更接近,造成出错几率更大。
2.MLC读写性能降低,写入更是降低50%以上,因为需要确认充入电荷的量,这需要更精确的处理。SLC只有0和1,也就是有和没有,而MLC会有00,01,10,11 4个状态,在充入电荷后还要去判断是哪个状态,自然就慢了。
3.因为上面说的,造成额外的读写压力,所以功耗明显增大。
4.因为额外的读写压力,造成闪存的写入耐久度和数据保存期受到影响。
eMLC和eSLC的耐久度提升是用牺牲了数据保存期和增加读写时间换来的。(也就是性能会更差点)
【Linux】嵌入式·NAND Flash相关推荐
- nand flash 经典 全面 ------如何编写Linux下Nand Flash驱动
Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开 ...
- 如何编写linux下nand flash驱动
http://www.cnblogs.com/sankye/articles/1638852.html 向作者Sankye致敬 [编写驱动之前要了解的知识] 1. 硬件特性: [Flash ...
- 文件系统加密 嵌入式Linux,基于Linux的NAND Flash加密文件系统的设计与实现
摘要: NAND Flash以其大容量,低成本,低功耗,抗震荡在非易失存储介质中占据重要地位,已经被广泛应用于消费型电子,航空设备等领域.但是由于NANDFlash的物理特性不同于磁盘存储设备,需要为 ...
- linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理
1.3.4. Nand flash驱动工作原理 在介绍具体如何写Nand Flash驱动之前,我们先要了解,大概的整个系统,和Nand Flash相关的部分的驱动工作流程,这样,对于后面的驱动实现,才 ...
- linux dd nand,Flash基础入门之采用dd 工具做Nand Flash磨损均衡
本文主要向大家介绍了Flash基础入门之采用dd 工具做Nand Flash磨损均衡,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助. 文章采用dd工具,将/dev/zero 作为 ...
- NUC972 Linux学习 NAND FLASH 制作系统
设备:NUC972DF61YC 使用的虚拟机环境:官方提供的NUC972DF61YC - Nuvoton 板载NAND FLASH,前期主要学习怎么uboot.ubootspl.uimage.env烧 ...
- linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析
随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单 ...
- linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...
Nand Flash 是一个存储芯片.本文引用地址:http://www.eepw.com.cn/article/201801/374606.htm 那么:这样的操作很理"读地址A的数据,把 ...
- nand flash 个人觉得写得比较好的文章
[详解]如何编写Linux下Nand Flash驱动 版本:v2.2.1 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flas ...
最新文章
- .NET 4.5 基类库中的新增功能
- centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法
- LeetCode Wiggle Subsequence(动态规划)
- Prima Cartoonizer中文版
- union all动态表_深入窥探动态链接
- 一起学习 网络规划设计师
- vagrant使用_使用Vagrant的初学者指南
- 【微信开发】-- 企业转账到用户
- Swift 后端开发
- activity调用fragment的方法_Fragment 的现在以及未来
- SpringBoot使用WEB进阶
- 微星刀锋 无法进入bios_微星MPG X570 GAMING EDGE WIFI刀锋板主板BIOS设置u盘启动教程...
- 时间戳转化为YYYY-MM-DD-XX-MM-UU日期格式
- 兼具教育耐心和AI匠心,看「网易有道词典笔2.0」的变革者角色
- matlab怎么带根号积分,如何用matlab画带根号的方程曲线图。曲线=[0.33-0.16x^2+0.12x]^(1/2)。...
- c语言房屋中介管理系统代码,房屋中介管理系统简易源代码
- Google Web Accelerator
- Facebook:Novi数字钱包“已经准备好进入市场”
- NBIOT透传模块在智能公寓锁上的使用2
- 阿拉丁2022 年度小程序白皮书发布,8 亿 DAU 再现小程序繁荣生态
热门文章
- Kepware读取研华ADAM4017总结
- java 项目 预警_java开发中的常见代码黄线预警
- moxa uport1150串口驱动下载地址及安装方式
- 首届“全国人工智能大赛”正式启动,作为大赛支撑平台,和鲸科技助力年度顶级AI赛事
- 【sas】tabulate报表
- PageHelper 自定义总数查询方案
- 关于http与https的区别之处
- 计算机上在网络密码,电脑上怎么使用无线网络密码
- 树莓派无法连接远程计算机,如何从树莓派远程连接到Windows PC
- 解决OpenOffice文件预览转换xlsx文件出现com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported