mkfs.jffs2 -s 0x1000 -e 0x10000 --pad=0x19F0000 -d output/target/ -o jffs2.bin
总空间 32M -1M-64K -4M
即可生成 rootfs.jffs2
Mkfs.jffs2各参数的意义如下:
-d:指定要做成image的目录名。
-o:指定输出image的文件名。
-s:扇区大小 4096
-e:每一块要擦除的block size,默认是64KB.要注意,不同的flash, 其block size会不一样,三星的K9F2G08U0A的block size为0x20000(从其datasheet里可以找到)。在没有加-e选项是,启动会出现以下错误:at91sam user.warn kernel: Empty flash at 0x00f0fffc ends at 0x00f10000。因此,若有类似的错误,加上-e选项,并配置nandflash的块大小,即可消除。
--pad(-p):用16进制来表示所要输出文件的大小,也就是fs.jffs2的大小,如果实际大小不足此设定的大小,则用0xFF补足。也可以不用此选项,生成的文件系统的大小跟本身大小一致,暂时还不知道有和妙用,但是加上后会少出现很多错误。rootfs的总长度
用如下命令mkfs.jffs2 –h。
总空间是16M-1M-64K-4M=0xAF0000mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img
页大小0x100 256字节
块大小0x10000 64k
jffs2分区总空间0xAF0000
jffs2.img是生成的文件系统镜像。
最后将uboot,dtb,kernel,rootfs打包成一个系统镜像,命令如下;
dd if=/dev/zero of=flashimg.bin bs=16M count=1
dd if=../ubootmainline/u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc
dd if=../zero41y/linux-zero-4.10.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc
dd if=../zero41y/linux-zero-4.10.y/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc
dd if=../zero_imager/jffs2/jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc
第一步:生成一个空文件,大小是16MB
第二步:将uboot添加到文件开头
第三步:将dtb放到1M偏移处
第四步:将kernel放到1M+64K偏移处
第五步:将rootfs放到1M+64K+4M偏移处
偏移大小是seek,单位是KB。
执行完毕后生成镜像文件flashimg.bin
荔枝派Zero 用户指南
https://licheezero.readthedocs.io/zh/latest/index.html
荔枝派Zero 指南