Linux文件系统的移植-JFFS2

JFFS2是JFFS的后继者,由Red Hat重新改写而成。JFFS2的全名为JournallingFlash File System Version 2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。

除了提供具有断电可靠性的日志结构文件系统,JFFS2还会在它管理的MTD设备上实现“损耗平衡”和“数据压缩”等特性。

JFFS2 功能如下:

Ø  支持NAND Flash。

Ø  硬连结(Hardlinks),这是JFFS 碍于文件格式所无法支援的功能。

Ø  压缩,有三种算法:zlib, rubin 以及 rtime.

Ø  更佳的效能。

缺点:

Ø  JFFS2挂载时需要扫描整块Flash,来确定节点的合法性以及建立必要的数据结构,这使得JFFS2挂载时间比较长。

Ø  JFFS2是将节点信息保存在内在中的,使得它所占用的内存量和节点数目成正比。

Ø  JFFS2是通过随机方式来实现磨损平衡的,它不能保证磨损平衡的确定性。

Ø JFFS2没有write-back机制,不能将资料暂存于缓存(cache),以致于flash I/O的动作频繁。

移植环境:

Ubuntu 16.04-64

u-boot.bin

目标板:AT91SAM9x25

交叉编译器 arm-none-linux-gnueabi-gcc 4.4.3

内核的支持

也就是说您的内核必须支持jffs2。

zlib的编译

解压zlib-1.2.11.tar.gz并进入zlib-1.2.11配置编译安装

$ tar zxf zlib-1.2..tar.gz

$ cd zlib-1.2.

$ ./configure

$ make

$ make install

MTD工具编译

解压mtd-snapshot-20050519.tar.bz2 并进入mtd/util编译安装

$ tar xvf  mtd-snapshot-.tar.bz2
$ cd mtd/util
$ make
$ make install

这样我们的系统里就有了mkfs.jffs2这个工具了,可以自行检查一下。

 

Jffs2文件系统镜像制作

mkfs.jffs2 -r fsmount -orootfs_new.jffs2 -e 0x20000 --pad=0x800000 -n

ü  -r选项指定输入的文件和目录路径,不指定则为当前路径

ü  -e, --eraseblock=SIZE,设定擦除块大小为SIZE,缺省为64KB,如果你使用的擦除块与MTD设备的实际擦除块大小不一致,则JFFS2表现不会很好,如果SIZE设置小于4096,则假定单位为KB。

ü  -p, --pad[=SIZE],用16進制來表示所要輸出檔案的大小,也就是root.jffs2 很重要的是, 為了不浪費flash空間, 這個值最好符合flash driver所規劃的區塊大小。如果不足则使用0xff来填充补满。

JFFS2文件系统的移植的更多相关文章

  1. 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

  2. JFFS2 文件系统及新特性介绍

    简介: JFFS2 是一个开放源码的项目(www.infradead.org). 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用.这篇文章首先分析了在闪存上使用 JFFS2 的必 ...

  3. jffs2文件系统制作

    内核:                linux-3.0 uboot:             2010.09 开发板:             fl2440 交叉编译器:         2011. ...

  4. 从零开始制作jffs2文件系统

    JFFS2 是一个开放源码的项目(www.infradead.org). 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用. 1.       安装mkfs工具 MTD主页:htt ...

  5. 已有 JFFs2文件系统的修改

    项目应用中,对于前人留下的JFFS2的文件,有时候我们需要修改,但是苦于没有源文件,实际操作很多时候无所适从.每次支持生产之后再进行人为的升级.这样费时费力,也给生产人员增加了负担. 为了解决这个问题 ...

  6. hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .

    一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx. ...

  7. hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决这个问题 .

    一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"文件夹下,您能够看到一个 Hi3531_SDK_Vx ...

  8. Busybox文件系统的移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y fsc100开发板 交叉编译器:arm-cortex_a8-linux-gnueabi-gcc busybox-1.17. ...

  9. Linux3.4内核 Yaffs2文件系统的移植

    作者:李老师,华清远见嵌入式学院讲师. [实验目的] Yaffs2文件系统是嵌入式系统中常用到的一种文件系统,是也是移植Android所必须的.通过向FS_S5PC100平台移植Yaffs文件系统,了 ...

随机推荐

  1. Linux之虚拟机网络配置

    一般安装完虚拟机后,VMware会为虚拟机在网络连接配置为“NAT模式(N):用于共享主机的IP地址”. 这种模式下虚拟机会共享主机的网络环境,主机可以访问外网那么虚拟机可以,主机可以(哪怕是拨VPN ...

  2. 跳跳棋(9018_1563)(BZOJ_2144)

    题目: Hzwer的跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 某一天,黄金大神和cjy用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.他们要 ...

  3. Centos 6.5 安装python3.6

    废话不多说,直接上步骤 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2rc1.tgz 进入 https://www.python.o ...

  4. nyoj_2:括号配对问题

    模拟栈的操作,很基础的一道题 题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=2 #include<stdio.h> #inc ...

  5. 图像处理与matlab实例之图像平滑(一)

    一.何为图像噪声?噪声是妨碍人的感觉器官所接受信源信息理解的因素,是不可预测只能用概率统计方法认识的随机误差. 举个例子: 从这个图中,我们可以观察到噪声的特点:1>位置随机 2>大小不规 ...

  6. Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装

    Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装 >>>>>> ...

  7. (转)java中/r与/n还有/r/n的区别

    场景:在学习spring实战,以及工作中进行写文件时候,经常遇到java中的换行问题,发现有的书上的介绍和实际使用并不一致.现在才算是搞清楚! 通过文本对比,断言应该返回正确的结果!但是事与愿违,最终 ...

  8. Objectiv-C UIKit基础 NSLayoutConstraint的使用(VFL实现)

    利用VFL可视化语言 (简单的抛砖引玉) 构建3个View 橙色和绿色左中右间隔20 上间隔40 高为200 蓝色在橙色内(0,0)处 宽高为橙色的一半 实现效果如下 由于atutosize和auto ...

  9. Cocoapods最新安装教程

    一.CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm.随着 iOS 开发者的增多,业界也出现了为 iOS 程序提 ...

  10. 【SqlServer系列】集合运算

    1   概述 已发布[SqlServer系列]文章如下: [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlS ...