raw flash vs FTL
1. 区别
raw flash devices: NAND, NOR, OneNAND, etc,其被作为MTD设备处理(既不是字符设备,也不是块设备)。
FTL device:Flash Translation layer device, MMC, eMMC, SD,不仅包含flash,还包含控制器,其被作为块设备处理。
FTL stands for "Flash Translation Layer" and it is software which emulates a block device on top of flash
hardware. At early days FTL ran on the host computer. For example, old PCMCIA flash devices were essentially
raw flash devices, and the PCMCIA standard defined the media storage format for them. So the host computer
had to run the FTL software driver which implemented PCMCIA FTL. However, nowadays FTL is usually firmware,
and it is run by the controller which is built into the storage device. For example, if you look inside an
USB flash drive, you'll find there a NAND chip (or several of them), and a micro-controller, which runs FTL
firmware. Some USB flash drives are known to have quite powerful ARM processors inside. Similarly, MMC,
eMMC, SD, SSD, and other FTL devices have a built-in controller which runs FTL firmware.
All FTL devices have an interface which provides block I/O access. Well, the interfaces are different and
they are defined by different specifications, e.g., MMC, eMMC, SD, USB mass storage, ATA, and so on. But all
of them provide block-based access to the device. By block-based access we mean that whole device is
represented as an linear array of (usually 512-byte) blocks. Each block may be read or written.

http://www.linux-mtd.infradead.org/doc/ubifs.html#L_raw_vs_ftl
2. 常用的文件系统ext2、FAT等不能用于MTD设备上(raw flash),可运行于FTL device上。
3. mtd设备对应的设备文件为/dev/mtd,FTL设备对应的设备文件可为/dev/mtdblock。
There is an extremely simple FTL layer in Linux MTD subsystem - mtdblock. It emulates block devices over MTD
devices. There is also an mtdblock_ro module which emulates read-only block devices. When you load this
module, it creates a block device for each MTD device in the system. The block devices are then accessible
via /dev/mtdblockX device nodes.
But in many cases using mtdblock is a very bad idea because what it basically does if you change any sector
of your mtdblockX device, it reads the whole corresponding eraseblock into the memory, erases the
eraseblock, changes the sector in RAM, and writes the whole eraseblock back. This is very straightforward.
If you have a power failure when the eraseblock is being erased, you lose all the block device sectors in
it. The flash will likely decay soon because you will wear few eraseblocks out - most probably those ones
which contain FAT/bitmap/inode table/etc.
Unfortunately it is a rather difficult task to create a good FTL layer and nobody still managed to implement
one for Linux. But now when we have UBI (see here) it is much easier to do it on top of UBI.
raw flash vs FTL的更多相关文章
- UBIFS文件系统介绍
1. 引言 UBIFS,Unsorted Block Image File System,无排序区块图像文件系统.它是用于固态硬盘存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一 ...
- linux kernel系列四:嵌入式系统中的文件系统以及MTD
本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Bloc ...
- UBIFS - UBI File-System
参考:http://www.linux-mtd.infradead.org/doc/ubifs.html#L_raw_vs_ftl UBIFS - UBI File-System Table of c ...
- UBIFS介绍 - MTD网站
转:http://blog.csdn.net/kickxxx/article/details/6583463 目录(?)[-] Big red note Overview Scalabity Writ ...
- eMMC基础技术11:flash memory
[转]http://www.wowotech.net/basic_tech/367.html 0.前言 eMMC 是 Flash Memory 的一类,在详细介绍 eMMC 之前,先简单介绍一下 Fl ...
- Flash Memory 简介【转】
本文转载自:https://linux.codingbelief.com/zh/storage/emmc/ Flash Memory 是一种非易失性的存储器.在嵌入式系统中通常用于存放系统.应用和数据 ...
- kernel下nand flash的文件系统总结
1.FLASH转换层(FTL) EXt2/EXT3/EXT4文件系统可以通过FTL实现对flash的支持,因为FTL可以将闪存flash模拟成磁盘结构. 在ext2文件系统的基础上上,为了保证数据的一 ...
- SDF:Software-Defined Flash for Web-Scale Internet Storage System
一.参考 http://www.csdn.net/article/a/2013-12-18/309280 http://gtstorageworld.blog.51cto.com/908359/126 ...
- FTL方面综述
FTL 1.百度百科 http://baike.baidu.com/link?url=HJ94Rz2Td83V8OW-6dD_h_P8CZb9VFR6HznPDopY_SFdfXDaMriYcBm1X ...
随机推荐
- BlockTransferService 实现
spark的block管理是通过BlockTransferService定义的方法从远端获取block.将block存储到远程节点.shuffleclient生成过程就会引入blockTransfer ...
- 【jQuery】jquery中 使用$('#parentUid').attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read property 'nodeType' of undefined
jquery中 使用$('#parentUid').attr(parentUid);报错jquery-1.11.3.min.js:5 Uncaught TypeError: Cannot read p ...
- webpack-dev-server最简单的应用
1.安装 npm install webpack-dev-server --save-dev 2.再exports后加多一个对象即可 devServer: { contentBase: ". ...
- 监控Coherence成员的加入和离开集群事件
对server事件的监控主要是实现MemberListener类,对Cache事件的监控主要通过MapListener 参考代码 package coherencetest; import com.t ...
- ubuntu ufw防火墙简易教程(转)
ufw是一个主机端的iptables类防火墙配置工具,比较容易上手.一般桌面应用使用ufw已经可以满足要求了. 安装方法 sudo apt-get install ufw 当然,这是有图形界面的(比较 ...
- cinemachine unity
scrips extending timeline Extending Timeline with your own playables Data Audio ----playable beh ...
- Java笔记5:单例模式
一.应用杨景 在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或少具有资源管理器的功能.每台计算机可以有若干个打印机,但只能有一个Printer ...
- 集合—ArrayList
ArrayList也叫作数组列表 public static void main(String[] args) { List list1 = new ArrayList<String>() ...
- 字符串去重(hashSet)
public static String deleteRepeat(String strn){ String s=strn; String[] array = s.sp ...
- [Parcel] Running TypeScript with parcel-bundler
TO get started with TypeScirpt quickly in your local computer is using parcel-bunlder: npm i -g parc ...