资讯
HOME
资讯
正文内容
nand flash 读写流程 UBIFS 根文件系统制作
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

UBIFS 根文件系统制作

1. UBIFS 文件系统简介

传统的flash文件系统如jffs2, yaffs2等是工作在MTD 设备上,而UBIFS则建立在UBI卷层之上,UBI卷层工作在MTD设备层之上,也可以说,UBIFS涉及三个子系统:

MTD 子系统,提供对flash芯片Raw的访问接口。MTD子系统提供了MTD device的概念,比如/dev/mtdX(字符设备)和/dev/mtdblockX(块设备);l UBI Subsystem, 它工作在MTD设备之上,提供了UBI逻辑卷,对上层屏蔽了一些直接使用MTD设备需要处理的问题,如wear-leveling(磨损平衡)和volume management(坏块管理)功能等;l UBIFS 文件系统,工作于UBI之上。它提供文件的open, read, write等操作;

系统之间的层级关系

2.根文件系统镜像文件制作

l mkfs.ubifs 参数说明

-x lzo 指定使用lzo压缩方法,默认是lzo, 还支持zlib, zlib的压缩率高,但是lzo压缩解压速度快。

-m 2048 Nand Flash的最小读写单元,一般为page size.

-r ./rootfs 指定根文件系统目录树的路径

-o rootfs.ubifs 指定制作出的根文件系统镜像文件名

-e 126976 指定LEB(Logical Erase Block, 逻辑擦除块)大小。Nandflash 读写单位为页,擦除单位为块,以ESMT F59L1G81MB 为例:一个PEB(Physical EraseBlockSize, 物理擦除块)大小就是2048*64=131072,-e 的算法是物理擦除块大小-2*页大小,这里就是131072-2*2048=126976(注:这里的擦除块大小都不包含oob, 有包含子页和不包含子页之分。 )

-c xxx 指定该分区最大逻辑擦除块数量,该值随着根文件系统分区的大小和该分区的坏块数调整。

l ubinize 参数说明

-o rootfs-ubifs.bin 指定ubinize处理后输出的image文件名,该文件可以由u-boot的nand write命令直接烧录;

-m 2048 指定minimum input/output unit 大小,为Nandflash的页大小;

-p 131072 指定物理擦除块大小:64 Pages * 2048 Byte/Page = 131072(不包含oob的大小)

-s 512/2048 指定sub-page-szie大小,如果有sub-page, 则配置为512;如果没有sub-page,则配置为2048

n 关于配置文件说明:

image=rootfs-ubifs.img 指定mkfs.ubifs 制作成的根文件系统镜像文件路径;

vol_id=0 指定根文件系统树的卷标为0,u-boot的bootargs参数需要根据它来设置;

vol_size=xxx 指定该UBI逻辑卷的大小,该值计算公式一般为 逻辑擦除块大小*逻辑擦除块个数。该值一般不用写,默认值是image大小。写了这个作用是帮助检查image是否超过了分区限制,制作时候就会提示,否则mount会出错。逻辑擦除块个数的值是经过计算的最大值(前面mkfs.ubifs -c 指定的值),不过volume flag autoresize 参数会自适应大小,不会浪费空间,后面Linux 系统内核启动过程中可以看到这个现象。

vol_type=dynamic

vol_name=xxx 指定UBI Volume的名称,u-boot的bootargs参数需要根据它来设置;

vol_flags=autoresize UBI Subsystem 在系统启动时自动调整逻辑擦除块的个数;

经过ubinize 命令处理过后的根文件系统镜像rootfs-ubifs.bin就可以直接在u-boot使用

nand write 命令烧录到相应的根文件系统分区上去了。

关于Minim Flash input/output, sub-pages, UBI Header的说明:

http://www.linux-mtd.infradead.org/doc/ubi.html#L_min_io_unit

「收藏」Flash闪存颗粒和工艺知识深度解析

[收藏] Flash闪存颗粒和工艺知识深度解析

原创: Hardy 架构师技术联盟 5天前

Wafer即晶圆,是半导体组件“晶片”或“芯片”的基材,从沙子里面高温拉伸生长出来的高纯度硅晶体柱(Crystal Ingot)上切下来的圆形薄片称为“晶圆”。采用精密“光罩”通过感光制程得到所需的“光阻”,再对硅材进行精密的蚀刻凹槽,继续以金属真空蒸着制程,于是在各自独立的“晶粒”(Die)上完成其各种微型组件及微细线路。对晶圆背面则还需另行蒸着上黄金层,以做为晶粒固着(Die Attach) 于脚架上的用途。

