kernel下nand flash的文件系统总结


1、FLASH转换层(FTL)
EXt2/EXT3/EXT4文件系统可以通过FTL实现对flash的支持,因为FTL可以将闪存flash模拟成磁盘结构。
在ext2文件系统的基础上上,为了保证数据的一致性ext3文件系统增加了日志功能。
在ext3文件系统的基础上ext4文件系统增加了对大文件(T单位级的文件)的支持,另外对于每个目录下的文件个数没有了限制。
2、JFFS、JFFS2文件系统(链表结构,典型的日志文件系统)
书上是这样说的:
JFFS2 是一个日志结构(log-structured)的文件系统,它在闪存上顺序地存储包含数据和原数据(meta-data)的节点。 JFFS2 的日志结构存储方式使得它能对闪存进行 out-of-place 更新,而不是磁盘所采用的 in-place 更新方式。它提供的垃圾回收机制,使得我们不需要马上对擦写越界的块进行擦写,而只需要对其设置一个标志,标明为“脏”块。当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于 JFFS2 基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数据。因此, JFFS2 成为了目前 Flash 上应用最广泛的文件系统。
JFFS2 挂载时需要扫描整块 Flash 以确定节点的合法性以及建立必要的数据结构,这使得 JFFS2 挂载时间比较长。又由于 JFFS2 将节点信息保存在内存中,使得它所占用的内存量和节点数目成正比。再
者,由于 JFFS2 通过随机方式来实现磨损平衡,它不能保证磨损平衡的确定性 。
3、YAFFS、YAFFS2
YAFFS2 能够更好地支持大容量的 NAND Flash 芯片,而前者只针对页大小为 512 字节的 NAND 。
4、UBIFS(Unsorted Block Images File System)
UBI:是一种类似于LVM的逻辑卷管理层,主要实现wear-leaving和volume management功能。
UBIFS:这是基于UBI的FLASH日志文件系统。UBIFS并不直接工作于MTD之上而是工作于UBI卷之上。
涉及到三个子系统
1、MTD子系统,提供对flash芯片的访问接口,MTD子系统提供了MTDdevice的概念,可以被认为是裸的flash(raw flash,区别于带有FTL的flash或者SSD)
2、UBI subsystem,为flashdevice提供了wear-leaving和volume management功能。UBI工作在MTD设备之上,提供了UBI volume;UBI是MTD设备的高层表示,对上层屏蔽了一些直接使用MTD设备需要处理的问题,比如wear-leaving以及坏块管理
3、UBIFS文件系统,工作在UBI之上,其中坏块管理,磨损均衡,错误预测等功能有UBI子系统完成,UBIFS不予关心。
kernel下nand flash的文件系统总结的更多相关文章
- uboot下 Nand flash 启动 内核与根文件系统
u-boot版本: u-boot-2010.03_tekkamanninja修改的u-boot 1.将uboot通过j-link烧写到norflash,启动后 saveenv 将参数保存到 nandf ...
- 【驱动】linux系统下nand flash驱动程序框架
linux操作系统下nand flash驱动框架 当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层 ...
- 如何编写linux下nand flash驱动-4
2. 软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做 ...
- 15.1 linux操作系统下nand flash驱动框架2
当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备. 而写驱动,就是要构建硬件与操作系统之间 ...
- Linux 下 Nand Flash 驱动说明
注册 driver_register 通过 module_init(s3c2410_nand_init);注册 Nand Flash 驱动. 在 s3c2410_nand_init ()中通过 dri ...
- 如何编写linux下nand flash驱动-3
[读(read)操作过程详解] 以最简单的read操作为例,解释如何理解时序图,以及将时序图 中的要求,转化为代码. 解释时序图之前,让我们先要搞清楚,我们要做的事情:那就是,要从nand flash ...
- 如何编写linux下nand flash驱动-2
[Nand Flash引脚(Pin)的说明] 图3.Nand Flash引脚功能说明 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1. I/O0 ~ ...
- 如何编写linux下nand flash驱动-1
1. 硬件特性: [Flash的硬件实现机制] Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失 ...
- Linux 下 Nand Flash 驱动主要数据结构说明
s3c2410 专有数据结构 s3c2410_nand_set struct s3c2410_nand_set { int nr_chips; /* 芯片 ...
随机推荐
- linux-find【递归搜索文件名】
1 命令格式: $ find <指定目录> <指定条件> <指定动作> 最常见示例:查找文件名(忽略大小写) $find . -iname sqlquery.j ...
- 树莓派3b 串口通信初次尝试
准备工作: 1. 安装wiringPi 2. 修改config.txt sudo nano /boot/config.txt 在文件的末尾添加: dtoverlay=pi3-miniuart-bt 3 ...
- 【规范】alibaba编码规范阅读
一.编程规范 (一)命名规范 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 2.代码中的命名严禁使用评语与英文混合的方式,更不允许直接使用中文的方式 3.类名使用Uppe ...
- VS 2008 头文件库文件设置
在程序开发中,很多时候需要用到别人开发的工具包,如OpenCV和itk.一般而言,在vs2008中,很少使用源文件,大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll). 如果 ...
- YAML语法介绍
官网YAML: http://yaml.org/ http://yaml.org/xml 参考链接: http://www.ruanyifeng.com/blog/2016/07/yaml.html? ...
- 第三步 Cordova 3.0(及以上版本) 添加插件
1.使用命令生成项目 例:cordova create jy110 com.example.jy110 jy110 2.使用命令添加插件(如果报错,可能是网络问题,可以多试几次,直到成功) 例:cor ...
- sencha touch Container 监听超链接插件
有时候内容直接从后台获取,有可能包含超链接,打包成应用之后,点击会造成不好的后果,这样做能够用外部浏览器打开.需要Cordova支持 监听插件代码: /* *监听a标签,用外部浏览器打开链接 */ E ...
- Linux上VNC 启动和关闭常见问题
0, 重设密码 [root@yqrh5u2 ~]# vncpasswd Password: Verify: [root@yqrh5u2 ~]# 1, ...
- How arduino IDE works?
test.ino void setup() { pinMode(,OUTPUT); } void loop() { digitalWrite(,HIGH); delay(); digitalWrite ...
- python unittest框架中addCleanup函数详解
接上一篇doCleanups说明,这次介绍下另一个很好用的函数:addCleanup 还是老规矩,看官方文档说明: addCleanup(function, *args, **kwargs)¶ Add ...