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; /* 芯片 ...
随机推荐
- C++中的异常安全性【转】
原文写的非常好,来自这里 一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源:2.不允许破坏数据. 我们先通过两个反面的例子开始. 第一个是造成资源泄漏的例子.一个类Type ...
- linux 设置pip 镜像 Pip Warning:–trusted-host 问题解决方案
pip升级到7.0以后,在使用http镜像进行包安装及升级的时候往往会有如下提示: Collecting beautifulsoup4The repository located at mirrors ...
- 求组合数 C++程序
一 递归求组合数 设函数为void comb(int m,int k)为找出从自然数1.2.... .m中任取k个数的所有组合. 分析:当组合的第一个数字选定时,其后的数字是从余下的m-1个数中 ...
- H.264 White Paper学习笔记(二)帧内预测
为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色.而进行视频编码,目的就是利用这个相关性,来进 ...
- vue 项目里正确地引用 jquery
一.NPM安装的jQuery 使用vue-cli构建的vue项目,需要修改的是build/webpack.base.conf.js 1.添加引入webpack,后面的plugins那里需要 const ...
- 预编译 ASP.NET 网站以进行部署
预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microso ...
- python nose测试框架全面介绍八---接口测试中非法参数的断言
在测接口时,会有这样的场景,输入非法的参数,校验返回的错误码及错误内容 通常做法为发请求,将错误的返回结果拿出,再进行对比匹配:但存在一个问题,需要再写错误返回分析函数,不能与之前正常发请求的函数共用 ...
- 在python pydev中使用todo标注任务
在做自动化测试时,有部分代码因需求未定或界面需要更改,代码不做修改或更新,这里就需要用到TODO功能. 在PyCharm中TODO功能很详细,但在pydev中怎么用呢.看了文档后,截图如下: 1.设置 ...
- mousedown\mouseup\click事件关系
背景分析: 如果用户在一个元素上点击,那么最少三个事件会被触发,事件发生顺序: 1.mousedown,当用户在这个元素上按下鼠标键的时候 2.mouseup,当用户在这个元素上松开鼠标键的时候 3. ...
- OSI互联数据包封装与解封装过程
当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. .当一个高层的数据包到达传输层,由于tel ...