以上流程称为Wafer Fabrication。早期在小集成电路时代,每一个6吋的晶圆上制作数以千计的晶粒,现在次微米线宽的大型VLSI,每一个8吋的晶圆上也只能完成一两百个大型芯片。我们NAND Flash的Wafer,目前主要采用8寸和12寸晶圆,一片晶圆上也只能做出一两百颗NAND Flash芯片来。

NAND Flash Wafer

Wafer的制造虽动辄投资数百亿,但却是所有电子工业的基础。晶圆的原始材料是硅,而地壳表面有用之不竭的二氧化硅。二氧化硅矿石经由电弧炉提炼,盐酸氯化,并经蒸馏后,制成了高纯度的多晶硅,其纯度高达99.99%以上。晶圆制造厂再将此多晶硅融解,再在融液里种入籽晶,然后将其慢慢拉出,以形成圆柱状的单晶硅晶棒,由于硅晶棒是由一颗晶面取向确定的籽晶在熔融态的硅原料中逐渐生成,此过程称为“长晶”。硅晶棒再经过切段,滚磨,切片,倒角,抛光,激光刻,封装后,即成为集成电路工厂的基本原料——硅晶圆片,这就是“晶圆”。

下图是NAND Flash生产简要流程:

Die 就是芯片未封装前的晶粒,是从硅晶圆(Wafer)上用激光切割而成的小片(Die)。每一个Die就是一个独立的功能芯片,它无数个晶体管电路组成,但最终将被作为一个单位而被封装起来成为我们常见的闪存颗粒,CPU等常见芯片。

什么是ink Die

在晶圆制造过程中,会对Wafer中的每个Die进行严格测试,通过测试的Die,就是Good Die,未通过测试的即为Ink Die。这个测试过程完成后,会出一张Mapping图,在Mapping里面会用颜色标记出不良的Die,故称Ink Die。

Flash芯片封装分类

目前NAND Flash封装方式多采取TSOP、FBGA与LGA等方式,由于受到终端电子产品转向轻薄短小的趋势影响,因而缩小体积与低成本的封装方式成为NAND Flash封装发展的主流趋势。

TSOP: (Thin smaller outline package )封装技术,为目前最广泛使用于NAND Flash的封装技术,首先先在芯片的周围做出引脚,采用SMT技术(表面安装技术)直接附着在PCB板的表面。TSOP封装时,寄生参数减小,因而适合高频的相关应用,操作方便,可靠性与成品率高,同时具有价格便宜等优点,因此于目前得到了极为广泛的应用。

BGA: (Ball Grid Array也称为锡球数组封装或锡脚封装体 )封装方式,主要应用于计算机的内存、主机板芯片组等大规模集成电路的封装领域,FBGA 封装技术的特点在于虽然导线数增多,但导线间距并不小,因而提升了组装良率,虽然功率增加,但FBGA能够大幅改善电热性能,使重量减少,信号传输顺利,提升了可靠性。

采用FBGA新技术封装的内存,可以使所有计算机中的内存在体积不变的情况下容量提升数倍,与TSOP相比,具有更小的体积与更好的散热性能,FBGA封装技术使每平方英寸的储存量有很大的提升,体积却只有TSOP封装的三分之一,与传统TSOP封装模式相比,FBGA封装方式有加快传输速度并提供有效的散热途径,FBGA封装除了具备极佳的电气性能与散热效果外,也提供内存极佳的稳定性与更多未来应用的扩充性。

LGA: (Land Grid Array ) 触点陈列封装,亦即在底面制作有数组状态坦电极触点的封装,装配时插入插座即可,现有227 触点(1.27mm中心距)和447 触点(2.54mm 中心距)的陶瓷LGA,应用于高速逻辑 LSI 电路,由于引线的阻电抗小,对高速LSI 相当适用的,但由于插座制作复杂,成本较高,普及率较低,但未来需求可望逐渐增加。

Flash芯片封装叠Die(Stack Die)

由于NAND Flash单颗Die的容量有限,为了实现更高的容量,需要在一个封装片内堆叠几个Die。在Wire Bond的时候,用金线互连。

目前单颗Die的容量最高的为Micron公司的MLC 4GB,目前最先进的堆叠技术可以叠8层,因此理论上MLC单颗封装片可以做到32GB。Micron公司计划在09年Q4推出此容量的封装片。

Flash芯片TSOP封装和BGA封装的内部结构

TSOP封装只需要一个引脚框架,把NAND FLASH Die的Pad打线(Wire Bond)连接到引进框架上面即可。封装技术简单,成本低。但其打线方式只能从两边打线,因此stack die就比较困难。

BGA封装与TSOP封装不同在于其采用了Substrate,用电路板来对引脚走线,因此可以进行四面打线,这样在进行叠die的时候,就变得更加容易操作。但成本会比TSOP要高。

Flash芯片封装的尺寸,一些封装方式尺寸比较:

NAND Flash出货有两种产品样式:

一种是Wafer,即晶圆出货,这种产品样式一般客户采购回去需要再测试和COB封装等,这种客户多为闪存卡大客户。

一种是封装片出货,NAND Flash目前最普遍采用的是48TSOP1的封装方式,现货市场均为TSOP的封装片。

NAND Flash按工艺可分为SLC与MLC

SLC英文全称(Single Level Cell)即单层式单元储存。SLC技术特点是在浮置闸极与源极之中的氧化薄膜更薄,在写入数据时通过对浮置闸极的电荷加电压,然后透过源极,即可将所储存的电荷消除,通过这样的方式,便可储存1个信息单元,这种技术能提供快速的程序编程与读取,不过此技术受限于Silicon efficiency的问题,必须要用较先进的流程强化技术,才能向上提升SLC制程技术。

MLC英文全称(Multi Level Cell)即多层式单元储存。Intel在1997年9月最先开发成功MLC,其作用是将两个单位的信息存入一个Floating Gate(闪存存储单元中存放电荷的部分),然后利用不同电位(Level)的电荷,通过内存储存的电压控制精准读写。MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。SLC架构是0和1两个值,而MLC架构可以一次储存4个以上的值。因此,MLC架构可以有比较高的储存密度。

TLC英文全称(Triple Level Cell)即一个单元可以存储单元可以存储3bit,因此需要8个等级的电位进行编码解码才能实现。其实TLC是属于MLC的一种。

SLC和MLC的基本特性表

Flash坏块的形成

NAND Flash的存储原理是,在写入(Program)的时候利用F-N隧道效应(Tunnel Injection隧道注入)的方法使浮栅充电,即注入电荷;在擦除(Erase)的时候也是是利用F-N隧道效应(Tunnel Release隧道释放)将浮栅上的电荷释放。

隧道注入和隧道释放的产生都需要十几伏的瞬间高电压条件,这对浮栅上下的氧化层会造成一定损伤,因此这样重复的操作(P/E Cycle)是有限的。SLC大概是100K次,MLC大概是10K次。达到读写寿命极限的时候存储单元就会出现失效,然后就会造成数据块擦除失效,以及写入失效,于是就会被标记起来,作为坏块,并将这个标记信息存放在Spare Area里面,后续操作这个Block时,需要Check一下这个信息。

Flash固有坏块

由于制造工艺的原因,通常普通的NAND FLASH从出厂开始就有坏块了,一般在2‰以下。一般芯片原厂都会在出厂时都会将坏块第一个page的spare area的第6个byte标记为不等于0xff的值。

NAND Flash的存储单元是有使用寿命的

NAND Flash的存储原理是,在写入(Program)的时候利用F-N隧道效应(Tunnel Injection隧道注入)的方法使浮栅充电,即注入电荷;在擦除(Erase)的时候也是是利用F-N隧道效应(Tunnel Release隧道释放)将浮栅上的电荷释放。隧道注入和隧道释放的产生都需要20V左右瞬间高电压条件,这对浮栅上下的氧化层会造成一定损伤,因此这样重复的操作(P/E Cycle)是有限的。SLC大概是100K次,MLC大概是10K次。

三星估算的SSD硬盘的寿命

如果每天对SSD写入4.8GB的数据,假设SSD总容量为16GB,那么,你至少需要3.34天才能对整个SSD的每个单元擦写一次;如果此SSD为擦写次数为100K的SLC单元,那么,你至少需要3.34×100K天才能使这个SSD完全失效;3.34×100K天=913年,因此16G的SSD可以使用913年 。那么,如果是MLC的话,也至少可以使用91.3年。

晶圆制程工艺发展历史

