u-boot中支持jffs2的分析

/增加相应的环境变量值

define CONFIG_EXTRA_ENV_SETTINGS \

“netdev=eth2\0” \

“ethact=FCC2 ETHERNET\0” \

“consoledev=ttyS0\0” \

“ramdiskaddr=d00000\0” \

“ramdiskfile=ramdisk.img\0” \

“updatefile=”MK_STR(CONFIG_UPDATEFILE)”\0” \

“mtdids=” MTDIDS_DEFAULT “\0” \

“mtdparts=” MTDPARTS_DEFAULT “\0” \

“partition=nor1,0\0” \

“mtddevnum=0\0” \

“mtddevname=system-1\0” \

“fdtaddr=”MK_STR(CONFIG_FDTADDR)”\0” \

“fdtfile=” MK_STR(CONFIG_FDTFILE) “\0”

安装mkfs.jffs2命令工具方法

方法一、http://www.linux-mtd.infradead.org/

1.获取mtd-utils-1.1.0.tar.bz2压缩包

2.解压后,make (若编译不通过则进行根据错误提示判断是否执行第三步)

3.yum install lzo-devel

4.再make

5.将mkfs.jffs、mkfs.jffs2复制到/usr/sbin/目录下即可

方法二、在宿主机上(fedora系统)运行 yum install mtd-utils

命令使用实例:

mkfs.jffs2 -b -n -s 0x1000 -e 0x20000 -p 0x03200000 -d rootfs/ -o jffs2.img

说明:

根据目标板cpu支持的模式选择 -l(小端) -b(大端) —-这个很重要,不然u-boot识别不出来

页大小0x1000 4k

块大小0x20000 128k

jffs2分区总空间0x03200000即50M,生成的jffs2.img并没有一下子分配50M

-p, –pad[=SIZE] Pad output to SIZE bytes with 0xFF. If SIZE is

not specified, the output is padded to the end of

the final erase block

-r, -d, –root=DIR Build file system from directory DIR (default: cwd)

-s, –pagesize=SIZE Use page size (max data node size) SIZE (default: 4KiB)

-e, –eraseblock=SIZE Use erase block size SIZE (default: 64KiB)

-c, –cleanmarker=SIZE Size of cleanmarker (default 12)

-m, –compr-mode=MODE Select compression mode (default: priortiry)

-x, –disable-compressor=COMPRESSOR_NAME

Disable a compressor

-X, –enable-compressor=COMPRESSOR_NAME

Enable a compressor

-y, –compressor-priority=PRIORITY:COMPRESSOR_NAME

Set the priority of a compressor

-L, –list-compressors Show the list of the avaiable compressors

-t, –test-compression Call decompress and compare with the original (for test)

-n, –no-cleanmarkers Dont add a cleanmarker to every eraseblock

-o, –output=FILE Output to FILE (default: stdout)

-l, –little-endian Create a little-endian filesystem

-b, –big-endian Create a big-endian filesystem

-D, –devtable=FILE Use the named FILE as a device table file

-f, –faketime Change all file times to 0 for regression testing

-q, –squash Squash permissions and owners making all files be owned by root

-U, –squash-uids Squash owners making all files be owned by root

-P, –squash-perms Squash permissions on all files

–with-xattr stuff all xattr entries into image

–with-selinux stuff only SELinux Labels into jffs2 image

–with-posix-acl stuff only POSIX ACL entries into jffs2 image

-h, –help Display this help text

-v, –verbose Verbose operation

-V, –version Display version information

-i, –incremental=FILE Parse FILE and generate appendage output for it

其他jffs2相关信息:

在linux的PC上挂载jffs2根文件系统映像

因为jffs2是构建于MTD设备上的文件系统,所以无法通过loop设备来挂载,但是可以通过mtdram设备来挂载。mtdram是在用RAM实现的MTD设备,可以通过mtdblock设备来访问。使用mtdram设备很简单,只要加载mtdram和mtdblock两个内核模块即可。这两个内核模块一般的linux内核发行版都有编译好的,直接用modprobe命令加载。

下面是具体步骤:

(1).加载mtdblock内核模块

modprobe mtdblock

(2).加载mtdram内核模块,将该设备的大小指定为jffs2根文件系统映像的大小,块擦除大小(即flash的块大小)指定为制作该jffs2根文件系统时“-e”参数指定的大小,缺省为64KB。下面两个参数的单位都是KB。

modprobe mtdram total_size=5120 erase_size=256

(3).这时将出现MTD设备/dev/mtdblock0,使用dd命令将jffs2根文件系统拷贝到/dev/mtdblock0设备中。

dd if=jffs2.img of=/dev/mtdblock0

(4).将保存了jffs2根文件系统的MTD设备挂载到指定的目录上。

mount -t jffs2 /dev/mtdblock0 /mnt/mtd

这之后就可以到/mnt/mtd目录查看、修改挂载的jffs2根文件系统了,修改后的jffs2根文件系统可以通过dd命令拷贝为一个jffs2的映像文件

u-boot启动信息片段

ZN=> ls

Scanning JFFS2 FS: . done.

-rwx—— 8094 Sun Oct 16 07:30:56 2011 mpc8541cds.dtb

-rwx—— 31457344 Sun Oct 16 07:30:56 2011 ramdisk.img

-rwx—— 1658805 Sun Oct 16 07:30:56 2011 uImage

ZN=> boot

JFFS2 loading uImage to 0x500000

JFFS2 load complete: 1658805 bytes loaded to 0x500000

JFFS2 loading mpc8541cds.dtb to 0xb00000

JFFS2 load complete: 8094 bytes loaded to 0xb00000

JFFS2 loading ramdisk.img to 0xd00000

JFFS2 load complete: 31457344 bytes loaded to 0xd00000

Booting kernel from Legacy Image at 00500000 …

Image Name: Linux-2.6.28.10

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 1658741 Bytes = 1.6 MB

Load Address: 00000000

Entry Point: 00000000

Verifying Checksum … OK

Loading init Ramdisk from Legacy Image at 00d00000 …

Image Name: PPC RAMDISK

Image Type: PowerPC Linux RAMDisk Image (gzip compressed)

Data Size: 31457280 Bytes = 30 MB

Load Address: 00000000

Entry Point: 00000000

Verifying Checksum … OK

Flattened Device Tree blob at 00b00000

Booting using the fdt blob at 0xb00000

Uncompressing Kernel Image … OK

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:u-boot中支持jffs2的分析 https://www.yhzz.com.cn/a/22116.html

上一篇 2023-08-21 09:57:31
下一篇 2023-08-21 10:45:52

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。