基线:PTG2.4
详细的源码编译参考SemiDrive_V9_Quick_Start
我不太喜欢记编译的指令,所以写成脚本,思路供大家参考。
source v9_build_cmd.sh
#!/bin/bash
echo "请选择编译选项"
echo "1.清理 Linux 内核:bitbake -c cleansstate virtual/kernel"
echo "2.清理 rootfs:bitbake -c cleansstate core-image-base"
echo "3.清理 openssl:bitbake -c cleansstate openssl"
echo "4.编译 Linux 内核:bitbake virtual/kernel"
echo "5.编译 bootloader:bitbake lk"
echo "6.编译 safety:bitbake safety"
echo "7.编译 baremetal:bitbake baremetal"
echo "8.编译 rootfs:bitbake core-image-base"
echo "9.编译 全部清理"
echo "10.编译 全部编译"
echo "11.编译 打包 Flash"
echo "12.编译 打包 Emmc"
echo "13.编译 打包Flash&Emmc"
read -p "请输入编译指令:" cmd_num
echo "$cmd_num"
if [ "$cmd_num" = "1" ];then
bitbake -c cleansstate virtual/kernel
elif [ "$cmd_num" = "2" ];then
bitbake -c cleansstate core-image-base
elif [ "$cmd_num" = "3" ];then
bitbake -c cleansstate openssl
elif [ "$cmd_num" = "4" ];then
bitbake -c cleansstate virtual/kernel
bitbake virtual/kernel
elif [ "$cmd_num" = "5" ];then
bitbake lk
elif [ "$cmd_num" = "6" ];then
bitbake safety
elif [ "$cmd_num" = "7" ];then
bitbake baremetal
elif [ "$cmd_num" = "8" ];then
bitbake -c cleansstate core-image-base
bitbake core-image-base
elif [ "$cmd_num" = "9" ];then
bitbake -c cleansstate virtual/kernel
bitbake -c cleansstate core-image-base
bitbake -c cleansstate openssl
elif [ "$cmd_num" = "10" ];then
bitbake virtual/kernel
bitbake lk
bitbake safety
bitbake baremetal
bitbake core-image-base
elif [ "$cmd_num" = "11" ];then
cd ../meta-semidrive/scripts
./make_ospi_pac.sh -m v9156_ms -b build-v9156_ms
cd ../../build-v9156_ms
elif [ "$cmd_num" = "12" ];then
cd ../meta-semidrive/scripts
./make_emmc_pac.sh -m v9156_ms -b build-v9156_ms
cd ../../build-v9156_ms
elif [ "$cmd_num" = "13" ];then
cd ../meta-semidrive/scripts
./make_ospi_pac.sh -m v9156_ms -b build-v9156_ms
./make_emmc_pac.sh -m v9156_ms -b build-v9156_ms
cd ../../build-v9156_ms
else
echo "错误编码"
fi
通过编译脚本,可以发现kernel rootfs可以单独编译,在实际项目开发过程中,为了快速验证问题,可以只编译下载修改的模块。例如修改驱动后,编译kernel,替换EMMC1_KERNEL分区的文件。
编译生成的文件在如下目录
build-v9156_ms/tmp/deploy/images/v9156_ms/
core-image-base-v9156_ms.ext4 对应rootfs文件
v9156_ms_native_linux_serdes.dtb 对应设备树文件
Image 对应krenel文件
SDFactoryTool在加载要替换的文件时,如果文件不是.img后缀,请选择ALL file(前提条件替换的文件没有找错,下载错误的镜像文件到要下载的分区里,会造成不开机)