您的位置:首页 > 移动开发 > Android开发

android 编译boot.img、dt.img、uboot.bin脚本

2020-02-17 01:37 169 查看
#!/bin/bash

function start_dtb()
{
rm -rf $OUT_TARGET_DIR/obj/KERNEL_OBJ/customer/arch/$KERNEL_ARCH/boot/dts/X3_2g.dtb
echo "delete $OUT_TARGET_DIR/obj/KERNEL_OBJ/customer/arch/$KERNEL_ARCH/boot/dts/X3_2g.dtb"
rm -rf $OUT_TARGET_DIR/dt.img
echo "delete $OUT_TARGET_DIR/dt.img"
sed -i 's/^#include \\\"partition_.*/#include \\\"partition_mbox_normal_P_32.dtsi\\\"/' $DTS_PATH/X3_2g.dts;
sed -i 's/^#include \\\"firmware_.*/#include \\\"firmware_system.dtsi\\\"/' $DTS_PATH/partition_mbox_normal_P_32.dtsi;

if [ -f \"common/customer/arch/arm/boot/dts/X3_2g.dtd\" ]; then
make -j32 -C common O=$KERNEL_OUT ARCH=$KERNEL_ARCH CROSS_COMPILE=$PREFIX_CROSS_COMPILE X3_2g.dtd;
fi
make -j32 -C common O=$KERNEL_OUT ARCH=$KERNEL_ARCH CROSS_COMPILE=$PREFIX_CROSS_COMPILE X3_2g.dtb;
cp -f $KERNEL_OUT/customer/arch/arm/boot/dts/X3_2g.dtb $OUT_TARGET_DIR/dt.img
echo "Install $OUT_TARGET_DIR/dt.img"
}

function start_boot()
{
make -j32 -C common O=$KERNEL_OUT ARCH=$KERNEL_ARCH CROSS_COMPILE=$PREFIX_CROSS_COMPILE $BUILD_CONFIG
echo "make config done!"
make -j32 -C common O=$KERNEL_OUT ARCH=$KERNEL_ARCH CROSS_COMPILE=$PREFIX_CROSS_COMPILE modules uImage
echo "make kernel image done!"
rm -rf $OUT_TARGET_DIR/kernel
rm -rf $OUT_TARGET_DIR/boot.img
cp -rf $INTERMEDIATES_KERNEL $OUT_TARGET_DIR/kernel
out/host/linux-x86/bin/mkbootimg --second out/target/product/projector/2ndbootloader --kernel out/target/product/projector/kernel --base 0x0 --os_version 9 --os_patch_level 2018-08-05 --cmdline \"androidboot.dtbo_idx=0\" --cmdline \"root=/dev/mmcblk0p18\" --output out/target/product/projector/boot.img
echo "build boot.img done!"
}

function start_uboot()
{
rm -rf $OUT_TARGET_DIR/bootloader.img
rm -rf $ANDROID_PATH/device/customer/$PROJECTOR/bootloader.img
cd $ANDROID_PATH/bootloader/uboot-repo
./mk obe_projector_X3 --systemroot
cd $ANDROID_PATH
cp -rf $UBOOT_PATH/build/u-boot.bin $OUT_TARGET_DIR/bootloader.img
cp -rf $UBOOT_PATH/build/u-boot.bin $ANDROID_PATH/device/customer/projector/bootloader.img
cp -rf $UBOOT_PATH/build/u-boot.bin.usb.bl2 $ANDROID_PATH/device/customer/projector/upgrade/u-boot.bin.usb.bl2
cp -rf $UBOOT_PATH/build/u-boot.bin.usb.tpl $ANDROID_PATH/device/customer/projector/upgrade/u-boot.bin.usb.tpl
cp -rf $UBOOT_PATH/build/u-boot.bin.sd.bin $ANDROID_PATH/device/customer/projector/upgrade/u-boot.bin.sd.bin
echo "build bootloader.img done"
}

KERNEL_ARCH=arm
ANDROID_PATH=`cd $(dirname $0); pwd -P`
DTS_PATH=$ANDROID_PATH/common/customer/arch/$KERNEL_ARCH/boot/dts
PROJECTOR=projector
UBOOT_PATH=$ANDROID_PATH/bootloader/uboot-repo
OUT_TARGET_DIR=$ANDROID_PATH/out/target/product/$PROJECTOR
PREFIX_CROSS_COMPILE=/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
KERNEL_OUT=$OUT_TARGET_DIR/obj/KERNEL_OBJ
KERNEL_DEFCONFIG=meson64_projector_defconfig
INTERMEDIATES_KERNEL=${KERNEL_OUT}/arch/${KERNEL_ARCH}/boot/uImage

if [ -z "$1" ]; then
echo "x3_build.sh [-h]"
echo "dtb: start build dt.img"
echo "boot: start build boot.img"
echo "uboot: start build bootloader.img"
elif [ $1 == "uboot" ]; then
echo "start make bootloader.img"
start_uboot
elif [ $1 == "boot" ]; then
echo "start make boot.img"
start_boot
elif [ $1 == "dtb" ]; then
echo "start make dt.img"
start_dtb
else
echo "Please enter a valid parameter"
fi
  • 点赞
  • 收藏
  • 分享
  • 文章举报
zzsxyl 发布了2 篇原创文章 · 获赞 0 · 访问量 107 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: