制作userdata分区的镜像(Ubuntu主机)
安装需要的工具
sudo apt install mtd-utils
制作镜像(JFFS2)
mkfs.jffs2 -r <源目录> -o <输出镜像名> -e <擦除块大小> -p -n参数解析:
-r, --root=DIR:指定要打包的源目录(例如你的根文件系统目录)13。-o, --output=FILE:指定生成的 JFFS2 镜像文件名13。-e, --eraseblock=SIZE:指定擦除块大小。必须与你的 Flash 硬件一致(例如 64KB 对应 0x10000)。如果不匹配,挂载时就会报错13。-p, --pad[=SIZE]:用 0xFF 填充输出文件到指定大小。如果不加此参数,镜像末尾到擦除块边界之间的空间可能包含脏数据,导致内核扫描时报 Magic bitmask not found 错误16。-l, --little-endian: 小端-b, --big-endian: 大端
举例:mkfs.jffs2 -r H2 -o xvideo.jffs2 -e 0x10000 --little-endian
将制作好的文件放到tftp路径下
烧写镜像
设置分区参数
新增userdata分区存放我们的镜像文件
set bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:512K(boot),3072K(kernel),5632K(rootfs),7168K(userdata) coherent_pool=4M'saveenv
下载镜像
tftp 0x82000000 xvideo.jffs2
挂载
sf probe 0
擦除
sf erase 0x900000 0x700000
烧写
sf write 0x82000000 0x900000 ${filesize}
如果没有按0xFF固定填充的,最好按filesize写入
或者可以自己指定大小
启动内核,挂载
查看当前的FLASH分区
cat /proc/mtd
新建挂载点
mkdir /userdata
挂载
mount -t jffs2 /dev/mtdblock3 /userdata
查看挂载点下文件是否正常
ls -l /userdata
如果报错,排查分区数据是否正确
dd if=/dev/mtdblock3 bs=1 count=16 2>/dev/null | hexdump -C
正常开头是这样,JFFS的标准开头 0x8519
00000000 85 19 03 20 0c 00 00 00 b1 b0 1e e4 85 19 01 e0
查看当前挂载的所有路径
mount
评论已关闭