海思sdk提示的制作根文件系统的办法如下:
(6)制作文件系统镜像:
在osdrv/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。
spi flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到spi flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。下面以块大小为64KB为例:
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
或者
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x40000 -o osdrv/pub/rootfs_glibc_256k.jffs2
我的uboot启动提示:
U-Boot 2010.06 (Jan 24 2018 - 18:01:22)
Check spi flash controller v350... Found
Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"MX25L128XX"
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
16384 KiB hi_sfc at 0:0 is now current device
根据海思SDK在制作根文件系统时,出现下面的提示:
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv# osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
bash: osdrv/pub/bin/pc/mkfs.jffs2: No such file or directory
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# ls
mkfs.cramfs mkfs.jffs2 mkimage mksquashfs mkyaffs2imageroot@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# ./mkfs.jffs2
bash: ./mkfs.jffs2: No such file or directory
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# file mkfs.jffs2
mkfs.jffs2: ELF 32-bitLSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.0, not stripped
解决办法:
先安装一下32位兼容包:(我的系统是64bit的ubuntu16.04.3)
sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
The program 'mkfs.jffs2' is currently not installed. You can install it by typing:
apt install mtd-utils
尝试以上还是不行,再次安装下面的两个:
apt install mtd-utils
apt-get install man-db
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0# osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0# cd osdrv/pub/
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub# ls
bin image_uclibc rootfs rootfs_uclibc rootfs_uclibc_256k.jffs2 rootfs_uclibc.tgz
到此,rootfs_uclibc_256k.jffs2 制作成功!