海思平台jffs2文件系统制作

先参考海思文档《Hi3519V101 Linux开发环境用户指南.pdf》文档中介绍了各种文件系统的制作命令。

 

在我们的板子中使用的是SPI NOR FLASH, 该flash 块大小为64K。

4.3.2 jffs2

jffs2 是 RedHat 的 David Woodhouse 在 jffs 基础上改进的文件系统,是用于微型嵌入式设备的原始闪存芯片的实际文件系统。jffs2 文件系统是日志结构化的可读写的文件系统。

jffs2 的优缺点如下:

# 优点

使用了压缩的文件格式。最重要的特性是可读写操作。

# 缺点

jffs2 文件系统挂载时需要扫描整个 jffs2 文件系统,因此当 jffs2 文件系统分区增大时,挂载时间也会相应的变长。使用 jffs2 格式可能带来少量的 Flash 空间的浪费。这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪费的空间大小大致是若干个数据段。jffs2 的另一缺点是当文件系统已满或接近满时,jffs2 运行速度会迅速降低。这是因为垃圾收集的问题。

加载 jffs2 文件系统时的步骤如下:

步骤 1. 扫描整个芯片,对日志节点进行校验,并且将日志节点全部装入内存缓存。

步骤 2. 对所有日志节点进行整理,抽取有效的节点并整理出文件目录信息。

步骤 3. 找出文件系统中无效节点并且将它们删除。

步骤 4. 最后整理内存中的信息,将加载到缓存中的无效节点释放

 

由此可以看出虽然这样能有效地提高系统的可靠性,但是在一定程度上降低了系统的速度。尤其对于较大的闪存芯片,加载过程会更慢。为了使内核支持 jffs2 文件系统,必须在编译内核时把 jffs2 的选项加入(我们发布的内核默认已经加入了支持)。在 make menuconfig 后,进入“File>systems”,选择“miscellaneous filesystems”,最后选中其中的“Journalling Flash File System v2 (JFFS2) support”选项(SDK 里面提供的内核默认已经选择了该文件系统的支持)。

jffs2 的制作方法为:

hisilicon$mkfs.jffs2 –d ./rootbox -l –e 0x20000 -o jffs2-root.img

 

其中,mkfs.jffs2 工具可以从互联网中下载,也可以在 SDK 包中找到。rootbox 为之前已经制作好的根文件系统。参数说明如表 4-2 所示。

表4-2 JFFS2 参数表

参数 说明

d 指定根文件系统

l little-endian 小端模式

e Flash 的块大小

o 输出映像文件

 

 

进入内核osdrv目录:

/home/xiaoxxxx.lu/hisi/hi3519/pan_v1.0.10/Hi3519V101_SDK_V1.0.1.0/osdrv

 

按照文档上面的命令,制作出来的文件系统

./tools/pc/jffs2_tool/mkfs.jffs2 -d /home/xiaoxxxx.lu/back_up/rootfs_mk/ -l  -e 0x20000 -o ./pub/rootfs_hi3519_64k.jffs2 --pad=0xA00000

 

由于按照他默认的 0x20000 制作出来的rootfs 出现了如下问题:

ode at 0x0000f568 with length 0x00000b20 would run over theend of the erase block

Perhaps the file system was created with the wrong erasesize?

jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at0x0000f56c: 0x0b20 instead

jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at0x0000f570: 0x74a8 instead

jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at0x0000f574: 0x001d instead

 

 

检查之后发现是制作的根文件系统时块大小设置错了,我们要修改mkfs.jffs2后-e的参数即可,例如本例,现在spi flash的块大小只有64k,而我制作文件系统之时设置成128k即0x20000,修改如下:

./tools/pc/jffs2_tool/mkfs.jffs2 -d /home/xiaoxxxx.lu/back_up/rootfs_ar0134/ -l  -e 0x10000 -o ./pub/ar0134_fs/rootfs_hi3519_64k.jffs2

 

-e 参数,扩展说明:

64K   对应    0x10000

128K  对应    0x20000

256K  对应    0x40000

 

生成的文件系统目录在 ./pub/ 下226_fs 区别就是home/ 下面的文件与ar0134 不一致,其他都一样的。

./tools/pc/jffs2_tool/mkfs.jffs2 -d /home/xiaoxxxx.lu/back_up/rootfs_imx226/ -l  -e 0x10000 -o ./pub/imx226_fs/rootfs_hi3519_64k.jffs2

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值