Flash分类
Flash全称flash memory,也就是平时说的“闪存”。经常被用在嵌入式领域,比如手机、平台、电脑主板等等。绝大部分的U盘、SDCard、MMC卡、TF卡等移动存储设备也都是使用 Flash 作为存储介质
Flash Memory主要可以分为NOR Flash、NAND Flash、eMMC、UFS几种类型。
- NOR flash 支持片上执行,可以在上面直接运行代码,软件驱动比NAND简单,一般小容量的用NOR型,因为小容量NOR读取速度快。NOR Flash需要很长的时间进行抹写,但是它提供完整的寻址与数据总线,并允许随机存取存储器上的任何区域,这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码,例如电脑的BIOS或机上盒(Set-top Box)的固件。NOR Flash可以忍受一万到一百万次抹写循环,它同时也是早期的可移除式快闪存储媒体的基础。
- NAND Flash:NAND Flash式东芝在1989年的国际固态电路研讨会(ISSCC)上发表的, 要在NandFlash上面读写数据,要外部加主控和电路设计。。NAND Flash具有较快的抹写时间, 而且每个存储单元的面积也较小,这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍。然而NAND Flash 的I/O接口并没有随机存取外部地址总线,它必须以区块性的方式进行读取,NAND Flash典型的区块大小是数百至数千比特。
因为多数微处理器与微控制器要求字节等级的随机存取,所以NAND Flash不适合取代那些用以装载程序的ROM。从这样的角度看来,NAND Flash比较像光盘、硬盘这类的次级存储设备。NAND Flash非常适合用于储存卡之类的大量存储设备。第一款创建在NAND Flash基础上的可移除式存储媒体是SmartMedia,此后许多存储媒体也跟着采用NAND Flash,包括MultiMediaCard、Secure Digital、Memory Stick与xD卡。 - eMMC MMC (Embedded Multi Media Card) 为MMC协会所订立的,eMMC 相当于 NandFlash+主控IC ,对外的接口协议与SD、TF卡一样,主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。eMMC由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备(Nand Flash)及主控制器,所有都在一个小型的BGA 封装。接口速度高达每秒52MBytes,eMMC具有快速、可升级的性能。同时其接口电压可以是 1.8v 或者是 3.3v。
- UFS (Universal Flash Storage),说起UFS,必须要讲讲它的前辈eMMC。eMMC是一种嵌入式多媒体卡,是由JEDEC协会所制定的一种嵌入式非易失性存储器。它采用并行传输技术,读写必须分开执行,虽然仅提供单路读写功能,但仍具备体积小、高度集成与低复杂度的优势。目前最新的 eMMC 5.1 标准,连续读取速度约为 250MB/s。
UFS最早是由JEDEC在2011年推出的,采用全新的串行传输技术,可同时读写操作。第一代 UFS 由于与当时 eMMC 标准速度差异不大,且成本较为高昂,因此并未成功普及。直至 2014 年 UFS 2.0 标准问世后,连续读取速度约达 800MB/s,UFS 才成为 Android 旗舰手机逐渐采用的标准配置。目前最新的 UFS 3.1 标准,连续读取速度约为 1,700MB/s。这时,UFS的传输速度已远远领先于eMMC。
FTL
FTL原名“Flash Translation Layer”,工作在bare flash(比如nand flash,nor flash,spi flash等,)和文件系统中间,模拟bare flash为普通的块设备,文件系统挂载同硬盘一样,无需担心底层是什么硬件介质。因此,对于FTL一般集成了坏块管理,动态均衡算法,线性地址映射等算法。FTL一般作为software运行在cpu侧,比如yaffs、ubifs文件系统都实现了FTL的功能,对于eMMC和UFS类型的存储器,其本身实现了FTL的功能。
MTD
Memory Technology Device,内存技术设备,是linux内核为了统一管理bare flash,而设计开发的技术,其将对于上述这些flash的操作进行抽象,为上层文件系统比如,jiffs、yaffs、yaffs2、ubifs提供标准接口。MTD相当于PC中的磁盘分区技术,将一整块flash按照配置(比如内核的dts文件中的分区表)进行分区,然后,对各个分区进行文件系统的格式化,这样,这个分区就可以承载相应的文件或者BootLoader、kernel等image了。需要注意的是,MTD不能管理eMMC、UFS这些设备。
文件系统
针对于不同的flash,需要选择不同的文件系统,对于NOR flash、NAND flash这些bare flash来说,本身没有FEL,需要文件系统实现FEL相关的功能,
比如jiffs、yaffs、ubifs。
针对于mmc emmc ufs SD等flash,硬件存储设备集成FTL算法,因此操作系统可以直接挂载ext4 ext3 FAT32等PC的文件系统。