【猫盘系列】猫盘根文件系统和升级开发手册

1. Buildroot编译

1.1 正常rootfs的编译

cd /data/mp/buildroot
make mp_rootfs_defconfig
make -j 4

如果要全新编译一次buildroot,只要执行make clean就行了,不要执行make distclean;因为make distclean会把dl删除了,dl目录保存下载的各种软件包,这样就会重新下载各种软件包,很浪费时间,有些软件包因为国内网络环境的问题,还不好下载;在这个buildroot工程中把dl软链接到dl_bk,dl_bk存放实际的各种软件包。 完成编译后,生成的根文件系统为:/data/mp/buildroot/output/images/ rootfs.tar,这个在后续生成updata.zip时会用到。

1.2 用于recovery的rootfs编译

cd /data/mp/buildroot-recovery
make mp_recovery_defconfig
make -j 4

完成编译后,生成的根文件系统为:/data/mp/buildroot-recovery/output/images/ rootfs.cpio.lz4,这个在后续生成recovery的内核Image时会用到。

1.3 用于usb recovery的rootfs编译

cd /data/mp/buildroot-usb-recovery
make mp_usb_recovery_defconfig
make -j 4

完成编译后,生成的根文件系统为:/data/mp/buildroot-usb-recovery/output/images/ rootfs.cpio.lz4,这个在后续生成usb recovery的内核Image时会用到。

2. 内核编译

内核编译前要先保证/data/mp/buildroot已经完成编译了,因为内核编译的交叉编译工具链采用的buildroot生成的交叉编译工具链;

2.1 正常内核的编译

正常内核就是最终烧写到emmc上的kernel分区的Image镜像。

cd /data/mp/kernel
export PATH=$PATH:/data/mp/buildroot/output/host/bin
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel mvebu_v8_lsp_defconfig
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel CROSS_COMPILE=aarch64-buildroot-linux-gnu- -j 4

完成编译后,生成的内核镜像为:/data/mp/kernel/arch/arm64/boot/Image

2.2 用于recovery的内核的编译

用于recovery的内核就是最终烧写到emmc上的recovery分区的Image镜像。

cd /data/mp/kernel-recovery
export PATH=$PATH:/data/mp/buildroot/output/host/bin
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel-recovery mvebu_v8_lsp_recovery_defconfig
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel-recovery CROSS_COMPILE=aarch64-buildroot-linux-gnu- -j 4

完成编译后,生成的内核镜像为:/data/mp/kernel-recovery/arch/arm64/boot/Image;由于该镜像会集成前面buildroot-recovery生成的rootfs.cpio.lz4作为ramdisk,所以buildroot-recovery要先于该内核完成编译。

2.3 用于usb recovery的内核的编译

用于usb recovery的内核就是放到U盘根目录Image镜像;该镜像可以用于当emmc上的recovery分区也损坏的情况下通过U盘进行对整个系统进行恢复。

cd /data/mp/kernel-usb-recovery
export PATH=$PATH:/data/mp/buildroot/output/host/bin
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel-usb-recovery mvebu_v8_lsp_usb_recovery_defconfig
make -C /data/mp/kernel-src ARCH=arm64 O=/data/mp/kernel-usb-recovery CROSS_COMPILE=aarch64-buildroot-linux-gnu- -j 4

完成编译后,生成的内核镜像为:/data/mp/kernel-usb-recovery/arch/arm64/boot/Image;由于该镜像会集成前面buildroot-usb-recovery生成的rootfs.cpio.lz4作为ramdisk,所以buildroot-usb-recovery要先于该内核完成编译。

3. Bootloader编译

cd /data/mp/u-boot
make ARCH=arm catdrive_mmc_defconfig
export PATH=$PATH:/data/mp/buildroot/output/host/bin
make ARCH=arm CROSS_COMPILE=aarch64-buildroot-linux-gnu- -j 4
export BL33=/data/mp/u-boot/u-boot.bin
export WTP=/data/mp/A3700_utils
export CROSS_CM3=/usr/bin/arm-linux-gnueabi-
cd /data/mp/atf-v1.5
make DEBUG=1 USE_COHERENT_MEM=0 MV_DDR_PATH=/data/mp/mv-ddr LOG_LEVEL=20 MARVELL_SECURE_BOOT=0 CLOCKSPRESET=CPU_1000_DDR_800  DDR_TOPOLOGY=2 BOOTDEV=EMMCNORM PARTNUM=1 PLAT=a3700 all fip CROSS_COMPILE=aarch64-buildroot-linux-gnu-

