ARM平台建立JFFS2根文件系统

开发板:TQ2440

内核版本:2.6.32

Nand flash:K9F2G08U0A

本文将对JFFS2文件系统的编译和烧写做简单记录,本文的内容建立在如下三个基础上:

1.  完成使用Busybox编译出所需要的工具。

2.  完成添加根文件系统所需的目录和配置文件。

3.  开发平台上有mkfs.jffs2工具(ubuntu自带该工具)


第一步:配置内核

选择JFFS2文件系统:



禁止ECC功能,根据参考资料2,JFFS2会采用自己的ECC算法,因此无需开启硬件ECC功能。


第二步:编译文件系统

使用如下命令:

mkfs.jffs2  -s 0x800 -e 0x20000 --pad=0x800000 -l -n -d ./myrootfs -o jffs2.bin

其中,

  -s 和 -e 分别为nand flash的页大小和块大小,开发板所使用的nandflash为K9F2G08U0A。

  查看手册可知其大小,


  页大小=0x800 = 2048Byte = 2KB,

  块大小=0x20000=131072Byte = 128KB。

  -l 表示使用小端模式..

  -n 表示不实用cleanmarkers,如果不添加该参数会有如下类似的警告:

  CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0

  --pad 用于填充空白区,填充内容为0XFF,如果产生的文件小于0x800000,将填满至0x800000。也可以直接使用-p参数。

  -d 表示文件系统所在的位置。

  -o 表示生成的目标文件的名字。

执行上述命令后,我们将得到编译好的JFFS2根文件系统。


第三步:修改Uboot的内核命令行

此步的目的是告诉内核根文件系统的类型为jffs2。

setenv bootargs noinitrd root=/dev/mtdblock3 console=ttySAC0 init=/linuxrc rootfstype=jffs2 


第四步: 烧写JFFS2文件系统至nand flash 中

首先,看下我的分区表:

[root@yj423 /root]#cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00800000 00020000 "mtdram test device"
mtd1: 00040000 00020000 "Uboot"
mtd2: 00300000 00020000 "Kernel"
mtd3: 0fb00000 00020000 "filesystem"
[root@yj423 /root]#cat /proc/partitions
major minor  #blocks  name

  31        0       8192 mtdblock0
  31        1        256 mtdblock1
  31        2       3072 mtdblock2
  31        3     257024 mtdblock3


mtdblock3 为文件系统所在的分区,起始地址为0x500000,长度为0xfb00000。

所以第三步的root参数为mtdblock3,请留意!

开始烧写,请注意烧写的起始地址和长度。

tftp 0x31000000 jffs2.bin
nand erase 0x500000 0x0FB00000
nand write.jffs2 0x31000000 0x500000 0x800000

0x500000 为mtdblock3分区的起始地址,0x800000为jffs2.bin的文件大小,该值在tftp传送成功时会显示出来。


最后,来看下内核成功挂载JFFS2文件系统时的输出

......

VFS: Mounted root (jffs2 filesystem) on device 31:3.
Freeing init memory: 156K
eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[root@yj423 /root]#


PS: 如果挂载根文件系统后有各种各样报错请阅读参考资料2和3.

参考资料:

1. http://www.eetop.cn/blog/html/98/510998-20964.html

2. http://hi.baidu.com/rinehart/item/e1e885111f2415f89c778a3e

3. http://blog.csdn.net/hens007/article/details/7312550



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值