目的:将相关镜像文件打包,实际使用时即可通过脚本进行烧写,不需手动逐条输入命令做跟去格式化等操作
两种方式:方式 A 与 方式 B,两种方式的优缺点比较:
方式 A:优点:烧写简单,实际脚本中主要是一条 dd 命令烧写,烧写速度慢 缺点:第一次制作过程较繁琐,空间利用与烧写速率成反比
方式 B:优点 : 烧写简单,烧写速率快,空间利用最优 缺点:第一次制作过程较繁琐,编写烧写脚本内容稍微复杂些
方式 A:通过 dd 命令烧写
1、文件准备
2、制作 boot.img 文件
3、制作 rootfs.ext3 文件
4、编写镜像打包脚本 mkupdate_bk.sh
两种方式:方式 A 与 方式 B,两种方式的优缺点比较:
方式 A:优点:烧写简单,实际脚本中主要是一条 dd 命令烧写,烧写速度慢 缺点:第一次制作过程较繁琐,空间利用与烧写速率成反比
方式 B:优点 : 烧写简单,烧写速率快,空间利用最优 缺点:第一次制作过程较繁琐,编写烧写脚本内容稍微复杂些
方式 A:通过 dd 命令烧写
1、文件准备
u-boot.s32 | 通过编译 u-boot 源码得到 |
Image、 s32v234-evb.dtb | 通过编译 linux 源码得到 |
cse.bin | 该文件需要联系【ADAS】技术人员获取 |
rootfs | /s32v234_sdk/os/build_content/v234_linux_build/s32v234evb/rootfs |
2、制作 boot.img 文件
sudo dd if=/dev/zero of=boot.img bs=512 count=522240 conv=fsync // 生成 255M 大小的 boot.img 文件 sudo mkfs.vfat -n boot boot.img //格式化成 vfat 文件系统,命名为 boot sudo mkdir tmpfs //在当前目录下创建目录 tmpfs sudo mount -t vfat boot.img tmpfs/ -o loop //将 boot.img 挂载在 tmpfs 目录下 cp -r Image s32v234-evb.dtb cse.bin tmpfs/ //将文件拷贝在 tmpfs/ 下 sudo umount tmpfs //取消挂载,至此,boot.img 文件制作完成 |
3、制作 rootfs.ext3 文件
sudo dd if=/dev/zero of=rootfs.ext3 bs=512 count=522240 conv=fsync // 生成 512M 大小的 rootfs.ext3 文件 sudo mkfs.ext3 -L rootfs rootfs.ext3 //格式化成 ext3 文件系统,命名为 rootfs sudo mkdir tmpfs //在当前目录下创建目录 tmpfs sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop //将 rootfs.ext3 挂载在 tmpfs 目录下 cp -r rootfs/* tmpfs/ //将文件拷贝在 tmpfs/ 下 sudo umount tmpfs //取消挂载,至此,rootfs.ext3 文件制作完成 |
4、编写镜像打包脚本 mkupdate_bk.sh
脚本功能:将相关文件打包成一个 *.img 镜像文件,输出在当前目录下 ,要求当前目录下已有以下文件:
u-boot.s32 |
boot.img |
rootfs.ext3 |
脚本内容如下:
5、烧写
方式 A : END
****************************************************************************************************************************************************************************************************************************************
方式 B:通过编写 flashImage 脚本进行烧写
1、制作 Image.ext3 文件
注意:该步骤实际上直接使用了方式 A 中所制作的 boot.img 文件, sizeof(Image.ext3) > sizeof(rootfs.ext3+boot.img+u-boot.s32)
2、使用 flashImage 脚本烧写
脚本功能:输入是 Image.ext3 ,实现烧写
脚本内容:
5、烧写
sudo dd if=s32v_emmc_181224.img of/dev/sdb bs=1024 count=1M conv=fsync |
方式 A : END
****************************************************************************************************************************************************************************************************************************************
方式 B:通过编写 flashImage 脚本进行烧写
1、制作 Image.ext3 文件
注意:该步骤实际上直接使用了方式 A 中所制作的 boot.img 文件, sizeof(Image.ext3) > sizeof(rootfs.ext3+boot.img+u-boot.s32)
sudo dd if=/dev/zero of=Image.ext3 bs=1K count=1M conv=fsync //生成 1G Image.ext3 文件 sudo mkfs.ext3 -L imagerootfs Image.ext3 //格式化成 ext3 文件系统 sudo mkdir -p tmpfs //创建文件夹 tmpfs sudo mount Image.ext3 tmpfs //将文件 Image.ext3 挂载在 tmpfs cp -rf rootfs/* tmpfs/ //拷贝文件系统中的所有文件至 Image.ext3 中 cp boot.img u-boot.s32 tmpfs/boot //将文件复制至 /tmpfs/boot 下 sudo unmount tmpfs //取消挂载 |
2、使用 flashImage 脚本烧写
脚本功能:输入是 Image.ext3 ,实现烧写
脚本内容:
3、执行脚本
sudo ./flashImage.sh Image.ext3 //执行脚本烧写程序, Image.ext3 作为参数输入 |
注意:本文针对的格式化后的 SD 卡或 EMMC,若是已经分区过后的有可能提示警告信息,具体原因请参考照脚本分析
【ADAS】 : BSP
评论
Kakera
2020年11月17日