完成编译后,生成的内核镜像为:/data/mp/atf-v1.5/build/a3700/debug/ flash-image.bin; 该镜像可以通过U盘在Uboot下进行升级:

进入uboot的命令行

bubt flash-image.bin mmc usb
reset
env default -f -a
env save
reset

4. OTA升级包制作

OTA升级包制作工具所在的目录为:/data/mp/buildroot/utils/ota-tools;通过该目录下的make-ota工具进行制作。

4.1 准备升级包所需要的各种文件

4.1.1 更新内核所需要的相关文件

cp -rf /data/mp/kernel/arch/arm64/boot/Image /data/mp/buildroot/utils/ota-tools/src-obj/kernel/
cp -rf /data/mp/kernel/arch/arm64/boot/dts/marvell/armada-3720-catdrive.dtb /data/mp/buildroot/utils/ota-tools/src-obj/kernel/

4.1.2 更新rootfs所需要的相关文件

cp -rf /data/mp/buildroot/output/images/rootfs.tar /data/mp/buildroot/utils/ota-tools/src-obj/

4.1.3 更新recovery所需要的相关文件

cp -rf /data/mp/kernel-recovery/arch/arm64/boot/Image /data/mp/buildroot/utils/ota-tools/src-obj/recovery/
cp -rf /data/mp/kernel-recovery/arch/arm64/boot/dts/marvell/armada-3720-catdrive.dtb /data/mp/buildroot/utils/ota-tools/src-obj/recovery/

4.1.4 更新app所需要的相关文件

把app分区所需要的各种文件复制到/data/mp/buildroot/utils/ota-tools/src-obj/app/;建议可执行程序放到/data/mp/buildroot/utils/ota-tools/src-obj/app/bin,动态库文件放到/data/mp/buildroot/utils/ota-tools/src-obj/app/lib。

4.2 制作各种OTA升级包

make-ota工具能够制作如下几种类型的OTA升级包:recovery分区升级全量包、kernel分区升级全量包、rootfs分区全量包、app分区全量包、app分区增加量包、factory分区全量包、data分区格式化升级包和emmc重新分区升级包。制作好的OTA升级包路径:/data/mp/buildroot/utils/ota-tools/out/update.zip。 制作OTA升级包前需要确认相关文件已经复制到指定目录了。

4.2.1 制作recovery分区升级全量包

cd /data/mp/buildroot/utils/ota-tools
./make-ota -u

4.2.2 制作kernel分区升级全量包

cd /data/mp/buildroot/utils/ota-tools
./make-ota -k

4.2.3 制作rootfs分区升级全量包

cd /data/mp/buildroot/utils/ota-tools
./make-ota -r

4.2.4 制作app分区升级全量包

cd /data/mp/buildroot/utils/ota-tools
./make-ota -a

4.2.5 制作app分区升级增量包

cd /data/mp/buildroot/utils/ota-tools
./make-ota -i

4.2.6 制作backup分区升级全量包(恢复出厂设置用)

cd /data/mp/buildroot/utils/ota-tools
./make-ota -f

4.2.7 制作具有格式化data分区功能的升级包

cd /data/mp/buildroot/utils/ota-tools ./make-ota -w 4.2.8 制作具有分区功能的升级包 该功能只适合通过U盘上的recovery进行升级(2.3章节生成的Image),不能用emmc上的recovery进行升级;make-ota -p这个命令就可以生成具有分区功能的升级包。 cd /data/mp/buildroot/utils/ota-tools ./make-ota -p 如果要修改各个分区大小可以直接编辑make-ota这个文件,如图4-1所示;分区大小的单位是MB。

 

后续省略。。。自行下载观看。。。

资源下载
下载价格2 资源币
声明:
本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有!
若您需要使用非免费的软件、源码或服务,请购买正版授权并合法使用!
本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
本站所有资源均是收集而来,资源均不包含技术支持和安装服务!
原文链接:https://www.iwzyw.com/2020/05/13/110.html,转载请注明出处。
0
分享海报

评论0

请先

显示验证码
没有账号?注册  忘记密码?