整理资料三 SPI FLASH 系统文件

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=0xAF0000
mkfs.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 指南

https://www.kancloud.cn/lichee/lpi0/317714

发布了5 篇原创文章 · 获赞 2 · 访问量 5856

猜你喜欢

转载自blog.csdn.net/yytyu2017/article/details/98354249