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的更多相关文章

  1. UBIFS文件系统介绍

    1.  引言 UBIFS,Unsorted Block Image File System,无排序区块图像文件系统.它是用于固态硬盘存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一 ...

  2. linux kernel系列四:嵌入式系统中的文件系统以及MTD

    本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Bloc ...

  3. UBIFS - UBI File-System

    参考:http://www.linux-mtd.infradead.org/doc/ubifs.html#L_raw_vs_ftl UBIFS - UBI File-System Table of c ...

  4. UBIFS介绍 - MTD网站

    转:http://blog.csdn.net/kickxxx/article/details/6583463 目录(?)[-] Big red note Overview Scalabity Writ ...

  5. eMMC基础技术11:flash memory

    [转]http://www.wowotech.net/basic_tech/367.html 0.前言 eMMC 是 Flash Memory 的一类,在详细介绍 eMMC 之前,先简单介绍一下 Fl ...

  6. Flash Memory 简介【转】

    本文转载自:https://linux.codingbelief.com/zh/storage/emmc/ Flash Memory 是一种非易失性的存储器.在嵌入式系统中通常用于存放系统.应用和数据 ...

  7. kernel下nand flash的文件系统总结

    1.FLASH转换层(FTL) EXt2/EXT3/EXT4文件系统可以通过FTL实现对flash的支持,因为FTL可以将闪存flash模拟成磁盘结构. 在ext2文件系统的基础上上,为了保证数据的一 ...

  8. 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 ...

  9. FTL方面综述

    FTL 1.百度百科 http://baike.baidu.com/link?url=HJ94Rz2Td83V8OW-6dD_h_P8CZb9VFR6HznPDopY_SFdfXDaMriYcBm1X ...

随机推荐

  1. Java高级架构师(一)第30节:把应用部署到Linux服务器上

  2. 使用ReadOnlyCollection创建只读集合

    转载:http://www.cnblogs.com/abatei/archive/2008/02/04/1064102.html 使用泛型创建只读集合 问题 您希望类中的一个集合里的信息可以被外界访问 ...

  3. delphi杀进程的两种方式

    delphi杀进程的两种方式 uint unit Tlhelp32; 第一种:比较简单,根据标题,找到窗口,再找到进程,杀死进程 procedure KillProgram(WindowTitle : ...

  4. C#远程获取图片文件流的方法【很通用】

    因为之前写的代码,也能获取到图片流信息,但是会是凌乱的线条,后百度得这个方法,必须记录一下 C# try { WebRequest myrequest = WebRequest.Create(Http ...

  5. Android 多线程之HandlerThread 完全详解

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  6. Asp.Net Core 缓存的使用(译)

    原文:http://www.binaryintellect.net/articles/a7d9edfd-1f86-45f8-a668-64cc86d8e248.aspx环境:Visual Studio ...

  7. 一起來玩鳥 Starling Framework(3)Button!

    週末夜來介紹個簡單的DisplayObject就好.不論是在電腦上或行動裝置上,跟使用者互動次數最多的,大概就是按鈕了.因此,Starling有個Button類別,來做出這個常用的互動元件. 同樣是因 ...

  8. Python图像处理(8):边缘检測

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 此前已经得到了单个区域植株图像,接下来似乎应该尝试对这些区域进行分类识别.通过外形和叶脉进行植物种 ...

  9. 2017.12.07 postgresql使用with recursive完成迭代查询

    1.表结构 2.需求 查询某条记录的所有父亲节点,或者所有孩子节点. 3.向上查询(查询所有父亲节点) 注意,这里返回的记录包含自己. sql如下: WITH RECURSIVE res AS ( S ...

  10. fastestmirror不能使用

    fastestmirror不能使用,fastestmirror是yum的一个加速插件 处理办法就是禁用这个插件 方法两种 第一种 vi /etc/yum/pluginconf.d/fastestmir ...