芯片制程工艺是指晶圆内部晶体管之间的连线间距。按技术述语来说,也就是指芯片上最基本功能单元门电路和门电路间连线的宽度。

主流厂商的晶圆制程工艺以及下一代制程工艺的情况,如下表。

芯片制造工艺在1995年以后,从0.5微米、0.35微米、0.25微米、0.18微米、0.15微米、0.13微米、90纳米、75纳米、65纳米一直发展到目前最新的34纳米。

一步步印证了摩尔定律的神奇。以90纳米制造工艺为例,此时门电路间的连线宽度为90纳米。我们知道,1微米相当于1/60头发丝大小,经过计算我们可以算出,0.045微米(45纳米)相当于1/1333头发丝大小。可别小看这1/1333头发丝大小,这微小的连线宽度决定了芯片的实际性能,芯片生产厂商为此不遗余力地减小晶体管间的连线宽度,以提高在单位面积上所集成的晶体管数量。采用34纳米制造工艺之后,与65纳米工艺相比,绝对不是简单地令连线宽度减少了31纳米,而是芯片制造工艺上的一个质的飞跃。

目前最先实现34nm工艺的是Intel和Micron联合投资的IM,此技术被最先应用在了NAND FLASH上面,可见NAND FLASH的制程工艺跳跃是所有IC中最快的。

晶圆技术的发展都是受生产力驱动,必须向更小的制程间距和更大的晶圆尺寸发展。制程从2.0um、0.5um、0.18um、90nm一直到目前的34nm,晶圆尺寸从最初的5英寸发展到目前的12英寸,每次更迭都是一次巨大的技术跳跃,凝聚了人类科技的结晶,也一次次印证了摩尔定律的神奇。

晶圆尺寸的大约每9年切换一次。而晶圆制程由最初的几年更迭一次,到目前的基本上每年都能更迭一次。

更多内容和“闪存技术、产品和发展趋势全面解析”全面的闪存技术电子书,请点击“了解更多”查阅。

相关问答

stm32读保护后怎样读出某个 flash 内容?

假设你要读取的数据位于Flash地址0x08001000处,使用如下代码读取:数据为8位:charval=*((volatilechar*)(0x08001000));数据为16位:sh...

嵌入式 Flash读写 操作该如何进行设计?

Flash存储芯片的通讯方式以SPI居多,在实现flash读写时就是要实现SPI的通讯协议,与EEPROM不同的是,SPI在操作时是按照PAGE页进行整页擦除写入的,这一点需要注...F...

Nand Flash 和Nor Flash 有什么区别?求解?

1、写入/擦除操作的时间不同【nandflash】:擦除NAND器件以8~32KB的块进行,执行同一写入/擦除的操作时间为4ms【norflash】:擦除NOR器件是以64~128KB的块.....

NAND Flash 和Nor Flash 到底有什么区别?

NANDFlash和NorFlash是两种不同类型的闪存存储器。区别如下:1.读取速度不同NorFlash在小容量数据存储、读取速度和随机访问方面表现优异,读取速度比NAN...

基于dsp的spi驱动 flash流程 是怎样的?

1、根据单片机手册编写SPI接口驱动,确保SPI接口可以正常通信,只要按照手册说明操作控制几个寄存器即可,比较简单;2、根据你选用的Flash编写FLASH读写驱动,...

单片机 flash 读取速度是多少?

速度是100MHz的工作频率,因为C8051F120就达到了100MHz的工作频率,没有加延迟就以这么高的速度运行。但像STM32,在48MHz有1周期的延迟,72MHz有2周期延迟,所...

nand flash 与ram大小区别?

RAM有两大类,一种称为静态RAM(StaticRAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的...R...

arm内部数据怎么保存到 flash ?

ARM处理器内部的数据可以通过特定的指令或编程接口保存到外部的Flash存储器中。以下是一些可能的方法:使用ARMCortex-M系列处理器的STM(StoretoFlash)指...

fpga怎么从 flash 启动?

在FPGA中,从Flash启动通常需要以下步骤:将FPGA的配置文件生成并存储在Flash芯片中。在FPGA启动时,读取Flash中的配置文件,并将其加载到FPGA的配置寄存器中...

flash 课件制作教程?

2、然后用选择工具调整文字的位置。3、在这里我们需要两个按钮,一个用来设置跳转到下一页,一个用来设置跳转到上一页,为了方便,我们从flash的公用库里面调...3...

 死猪肉  文明争霸 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部