diff --git a/common/build.sh b/common/build.sh index 9e262b6..38fa874 100755 --- a/common/build.sh +++ b/common/build.sh @@ -568,6 +568,30 @@ function build_uefi(){ finish_build } +function config_uboot(){ + check_config RK_UBOOT_DEFCONFIG || return 0 + build_check_cross_compile + prebuild_uboot + prebuild_security_uboot $@ + + echo "============Start building uboot============" + echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG" + echo "=========================================" + + cd u-boot + rm -f *_loader_*.bin + if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then + rm -f *spl.bin + fi + + make ${RK_UBOOT_DEFCONFIG}_defconfig + make menuconfig ARCH=${RK_ARCH} CROSS_COMPILE=${CROSS_COMPILE} + make savedefconfig ARCH=${RK_ARCH} CROSS_COMPILE=${CROSS_COMPILE} + cp -arf defconfig configs/${RK_UBOOT_DEFCONFIG}_defconfig + + finish_build +} + function build_uboot(){ check_config RK_UBOOT_DEFCONFIG || return 0 build_check_cross_compile @@ -720,7 +744,7 @@ function build_extboot(){ make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS make ARCH=$RK_ARCH dtbs -j$RK_JOBS - + echo -e "\e[36m Generate extLinuxBoot image start\e[0m" KERNEL_VERSION=$(cat $TOP_DIR/kernel/include/config/kernel.release) @@ -1469,6 +1493,7 @@ for option in ${OPTIONS}; do toolchain) build_toolchain ;; spl) build_spl ;; uboot) build_uboot ;; + uboot_config) config_uboot ;; uefi) build_uefi ;; loader) build_loader ;; kernel) build_kernel ;; diff --git a/common/config.sh b/common/config.sh deleted file mode 100755 index d359d3c..0000000 --- a/common/config.sh +++ /dev/null @@ -1,1526 +0,0 @@ -#!/bin/bash - -export LC_ALL=C -export LD_LIBRARY_PATH= -unset RK_CFG_TOOLCHAIN - -err_handler() { - ret=$? - [ "$ret" -eq 0 ] && return - - echo "ERROR: Running ${FUNCNAME[1]} failed!" - echo "ERROR: exit code $ret from line ${BASH_LINENO[0]}:" - echo " $BASH_COMMAND" - exit $ret -} -trap 'err_handler' ERR -set -eE - -function finish_build(){ - echo "Running ${FUNCNAME[1]} succeeded." - cd $TOP_DIR -} - -function check_config(){ - unset missing - for var in $@; do - eval [ \$$var ] && continue - - missing="$missing $var" - done - - [ -z "$missing" ] && return 0 - - echo "Skipping ${FUNCNAME[1]} for missing configs: $missing." - return 1 -} - -function choose_target_board() -{ - echo - echo "You're building on Linux" - echo "Lunch menu...pick a combo:" - echo "" - - echo "0. default BoardConfig.mk" - echo ${RK_TARGET_BOARD_ARRAY[@]} | xargs -n 1 | sed "=" | sed "N;s/\n/. /" - - local INDEX - read -p "Which would you like? [0]: " INDEX - INDEX=$((${INDEX:-0} - 1)) - - if echo $INDEX | grep -vq [^0-9]; then - RK_BUILD_TARGET_BOARD="${RK_TARGET_BOARD_ARRAY[$INDEX]}" - else - echo "Lunching for Default BoardConfig.mk boards..." - RK_BUILD_TARGET_BOARD=BoardConfig.mk - fi -} - -function build_select_board() -{ - RK_TARGET_BOARD_ARRAY=( $(cd ${TARGET_PRODUCT_DIR}/; ls BoardConfig*.mk | sort) ) - - RK_TARGET_BOARD_ARRAY_LEN=${#RK_TARGET_BOARD_ARRAY[@]} - if [ $RK_TARGET_BOARD_ARRAY_LEN -eq 0 ]; then - echo "No available Board Config" - return - fi - - choose_target_board - - ln -rfs $TARGET_PRODUCT_DIR/$RK_BUILD_TARGET_BOARD device/rockchip/.BoardConfig.mk - echo "switching to board: `realpath $BOARD_CONFIG`" -} - -function unset_board_config_all() -{ - local tmp_file=`mktemp` - grep -oh "^export.*RK_.*=" `find device -name "Board*.mk"` > $tmp_file - source $tmp_file - rm -f $tmp_file -} - -CMD=`realpath $0` -COMMON_DIR=`dirname $CMD` -TOP_DIR=$(realpath $COMMON_DIR/../../..) -cd $TOP_DIR - -BOARD_CONFIG=$TOP_DIR/device/rockchip/.BoardConfig.mk -TARGET_PRODUCT="$TOP_DIR/device/rockchip/.target_product" -TARGET_PRODUCT_DIR=$(realpath ${TARGET_PRODUCT}) - -if [ ! -L "$BOARD_CONFIG" -a "$1" != "lunch" ]; then - build_select_board -fi -unset_board_config_all -[ -L "$BOARD_CONFIG" ] && source $BOARD_CONFIG - -function prebuild_uboot() -{ - UBOOT_COMPILE_COMMANDS="\ - ${RK_TRUST_INI_CONFIG:+../rkbin/RKTRUST/$RK_TRUST_INI_CONFIG} \ - ${RK_SPL_INI_CONFIG:+../rkbin/RKBOOT/$RK_SPL_INI_CONFIG} \ - ${RK_UBOOT_SIZE_CONFIG:+--sz-uboot $RK_UBOOT_SIZE_CONFIG} \ - ${RK_TRUST_SIZE_CONFIG:+--sz-trust $RK_TRUST_SIZE_CONFIG}" - UBOOT_COMPILE_COMMANDS="$(echo $UBOOT_COMPILE_COMMANDS)" - - if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then - UBOOT_COMPILE_COMMANDS="--spl-new $UBOOT_COMPILE_COMMANDS" - UBOOT_COMPILE_COMMANDS="$(echo $UBOOT_COMPILE_COMMANDS)" - fi - - if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then - UBOOT_COMPILE_COMMANDS=" \ - $UBOOT_COMPILE_COMMANDS \ - ${RK_ROLLBACK_INDEX_BOOT:+--rollback-index-boot $RK_ROLLBACK_INDEX_BOOT} \ - ${RK_ROLLBACK_INDEX_UBOOT:+--rollback-index-uboot $RK_ROLLBACK_INDEX_UBOOT} " - fi -} - -function prebuild_security_uboot() -{ - local mode=$1 - - if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then - if [ "$RK_SECURITY_OTP_DEBUG" != "true" ]; then - UBOOT_COMPILE_COMMANDS="$UBOOT_COMPILE_COMMANDS --burn-key-hash" - fi - - case "${mode:-normal}" in - uboot) - ;; - boot) - UBOOT_COMPILE_COMMANDS=" \ - --boot_img $TOP_DIR/u-boot/boot.img \ - $UBOOT_COMPILE_COMMANDS " - ;; - recovery) - UBOOT_COMPILE_COMMANDS=" \ - --recovery_img $TOP_DIR/u-boot/recovery.img - $UBOOT_COMPILE_COMMANDS " - ;; - *) - UBOOT_COMPILE_COMMANDS=" \ - --boot_img $TOP_DIR/u-boot/boot.img \ - $UBOOT_COMPILE_COMMANDS " - test -z "${RK_PACKAGE_FILE_AB}" && \ - UBOOT_COMPILE_COMMANDS="$UBOOT_COMPILE_COMMANDS --recovery_img $TOP_DIR/u-boot/recovery.img" - ;; - esac - - UBOOT_COMPILE_COMMANDS="$(echo $UBOOT_COMPILE_COMMANDS)" - fi -} - -function usagekernel() -{ - check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0 - - echo "cd kernel" - echo "make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT" - echo "make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS" -} - -function usageuboot() -{ - check_config RK_UBOOT_DEFCONFIG || return 0 - prebuild_uboot - prebuild_security_uboot $1 - - cd u-boot - echo "cd u-boot" - if [ -n "$RK_UBOOT_DEFCONFIG_FRAGMENT" ]; then - if [ -f "configs/${RK_UBOOT_DEFCONFIG}_defconfig" ]; then - echo "make ${RK_UBOOT_DEFCONFIG}_defconfig $RK_UBOOT_DEFCONFIG_FRAGMENT" - else - echo "make ${RK_UBOOT_DEFCONFIG}.config $RK_UBOOT_DEFCONFIG_FRAGMENT" - fi - echo "./make.sh $UBOOT_COMPILE_COMMANDS" - else - echo "./make.sh $RK_UBOOT_DEFCONFIG $UBOOT_COMPILE_COMMANDS" - fi - - if [ "$RK_IDBLOCK_UPDATE_SPL" = "true" ]; then - echo "./make.sh --idblock --spl" - fi - - finish_build -} - -function usagerootfs() -{ - check_config RK_ROOTFS_IMG || return 0 - - if [ "${RK_CFG_BUILDROOT}x" != "x" ];then - echo "source envsetup.sh $RK_CFG_BUILDROOT" - else - if [ "${RK_CFG_RAMBOOT}x" != "x" ];then - echo "source envsetup.sh $RK_CFG_RAMBOOT" - else - echo "Not found config buildroot. Please Check !!!" - fi - fi - - case "${RK_ROOTFS_SYSTEM:-buildroot}" in - yocto) - ;; - ubuntu) - ;; - debian) - ;; - *) - echo "make" - ;; - esac -} - -function usagerecovery() -{ - check_config RK_CFG_RECOVERY || return 0 - - echo "source envsetup.sh $RK_CFG_RECOVERY" - echo "$COMMON_DIR/mk-ramdisk.sh recovery.img $RK_CFG_RECOVERY" -} - -function usageramboot() -{ - check_config RK_CFG_RAMBOOT || return 0 - - echo "source envsetup.sh $RK_CFG_RAMBOOT" - echo "$COMMON_DIR/mk-ramdisk.sh ramboot.img $RK_CFG_RAMBOOT" -} - -function usagemodules() -{ - check_config RK_KERNEL_DEFCONFIG || return 0 - - echo "cd kernel" - echo "make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG" - echo "make ARCH=$RK_ARCH modules -j$RK_JOBS" -} - -function usagesecurity() -{ - case "$1" in - uboot) usageboot $1;; - boot) - usageramboot; - echo "cp buildroot/output/$RK_CFG_RAMBOOT/images/ramboot.img u-boot/boot.img" - usageuboot $1;; - recovery) - usagerecovery; - echo "cp buildroot/output/$RK_CFG_RECOVERY/images/recovery.img u-boot/recovery.img" - usageuboot $1;; - rootfs) - usagerootfs; - usagesecurity boot;; - *);; - esac -} - -function usagesecurity_uboot() -{ - usageuboot uboot -} - -function usagesecurity_boot() -{ - usagesecurity boot -} - -function usagesecurity_recovery() -{ - usagesecurity recovery -} - -function usagesecurity_rootfs() -{ - usagesecurity rootfs -} - -function usage() -{ - echo "Usage: build.sh [OPTIONS]" - echo "Available options:" - echo "BoardConfig*.mk -switch to specified board config" - echo "lunch -list current SDK boards and switch to specified board config" - echo "uboot -build uboot" - echo "uefi -build uefi" - echo "spl -build spl" - echo "loader -build loader" - echo "kernel -build kernel" - echo "kerneldeb -build kernel deb" - echo "modules -build kernel modules" - echo "toolchain -build toolchain" - echo "extboot -build extlinux boot.img, boot from EFI partition" - echo "rootfs -build default rootfs, currently build buildroot as default" - echo "buildroot -build buildroot rootfs" - echo "ramboot -build ramboot image" - echo "multi-npu_boot -build boot image for multi-npu board" - echo "yocto -build yocto rootfs" - echo "ubuntu -build ubuntu rootfs" - echo "debian -build debian rootfs" - echo "pcba -build pcba" - echo "recovery -build recovery" - echo "all -build uboot, kernel, rootfs, recovery image" - echo "cleanall -clean uboot, kernel, rootfs, recovery" - echo "firmware -pack all the image we need to boot up system" - echo "updateimg -pack update image" - echo "otapackage -pack ab update otapackage image (update_ota.img)" - echo "sdpackage -pack update sdcard package image (update_sdcard.img)" - echo "save -save images, patches, commands used to debug" - echo "allsave -build all & firmware & updateimg & save" - echo "check -check the environment of building" - echo "info -see the current board building information" - echo "app/ -build packages in the dir of app/*" - echo "external/ -build packages in the dir of external/*" - echo "" - echo "createkeys -create secureboot root keys" - echo "security_rootfs -build rootfs and some relevant images with security paramter (just for dm-v)" - echo "security_boot -build boot with security paramter" - echo "security_uboot -build uboot with security paramter" - echo "security_recovery -build recovery with security paramter" - echo "security_check -check security paramter if it's good" - echo "" - echo "Default option is 'allsave'." -} - -function build_info(){ - if [ ! -L $TARGET_PRODUCT_DIR ];then - echo "No found target product!!!" - fi - if [ ! -L $BOARD_CONFIG ];then - echo "No found target board config!!!" - fi - - if [ -f .repo/manifest.xml ]; then - local sdk_ver="" - sdk_ver=`grep "include name" .repo/manifest.xml | awk -F\" '{print $2}'` - sdk_ver=`realpath .repo/manifests/${sdk_ver}` - echo "Build SDK version: `basename ${sdk_ver}`" - else - echo "Not found .repo/manifest.xml [ignore] !!!" - fi - - echo "Current Building Information:" - echo "Target Product: $TARGET_PRODUCT_DIR" - echo "Target BoardConfig: `realpath $BOARD_CONFIG`" - echo "Target Misc config:" - echo "`env |grep "^RK_" | grep -v "=$" | sort`" - - local kernel_file_dtb - - if [ "$RK_ARCH" == "arm" ]; then - kernel_file_dtb="${TOP_DIR}/kernel/arch/arm/boot/dts/${RK_KERNEL_DTS}.dtb" - else - kernel_file_dtb="${TOP_DIR}/kernel/arch/arm64/boot/dts/rockchip/${RK_KERNEL_DTS}.dtb" - fi - - rm -f $kernel_file_dtb - - cd kernel - make ARCH=$RK_ARCH dtbs -j$RK_JOBS - - # build_check_power_domain -} - -function build_check_power_domain(){ - local dump_kernel_dtb_file - local tmp_phandle_file - local tmp_io_domain_file - local tmp_regulator_microvolt_file - local tmp_final_target - local tmp_none_item - local kernel_file_dtb_dts - - if [ "$RK_ARCH" == "arm" ]; then - kernel_file_dtb_dts="${TOP_DIR}/kernel/arch/arm/boot/dts/$RK_KERNEL_DTS" - else - kernel_file_dtb_dts="${TOP_DIR}/kernel/arch/arm64/boot/dts/rockchip/$RK_KERNEL_DTS" - fi - - dump_kernel_dtb_file=${kernel_file_dtb_dts}.dump.dts - tmp_phandle_file=`mktemp` - tmp_io_domain_file=`mktemp` - tmp_regulator_microvolt_file=`mktemp` - tmp_final_target=`mktemp` - tmp_grep_file=`mktemp` - - dtc -I dtb -O dts -o ${dump_kernel_dtb_file} ${kernel_file_dtb_dts}.dtb 2>/dev/null - - if [ "$RK_SYSTEM_CHECK_METHOD" = "DM-E" ] ; then - if ! grep "compatible = \"linaro,optee-tz\";" $dump_kernel_dtb_file > /dev/null 2>&1 ; then - echo "Please add: " - echo " optee: optee {" - echo " compatible = \"linaro,optee-tz\";" - echo " method = \"smc\";" - echo " status = \"okay\";" - echo " }" - echo "To your dts file" - return -1; - fi - fi - - if ! grep -Pzo "io-domains\s*{(\n|\w|-|;|=|<|>|\"|_|\s|,)*};" $dump_kernel_dtb_file 1>$tmp_grep_file 2>/dev/null; then - echo "Not Found io-domains in ${kernel_file_dtb_dts}.dts" - rm -f $tmp_grep_file - return 0 - fi - grep -a supply $tmp_grep_file > $tmp_io_domain_file - rm -f $tmp_grep_file - awk '{print "phandle = " $3}' $tmp_io_domain_file > $tmp_phandle_file - - - while IFS= read -r item_phandle && IFS= read -u 3 -r item_domain - do - echo "${item_domain% *}" >> $tmp_regulator_microvolt_file - tmp_none_item=${item_domain% *} - cmds="grep -Pzo \"{(\\n|\w|-|;|=|<|>|\\\"|_|\s)*"$item_phandle\" - - eval "$cmds $dump_kernel_dtb_file | strings | grep "regulator-m..-microvolt" >> $tmp_regulator_microvolt_file" || \ - eval "sed -i \"/${tmp_none_item}/d\" $tmp_regulator_microvolt_file" && continue - - echo >> $tmp_regulator_microvolt_file - done < $tmp_phandle_file 3<$tmp_io_domain_file - - while read -r regulator_val - do - if echo ${regulator_val} | grep supply &>/dev/null; then - echo -e "\n\n\e[1;33m${regulator_val%*=}\e[0m" >> $tmp_final_target - else - tmp_none_item=${regulator_val##*<} - tmp_none_item=${tmp_none_item%%>*} - echo -e "${regulator_val%%<*} \e[1;31m$(( $tmp_none_item / 1000 ))mV\e[0m" >> $tmp_final_target - fi - done < $tmp_regulator_microvolt_file - - echo -e "\e[41;1;30m PLEASE CHECK BOARD GPIO POWER DOMAIN CONFIGURATION !!!!!\e[0m" - echo -e "\e[41;1;30m <<< ESPECIALLY Wi-Fi/Flash/Ethernet IO power domain >>> !!!!!\e[0m" - echo -e "\e[41;1;30m Check Node [pmu_io_domains] in the file: ${kernel_file_dtb_dts}.dts \e[0m" - echo - echo -e "\e[41;1;30m 请再次确认板级的电源域配置!!!!!!\e[0m" - echo -e "\e[41;1;30m <<< 特别是Wi-Fi,FLASH,以太网这几路IO电源的配置 >>> !!!!!\e[0m" - echo -e "\e[41;1;30m 检查内核文件 ${kernel_file_dtb_dts}.dts 的节点 [pmu_io_domains] \e[0m" - cat $tmp_final_target - - rm -f $tmp_phandle_file - rm -f $tmp_regulator_microvolt_file - rm -f $tmp_io_domain_file - rm -f $tmp_final_target - rm -f $dump_kernel_dtb_file -} - -function build_check_cross_compile(){ - - case $RK_ARCH in - arm|armhf) - if [ -d "$TOP_DIR/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf" ]; then - CROSS_COMPILE=$(realpath $TOP_DIR)/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- - export CROSS_COMPILE=$CROSS_COMPILE - fi - ;; - arm64|aarch64) - if [ -d "$TOP_DIR/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu" ]; then - CROSS_COMPILE=$(realpath $TOP_DIR)/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- - export CROSS_COMPILE=$CROSS_COMPILE - elif [ -d "$TOP_DIR/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu" ]; then - CROSS_COMPILE=$(realpath $TOP_DIR)/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- - export CROSS_COMPILE=$CROSS_COMPILE - fi - ;; - *) - echo "the $RK_ARCH not supported for now, please check it again\n" - ;; - esac -} - -function build_check(){ - local build_depend_cfg="build-depend-tools.txt" - common_product_build_tools="device/rockchip/common/$build_depend_cfg" - target_product_build_tools="device/rockchip/$RK_TARGET_PRODUCT/$build_depend_cfg" - cat $common_product_build_tools $target_product_build_tools 2>/dev/null | while read chk_item - do - chk_item=${chk_item###*} - if [ -z "$chk_item" ]; then - continue - fi - - dst=${chk_item%%,*} - src=${chk_item##*,} - echo "**************************************" - if eval $dst &>/dev/null;then - echo "Check [OK]: $dst" - else - echo "Please install ${dst%% *} first" - echo " sudo apt-get install $src" - fi - done -} - -function build_pkg() { - check_config RK_CFG_BUILDROOT || check_config RK_CFG_RAMBOOT || check_config RK_CFG_RECOVERY || check_config RK_CFG_PCBA || return 0 - - local target_pkg=$1 - target_pkg=${target_pkg%*/} - - if [ ! -d $target_pkg ];then - echo "build pkg: error: not found package $target_pkg" - return 1 - fi - - if ! eval [ $rk_package_mk_arrry ];then - rk_package_mk_arrry=( $(find buildroot/package/rockchip/ -name "*.mk" | sort) ) - fi - - local pkg_mk pkg_config_in pkg_br pkg_final_target pkg_final_target_upper pkg_cfg - - for it in ${rk_package_mk_arrry[@]} - do - pkg_final_target=$(basename $it) - pkg_final_target=${pkg_final_target%%.mk*} - pkg_final_target_upper=${pkg_final_target^^} - pkg_final_target_upper=${pkg_final_target_upper//-/_} - if grep "${pkg_final_target_upper}_SITE.*$target_pkg" $it &>/dev/null; then - pkg_mk=$it - pkg_config_in=$(dirname $pkg_mk)/Config.in - pkg_br=BR2_PACKAGE_$pkg_final_target_upper - - for cfg in RK_CFG_BUILDROOT RK_CFG_RAMBOOT RK_CFG_RECOVERY RK_CFG_PCBA - do - if eval [ \$$cfg ] ;then - pkg_cfg=$( eval "echo \$$cfg" ) - if grep -wq ${pkg_br}=y buildroot/output/$pkg_cfg/.config; then - echo "Found $pkg_br in buildroot/output/$pkg_cfg/.config " - make -C buildroot/output/$pkg_cfg ${pkg_final_target}-dirclean O=buildroot/output/$pkg_cfg - make -C buildroot/output/$pkg_cfg ${pkg_final_target}-rebuild O=buildroot/output/$pkg_cfg - else - echo "[SKIP BUILD $target_pkg] NOT Found ${pkg_br}=y in buildroot/output/$pkg_cfg/.config" - fi - fi - done - fi - done - - finish_build -} - -function build_uefi(){ - build_check_cross_compile - local kernel_file_dtb - - if [ "$RK_ARCH" == "arm" ]; then - kernel_file_dtb="${TOP_DIR}/kernel/arch/arm/boot/dts/${RK_KERNEL_DTS}.dtb" - else - kernel_file_dtb="${TOP_DIR}/kernel/arch/arm64/boot/dts/rockchip/${RK_KERNEL_DTS}.dtb" - fi - - echo "============Start building uefi============" - echo "Copy kernel dtb $kernel_file_dtb to uefi/edk2-platforms/Platform/Rockchip/DeviceTree/rk3588.dtb" - echo "=========================================" - if [ ! -f $kernel_file_dtb ]; then - echo "Please compile the kernel before" - return -1 - fi - - cp $kernel_file_dtb uefi/edk2-platforms/Platform/Rockchip/DeviceTree/rk3588.dtb - cd uefi - ./make.sh $RK_UBOOT_DEFCONFIG - cd - - - finish_build -} - -function build_uboot(){ - check_config RK_UBOOT_DEFCONFIG || return 0 - build_check_cross_compile - prebuild_uboot - prebuild_security_uboot $@ - - echo "============Start building uboot============" - echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG" - echo "=========================================" - - cd u-boot - rm -f *_loader_*.bin - if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then - rm -f *spl.bin - fi - - if [ -n "$RK_UBOOT_DEFCONFIG_FRAGMENT" ]; then - if [ -f "configs/${RK_UBOOT_DEFCONFIG}_defconfig" ]; then - make ${RK_UBOOT_DEFCONFIG}_defconfig $RK_UBOOT_DEFCONFIG_FRAGMENT - else - make ${RK_UBOOT_DEFCONFIG}.config $RK_UBOOT_DEFCONFIG_FRAGMENT - fi - ./make.sh $UBOOT_COMPILE_COMMANDS - elif [ -d "$TOP_DIR/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf" ]; then - ./make.sh $RK_UBOOT_DEFCONFIG \ - $UBOOT_COMPILE_COMMANDS CROSS_COMPILE=$CROSS_COMPILE - elif [ -d "$TOP_DIR/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu" ]; then - ./make.sh $RK_UBOOT_DEFCONFIG \ - $UBOOT_COMPILE_COMMANDS CROSS_COMPILE=$CROSS_COMPILE - else - ./make.sh $RK_UBOOT_DEFCONFIG \ - $UBOOT_COMPILE_COMMANDS - fi - - if [ "$RK_IDBLOCK_UPDATE_SPL" = "true" ]; then - ./make.sh --idblock --spl - fi - - if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then - ln -rsf $TOP_DIR/u-boot/boot.img $TOP_DIR/rockdev/ - test -z "${RK_PACKAGE_FILE_AB}" && \ - ln -rsf $TOP_DIR/u-boot/recovery.img $TOP_DIR/rockdev/ || true - fi - - finish_build -} - -function config_uboot(){ - check_config RK_UBOOT_DEFCONFIG || return 0 - build_check_cross_compile - prebuild_uboot - prebuild_security_uboot $@ - - echo "============Start building uboot============" - echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG" - echo "=========================================" - - cd u-boot - rm -f *_loader_*.bin - if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then - rm -f *spl.bin - fi - - make ${RK_UBOOT_DEFCONFIG}_defconfig - make menuconfig ARCH=${RK_ARCH} CROSS_COMPILE=${CROSS_COMPILE} - make savedefconfig ARCH=${RK_ARCH} CROSS_COMPILE=${CROSS_COMPILE} - cp -arf defconfig configs/${RK_UBOOT_DEFCONFIG}_defconfig - - finish_build -} - -# TODO: build_spl can be replaced by build_uboot with define RK_LOADER_UPDATE_SPL -function build_spl(){ - check_config RK_SPL_DEFCONFIG || return 0 - - echo "============Start building spl============" - echo "TARGET_SPL_CONFIG=$RK_SPL_DEFCONFIG" - echo "=========================================" - - cd u-boot - rm -f *spl.bin - ./make.sh $RK_SPL_DEFCONFIG - ./make.sh --spl - - finish_build -} - -function build_loader(){ - check_config RK_LOADER_BUILD_TARGET || return 0 - - echo "============Start building loader============" - echo "RK_LOADER_BUILD_TARGET=$RK_LOADER_BUILD_TARGET" - echo "==========================================" - - cd loader - ./build.sh $RK_LOADER_BUILD_TARGET - - finish_build -} - -function build_kernel(){ - check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0 - - echo "============Start building kernel============" - echo "TARGET_RK_JOBS =$RK_JOBS" - echo "TARGET_ARCH =$RK_ARCH" - echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG" - echo "TARGET_KERNEL_DTS =$RK_KERNEL_DTS" - echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT" - echo "==========================================" - - build_check_cross_compile - - cd kernel - make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT - make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS - # make ARCH=$RK_ARCH -j$RK_JOBS - if [ -f "$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS" ]; then - $COMMON_DIR/mk-fitimage.sh $TOP_DIR/kernel/$RK_BOOT_IMG \ - $TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS - fi - - if [ -f "$TOP_DIR/kernel/$RK_BOOT_IMG" ]; then - mkdir -p $TOP_DIR/rockdev - ln -sf $TOP_DIR/kernel/$RK_BOOT_IMG $TOP_DIR/rockdev/boot.img - fi - - if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then - cp $TOP_DIR/kernel/$RK_BOOT_IMG \ - $TOP_DIR/u-boot/boot.img - fi - - # build_check_power_domain - - finish_build -} - -function build_kerneldeb(){ - check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0 - - build_check_cross_compile - - echo "============Start building kernel deb============" - echo "TARGET_ARCH =$RK_ARCH" - echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG" - echo "TARGET_KERNEL_DTS =$RK_KERNEL_DTS" - echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT" - echo "==========================================" - pwd - - rm -f linux-*.buildinfo linux-*.changes - rm -f linux-headers-*.deb linux-image-*.deb linux-libc-dev*.deb - - cd kernel - make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT - make ARCH=$RK_ARCH bindeb-pkg RK_KERNEL_DTS=$RK_KERNEL_DTS -j$RK_JOBS - finish_build -} - -function build_extboot(){ - check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0 - - echo "============Start building kernel============" - echo "TARGET_ARCH =$RK_ARCH" - echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG" - echo "TARGET_KERNEL_DTS =$RK_KERNEL_DTS" - echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT" - echo "==========================================" - pwd - - build_check_cross_compile - - cd kernel - make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT - make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS - make ARCH=$RK_ARCH dtbs -j$RK_JOBS - - echo -e "\e[36m Generate extLinuxBoot image start\e[0m" - - KERNEL_VERSION=$(cat $TOP_DIR/kernel/include/config/kernel.release) - - EXTBOOT_IMG=${TOP_DIR}/kernel/extboot.img - EXTBOOT_DIR=${TOP_DIR}/kernel/extboot - EXTBOOT_DTB=${EXTBOOT_DIR}/dtb/ - - rm -rf $EXTBOOT_DIR - mkdir -p $EXTBOOT_DTB/overlay - mkdir -p $EXTBOOT_DIR/uEnv - mkdir -p $EXTBOOT_DIR/kerneldeb - - cp ${TOP_DIR}/$RK_KERNEL_IMG $EXTBOOT_DIR/Image-$KERNEL_VERSION - - mkdir -p $EXTBOOT_DIR/extlinux - echo -e "label kernel-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf - echo -e "\tkernel /Image-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf - echo -e "\tdevicetreedir /" >> $EXTBOOT_DIR/extlinux/extlinux.conf - echo -e "\tappend root=/dev/mmcblk0p3 earlyprintk console=ttyFIQ0 console=tty1 consoleblank=0 loglevel=7 rootwait rw rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 switolb=1 coherent_pool=1m" >> $EXTBOOT_DIR/extlinux/extlinux.conf - - if [ "$RK_ARCH" == "arm64" ];then - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/rockchip/*.dtb $EXTBOOT_DTB - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/rockchip/overlay/*.dtbo $EXTBOOT_DTB/overlay - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/rockchip/uEnv/uEnv*.txt $EXTBOOT_DIR/uEnv - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/rockchip/uEnv/boot.cmd $EXTBOOT_DIR/ - else - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/*.dtb $EXTBOOT_DTB - cp ${TOP_DIR}/kernel/arch/${RK_ARCH}/boot/dts/overlay/*.dtbo $EXTBOOT_DTB/overlay - fi - cp -f $EXTBOOT_DTB/${RK_KERNEL_DTS}.dtb $EXTBOOT_DIR/rk-kernel.dtb - - if [[ -e ${TOP_DIR}/lubancat-bin/initrd/initrd-$KERNEL_VERSION ]]; then - cp ${TOP_DIR}/lubancat-bin/initrd/initrd-$KERNEL_VERSION $EXTBOOT_DIR/initrd-$KERNEL_VERSION - # echo -e "\tinitrd /initrd-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf - fi - - if [[ -e $EXTBOOT_DIR/boot.cmd ]]; then - mkimage -T script -C none -d $EXTBOOT_DIR/boot.cmd $EXTBOOT_DIR/boot.scr - fi - - cp ${TOP_DIR}/kernel/.config $EXTBOOT_DIR/config-$KERNEL_VERSION - cp ${TOP_DIR}/kernel/System.map $EXTBOOT_DIR/System.map-$KERNEL_VERSION - cp ${TOP_DIR}/kernel/logo_kernel.bmp $EXTBOOT_DIR/ - cp ${TOP_DIR}/kernel/logo_boot.bmp $EXTBOOT_DIR/logo.bmp - - cp ${TOP_DIR}/linux-headers-"$KERNEL_VERSION"_"$KERNEL_VERSION"-*.deb $EXTBOOT_DIR/kerneldeb - cp ${TOP_DIR}/linux-image-"$KERNEL_VERSION"_"$KERNEL_VERSION"-*.deb $EXTBOOT_DIR/kerneldeb - - # make ARCH=$RK_ARCH INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$EXTBOOT_DIR modules_install - # rm $EXTBOOT_DIR/lib/modules/$KERNEL_VERSION/build - # rm $EXTBOOT_DIR/lib/modules/$KERNEL_VERSION/source - - rm -rf $EXTBOOT_IMG && truncate -s 128M $EXTBOOT_IMG - fakeroot mkfs.ext2 -F -L "boot" -d $EXTBOOT_DIR $EXTBOOT_IMG - # fakeroot mkfs.fat -F 16 -n "boot" $EXTBOOT_IMG - - # mkdir -p $EXTBOOT_DIR.tmp - # sudo mount $EXTBOOT_IMG $EXTBOOT_DIR.tmp - # sudo cp -rf $EXTBOOT_DIR/* $EXTBOOT_DIR.tmp - # sudo umount $EXTBOOT_DIR.tmp - # sudo rm -rf $EXTBOOT_DIR.tmp - - finish_build -} - -function build_modules(){ - check_config RK_KERNEL_DEFCONFIG || return 0 - - echo "============Start building kernel modules============" - echo "TARGET_RK_JOBS =$RK_JOBS" - echo "TARGET_ARCH =$RK_ARCH" - echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG" - echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT" - echo "==================================================" - - build_check_cross_compile - - cd kernel - make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT - make ARCH=$RK_ARCH modules -j$RK_JOBS - - finish_build -} - -function build_toolchain(){ - check_config RK_CFG_TOOLCHAIN || return 0 - - echo "==========Start building toolchain ==========" - echo "TARGET_TOOLCHAIN_CONFIG=$RK_CFG_TOOLCHAIN" - echo "=========================================" - - /usr/bin/time -f "you take %E to build toolchain" \ - $COMMON_DIR/mk-toolchain.sh $BOARD_CONFIG - - finish_build -} - -function build_buildroot(){ - check_config RK_CFG_BUILDROOT || return 0 - - echo "==========Start building buildroot==========" - echo "TARGET_BUILDROOT_CONFIG=$RK_CFG_BUILDROOT" - echo "=========================================" - - /usr/bin/time -f "you take %E to build builroot" \ - $COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG - - finish_build -} - -function build_ramboot(){ - check_config RK_CFG_RAMBOOT || return 0 - - echo "=========Start building ramboot=========" - echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT" - echo "=====================================" - - /usr/bin/time -f "you take %E to build ramboot" \ - $COMMON_DIR/mk-ramdisk.sh ramboot.img $RK_CFG_RAMBOOT - - ln -rsf buildroot/output/$RK_CFG_RAMBOOT/images/ramboot.img \ - rockdev/boot.img - - cp buildroot/output/$RK_CFG_RAMBOOT/images/ramboot.img \ - u-boot/boot.img - - finish_build -} - -function build_multi-npu_boot(){ - check_config RK_MULTINPU_BOOT || return 0 - - echo "=========Start building multi-npu boot=========" - echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT" - echo "=====================================" - - /usr/bin/time -f "you take %E to build multi-npu boot" \ - $COMMON_DIR/mk-multi-npu_boot.sh - - finish_build -} - -function kernel_version(){ - VERSION_KEYS="VERSION PATCHLEVEL" - VERSION="" - - for k in $VERSION_KEYS; do - v=$(grep "^$k = " $1/Makefile | cut -d' ' -f3) - VERSION=${VERSION:+${VERSION}.}$v - done - echo $VERSION -} - -function build_yocto(){ - check_config RK_YOCTO_MACHINE || return 0 - - echo "=========Start building ramboot=========" - echo "TARGET_MACHINE=$RK_YOCTO_MACHINE" - echo "=====================================" - - KERNEL_VERSION=$(kernel_version kernel/) - - cd yocto - ln -sf $RK_YOCTO_MACHINE.conf build/conf/local.conf - source oe-init-build-env - LANG=en_US.UTF-8 LANGUAGE=en_US.en LC_ALL=en_US.UTF-8 \ - bitbake core-image-minimal -r conf/include/rksdk.conf \ - -r conf/include/kernel-$KERNEL_VERSION.conf - - finish_build -} - -function build_ubuntu(){ - ARCH=${RK_UBUNTU_ARCH:-${RK_ARCH}} - case $ARCH in - arm|armhf) ARCH=armhf ;; - *) ARCH=arm64 ;; - esac - - echo "=========Start building ubuntu for $ARCH=========" - echo "==RK_ROOTFS_DEBUG:$RK_ROOTFS_DEBUG RK_ROOTFS_TARGET:$RK_ROOTFS_TARGET==" - cd ubuntu - - - if [ ! -e ubuntu-$RK_ROOTFS_TARGET-rootfs.img ]; then - echo "[ No ubuntu-$RK_ROOTFS_TARGET-rootfs.img, Run Make Ubuntu Scripts ]" - if [ ! -e ubuntu-base-$RK_ROOTFS_TARGET-$ARCH-*.tar.gz ]; then - ARCH=arm64 TARGET=$RK_ROOTFS_TARGET ./mk-base-ubuntu.sh - fi - - VERSION=$RK_ROOTFS_DEBUG TARGET=$RK_ROOTFS_TARGET ARCH=$ARCH SOC=$RK_SOC ./mk-ubuntu-rootfs.sh - else - echo "[ Already Exists IMG, Skip Make Ubuntu Scripts ]" - echo "[ Delate Ubuntu-$RK_ROOTFS_TARGET-rootfs.img To Rebuild Ubuntu IMG ]" - fi - - finish_build -} - -function build_debian(){ - ARCH=${RK_DEBIAN_ARCH:-${RK_ARCH}} - case $ARCH in - arm|armhf) ARCH=armhf ;; - *) ARCH=arm64 ;; - esac - - echo "=========Start building debian for $ARCH=========" - echo "RK_DEBIAN_VERSION: $RK_DEBIAN_VERSION" - echo "RK_ROOTFS_TARGET: $RK_ROOTFS_TARGET" - echo "RK_ROOTFS_DEBUG: $RK_ROOTFS_DEBUG" - echo " " - - cd debian - - if [[ "$RK_DEBIAN_VERSION" == "stretch" || "$RK_DEBIAN_VERSION" == "9" ]]; then - RELEASE='stretch' - elif [[ "$RK_DEBIAN_VERSION" == "buster" || "$RK_DEBIAN_VERSION" == "10" ]]; then - RELEASE='buster' - elif [[ "$RK_DEBIAN_VERSION" == "bullseye" || "$RK_DEBIAN_VERSION" == "11" ]]; then - RELEASE='bullseye' - else - echo -e "\033[36m please input the os type,stretch or buster...... \033[0m" - fi - - if [ ! -e linaro-$RK_ROOTFS_TARGET-rootfs.img ]; then - echo "[ No linaro-$RK_ROOTFS_TARGET-rootfs.img, Run Make Debian Scripts ]" - if [ ! -e linaro-$RELEASE-$RK_ROOTFS_TARGET-alip-*.tar.gz ]; then - echo "[ build linaro-$RELEASE-$RK_ROOTFS_TARGET-alip-*.tar.gz ]" - RELEASE=$RELEASE TARGET=$RK_ROOTFS_TARGET ARCH=$ARCH ./mk-base-debian.sh - fi - - RELEASE=$RELEASE TARGET=$RK_ROOTFS_TARGET VERSION=$RK_ROOTFS_DEBUG SOC=$RK_SOC ARCH=$ARCH ./mk-rootfs.sh - else - echo "[ Already Exists IMG, Skip Make Debian Scripts ]" - echo "[ Delate linaro-$RK_ROOTFS_TARGET-rootfs.img To Rebuild Debian IMG ]" - fi - - - finish_build -} - -function build_rootfs(){ - check_config RK_ROOTFS_IMG || return 0 - - RK_ROOTFS_DIR=.rootfs - ROOTFS_IMG=${RK_ROOTFS_IMG##*/} - - rm -rf $RK_ROOTFS_IMG $RK_ROOTFS_DIR - mkdir -p ${RK_ROOTFS_IMG%/*} $RK_ROOTFS_DIR - - case "$1" in - yocto) - build_yocto - ln -rsf yocto/build/latest/rootfs.img \ - $RK_ROOTFS_DIR/rootfs.ext4 - ;; - ubuntu) - build_ubuntu - ln -rsf ubuntu/ubuntu-$RK_ROOTFS_TARGET-rootfs.img \ - $RK_ROOTFS_DIR/rootfs.ext4 - ;; - debian) - build_debian - ln -rsf debian/linaro-$RK_ROOTFS_TARGET-rootfs.img \ - $RK_ROOTFS_DIR/rootfs.ext4 - ;; - *) - build_buildroot - for f in $(ls buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.*);do - ln -rsf $f $RK_ROOTFS_DIR/ - done - ;; - esac - - if [ ! -f "$RK_ROOTFS_DIR/$ROOTFS_IMG" ]; then - echo "There's no $ROOTFS_IMG generated..." - exit 1 - fi - - ln -rsf $RK_ROOTFS_DIR/$ROOTFS_IMG $RK_ROOTFS_IMG - - finish_build -} - -function build_recovery(){ - - if [ "$RK_UPDATE_SDCARD_ENABLE_FOR_AB" = "true" ] ;then - RK_CFG_RECOVERY=$RK_UPDATE_SDCARD_CFG_RECOVERY - fi - - if [ ! -z "$RK_PACKAGE_FILE_AB" ]; then - return 0 - fi - - check_config RK_CFG_RECOVERY || return 0 - - echo "==========Start building recovery==========" - echo "TARGET_RECOVERY_CONFIG=$RK_CFG_RECOVERY" - echo "========================================" - - /usr/bin/time -f "you take %E to build recovery" \ - $COMMON_DIR/mk-ramdisk.sh recovery.img $RK_CFG_RECOVERY - - ln -rsf buildroot/output/$RK_CFG_RECOVERY/images/recovery.img \ - rockdev/recovery.img - - cp buildroot/output/$RK_CFG_RECOVERY/images/recovery.img \ - u-boot/recovery.img - - finish_build -} - -function build_pcba(){ - check_config RK_CFG_PCBA || return 0 - - echo "==========Start building pcba==========" - echo "TARGET_PCBA_CONFIG=$RK_CFG_PCBA" - echo "====================================" - - /usr/bin/time -f "you take %E to build pcba" \ - $COMMON_DIR/mk-ramdisk.sh pcba.img $RK_CFG_PCBA - - finish_build -} - -BOOT_FIXED_CONFIGS=" - CONFIG_BLK_DEV_DM - CONFIG_DM_CRYPT - CONFIG_BLK_DEV_CRYPTOLOOP - CONFIG_DM_VERITY" - -BOOT_OPTEE_FIXED_CONFIGS=" - CONFIG_TEE - CONFIG_OPTEE" - -UBOOT_FIXED_CONFIGS=" - CONFIG_FIT_SIGNATURE - CONFIG_SPL_FIT_SIGNATURE" - -UBOOT_AB_FIXED_CONFIGS=" - CONFIG_ANDROID_AB" - -ROOTFS_UPDATE_ENGINEBIN_CONFIGS=" - BR2_PACKAGE_RECOVERY - BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN" - -ROOTFS_AB_FIXED_CONFIGS=" - $ROOTFS_UPDATE_ENGINEBIN_CONFIGS - BR2_PACKAGE_RECOVERY_BOOTCONTROL" - -function defconfig_check() { - # 1. defconfig 2. fixed config - echo debug-$1 - for i in $2 - do - echo "look for $i" - result=$(cat $1 | grep "${i}=y" -w || echo "No found") - if [ "$result" = "No found" ]; then - echo -e "\e[41;1;37mSecurity: No found config ${i} in $1 \e[0m" - echo "make sure your config include this list" - echo "---------------------------------------" - echo "$2" - echo "---------------------------------------" - return -1; - fi - done - return 0 -} - -function find_string_in_config(){ - result=$(cat "$2" | grep "$1" || echo "No found") - if [ "$result" = "No found" ]; then - echo "Security: No found string $1 in $2" - return -1; - fi - return 0; -} - -function check_security_condition(){ - # check security enabled - test -z "$RK_SYSTEM_CHECK_METHOD" && return 0 - - if [ ! -d u-boot/keys ]; then - echo "ERROR: No root keys(u-boot/keys) found in u-boot" - echo " Create it by ./build.sh createkeys or move your key to it" - return -1 - fi - - if [ "$RK_SYSTEM_CHECK_METHOD" = "DM-E" ]; then - if [ ! -e u-boot/keys/root_passwd ]; then - echo "ERROR: No root passwd(u-boot/keys/root_passwd) found in u-boot" - echo " echo your root key for sudo to u-boot/keys/root_passwd" - echo " some operations need supper user permission when create encrypt image" - return -1 - fi - - if [ ! -e u-boot/keys/system_enc_key ]; then - echo "ERROR: No enc key(u-boot/keys/system_enc_key) found in u-boot" - echo " Create it by ./build.sh createkeys or move your key to it" - return -1 - fi - - BOOT_FIXED_CONFIGS="${BOOT_FIXED_CONFIGS} - ${BOOT_OPTEE_FIXED_CONFIGS}" - fi - - echo "check kernel defconfig" - defconfig_check kernel/arch/$RK_ARCH/configs/$RK_KERNEL_DEFCONFIG "$BOOT_FIXED_CONFIGS" - - if [ ! -z "${RK_PACKAGE_FILE_AB}" ]; then - UBOOT_FIXED_CONFIGS="${UBOOT_FIXED_CONFIGS} - ${UBOOT_AB_FIXED_CONFIGS}" - - defconfig_check buildroot/configs/${RK_CFG_BUILDROOT}_defconfig "$ROOTFS_AB_FIXED_CONFIGS" - fi - echo "check uboot defconfig" - defconfig_check u-boot/configs/${RK_UBOOT_DEFCONFIG}_defconfig "$UBOOT_FIXED_CONFIGS" - - if [ "$RK_SYSTEM_CHECK_METHOD" = "DM-E" ]; then - echo "check ramdisk defconfig" - defconfig_check buildroot/configs/${RK_CFG_RAMBOOT}_defconfig "$ROOTFS_UPDATE_ENGINEBIN_CONFIGS" - fi - - echo "check rootfs defconfig" - find_string_in_config "BR2_ROOTFS_OVERLAY=\".*board/rockchip/common/security-system-overlay.*" "buildroot/configs/${RK_CFG_BUILDROOT}_defconfig" - - echo "Security: finish check" -} - -function build_all(){ - echo "============================================" - echo "TARGET_ARCH=$RK_ARCH" - echo "TARGET_PLATFORM=$RK_TARGET_PRODUCT" - echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG" - echo "TARGET_SPL_CONFIG=$RK_SPL_DEFCONFIG" - echo "TARGET_KERNEL_CONFIG=$RK_KERNEL_DEFCONFIG" - echo "TARGET_KERNEL_DTS=$RK_KERNEL_DTS" - echo "TARGET_TOOLCHAIN_CONFIG=$RK_CFG_TOOLCHAIN" - echo "TARGET_BUILDROOT_CONFIG=$RK_CFG_BUILDROOT" - echo "TARGET_RECOVERY_CONFIG=$RK_CFG_RECOVERY" - echo "TARGET_PCBA_CONFIG=$RK_CFG_PCBA" - echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT" - echo "============================================" - - # NOTE: On secure boot-up world, if the images build with fit(flattened image tree) - # we will build kernel and ramboot firstly, - # and then copy images into u-boot to sign the images. - if [ "$RK_RAMDISK_SECURITY_BOOTUP" != "true" ];then - #note: if build spl, it will delete loader.bin in uboot directory, - # so can not build uboot and spl at the same time. - if [ -z $RK_SPL_DEFCONFIG ]; then - build_uboot - else - build_spl - fi - fi - - check_security_condition - build_loader - - if [ "$RK_EXTBOOT" = "true" ]; then - build_kerneldeb - build_extboot - else - build_kernel - fi - - build_toolchain - build_rootfs ${RK_ROOTFS_SYSTEM:-buildroot} - build_recovery - build_ramboot - - if [ "$RK_RAMDISK_SECURITY_BOOTUP" = "true" ];then - #note: if build spl, it will delete loader.bin in uboot directory, - # so can not build uboot and spl at the same time. - if [ -z $RK_SPL_DEFCONFIG ]; then - build_uboot - else - build_spl - fi - fi - - finish_build -} - -function build_cleanall(){ - echo "clean uboot, kernel, rootfs, recovery" - - cd u-boot - make distclean - cd - - cd kernel - make distclean - cd - - rm -rf buildroot/output - rm -rf yocto/build/tmp - rm -rf debian/binary - rm -rf ubuntu/binary - - finish_build -} - -function build_firmware(){ - ./mkfirmware.sh $BOARD_CONFIG - - finish_build -} - -function build_updateimg(){ - IMAGE_PATH=$TOP_DIR/rockdev - PACK_TOOL_DIR=$TOP_DIR/tools/linux/Linux_Pack_Firmware - - cd $PACK_TOOL_DIR/rockdev - - if [ -f "$RK_PACKAGE_FILE_AB" ]; then - build_sdcard_package - build_otapackage - - cd $PACK_TOOL_DIR/rockdev - echo "Make Linux a/b update_ab.img." - source_package_file_name=`ls -lh package-file | awk -F ' ' '{print $NF}'` - ln -fs "$RK_PACKAGE_FILE_AB" package-file - ./mkupdate.sh - mv update.img $IMAGE_PATH/update_ab.img - ln -fs $source_package_file_name package-file - else - echo "Make update.img" - - if [ -f "$RK_PACKAGE_FILE" ]; then - source_package_file_name=`ls -lh package-file | awk -F ' ' '{print $NF}'` - ln -fs "$RK_PACKAGE_FILE" package-file - ./mkupdate.sh - ln -fs $source_package_file_name package-file - else - ./mkupdate.sh - fi - mv update.img $IMAGE_PATH - fi - - finish_build -} - -function build_otapackage(){ - IMAGE_PATH=$TOP_DIR/rockdev - PACK_TOOL_DIR=$TOP_DIR/tools/linux/Linux_Pack_Firmware - - echo "Make ota ab update_ota.img" - cd $PACK_TOOL_DIR/rockdev - if [ -f "$RK_PACKAGE_FILE_OTA" ]; then - source_package_file_name=`ls -lh $PACK_TOOL_DIR/rockdev/package-file | awk -F ' ' '{print $NF}'` - ln -fs "$RK_PACKAGE_FILE_OTA" package-file - ./mkupdate.sh - mv update.img $IMAGE_PATH/update_ota.img - ln -fs $source_package_file_name package-file - fi - - finish_build -} - -function build_sdcard_package(){ - - check_config RK_UPDATE_SDCARD_ENABLE_FOR_AB || return 0 - - local image_path=$TOP_DIR/rockdev - local pack_tool_dir=$TOP_DIR/tools/linux/Linux_Pack_Firmware - local rk_sdupdate_ab_misc=${RK_SDUPDATE_AB_MISC:=sdupdate-ab-misc.img} - local rk_parameter_sdupdate=${RK_PARAMETER_SDUPDATE:=parameter-sdupdate.txt} - local rk_package_file_sdcard_update=${RK_PACKAGE_FILE_SDCARD_UPDATE:=sdcard-update-package-file} - local sdupdate_ab_misc_img=$TOP_DIR/device/rockchip/rockimg/$rk_sdupdate_ab_misc - local parameter_sdupdate=$TOP_DIR/device/rockchip/rockimg/$rk_parameter_sdupdate - local recovery_img=$TOP_DIR/buildroot/output/$RK_UPDATE_SDCARD_CFG_RECOVERY/images/recovery.img - - if [ $RK_UPDATE_SDCARD_CFG_RECOVERY ]; then - if [ -f $recovery_img ]; then - echo -n "create recovery.img..." - ln -rsf $recovery_img $image_path/recovery.img - else - echo "error: $recovery_img not found!" - return 1 - fi - fi - - - echo "Make sdcard update update_sdcard.img" - cd $pack_tool_dir/rockdev - if [ -f "$rk_package_file_sdcard_update" ]; then - - if [ $rk_parameter_sdupdate ]; then - if [ -f $parameter_sdupdate ]; then - echo -n "create sdcard update image parameter..." - ln -rsf $parameter_sdupdate $image_path/ - fi - fi - - if [ $rk_sdupdate_ab_misc ]; then - if [ -f $sdupdate_ab_misc_img ]; then - echo -n "create sdupdate ab misc.img..." - ln -rsf $sdupdate_ab_misc_img $image_path/ - fi - fi - - source_package_file_name=`ls -lh $pack_tool_dir/rockdev/package-file | awk -F ' ' '{print $NF}'` - ln -fs "$rk_package_file_sdcard_update" package-file - ./mkupdate.sh - mv update.img $image_path/update_sdcard.img - ln -fs $source_package_file_name package-file - rm -f $image_path/$rk_sdupdate_ab_misc $image_path/$rk_parameter_sdupdate $image_path/recovery.img - fi - - finish_build -} - -function build_save(){ - IMAGE_PATH=$TOP_DIR/rockdev - DATE=$(date +%Y%m%d) - TARGET=$(echo $RK_ROOTFS_TARGET | sed -e "s/\b\(.\)/\u\1/g") - - if [ "${RK_ROOTFS_SYSTEM}" != "buildroot" ];then - if [ "${RK_ROOTFS_SYSTEM}" != "debian" ];then - Version="ubuntu"$RK_UBUNTU_VERSION"-"$RK_ROOTFS_TARGET"-"$DATE - else - Version="debian"$RK_DEBIAN_VERSION"-"$RK_ROOTFS_TARGET"-"$DATE - fi - else - Version="$RK_ROOTFS_SYSTEM"-"$DATE" - fi - - Device_Name=$RK_PKG_NAME - # Device_Name="$(echo $RK_KERNEL_DTS | tr '[:lower:]' '[:upper:]')" - - ZIP_NAME=$Device_Name"-"$Version - STUB_PATH=IMAGE/$ZIP_NAME - export STUB_PATH=$TOP_DIR/$STUB_PATH - export STUB_PATCH_PATH=$STUB_PATH/PATCHES - mkdir -p $STUB_PATH - - #Generate patches - .repo/repo/repo forall -c \ - "$TOP_DIR/device/rockchip/common/gen_patches_body.sh" - - #Copy stubs - .repo/repo/repo manifest -r -o $STUB_PATH/manifest_${DATE}.xml - mkdir -p $STUB_PATCH_PATH/kernel - cp kernel/.config $STUB_PATCH_PATH/kernel - cp kernel/vmlinux $STUB_PATCH_PATH/kernel - mkdir -p $STUB_PATH/IMAGES/ - cp $IMAGE_PATH/* $STUB_PATH/IMAGES/ - - cd $STUB_PATH/IMAGES/ - mv update.img ${ZIP_NAME}_update.img - md5sum ${ZIP_NAME}_update.img > md5sum.txt - # zip -o ../${ZIP_NAME}_update.zip ${ZIP_NAME}_update.img - 7z a ../${ZIP_NAME}_update.7z ${ZIP_NAME}_update.img md5sum.txt - cd - - - #Save build command info - echo "UBOOT: defconfig: $RK_UBOOT_DEFCONFIG" >> $STUB_PATH/build_cmd_info - echo "KERNEL: defconfig: $RK_KERNEL_DEFCONFIG, dts: $RK_KERNEL_DTS" >> $STUB_PATH/build_cmd_info - echo "BUILDROOT: $RK_CFG_BUILDROOT" >> $STUB_PATH/build_cmd_info - - finish_build -} - -function build_allsave(){ - rm -fr $TOP_DIR/rockdev - build_all - build_firmware - build_updateimg - # build_save - - # build_check_power_domain - - finish_build -} - -function create_keys() { - test -d u-boot/keys && echo "ERROR: u-boot/keys has existed" && return -1 - - mkdir u-boot/keys -p - cd u-boot/keys - $TOP_DIR/rkbin/tools/rk_sign_tool kk --bits 2048 - cd - - - ln -s private_key.pem u-boot/keys/dev.key - ln -s public_key.pem u-boot/keys/dev.pubkey - openssl req -batch -new -x509 -key u-boot/keys/dev.key -out u-boot/keys/dev.crt - - openssl rand -out u-boot/keys/system_enc_key -hex 32 -} - -function security_is_enabled() -{ - if [ "$RK_RAMDISK_SECURITY_BOOTUP" != "true" ]; then - echo "No security paramter found in .BoardConfig.mk" - exit -1 - fi -} - - -#========================= -# build targets -#========================= - -if echo $@|grep -wqE "help|-h"; then - if [ -n "$2" -a "$(type -t usage$2)" == function ]; then - echo "###Current SDK Default [ $2 ] Build Command###" - eval usage$2 - else - usage - fi - exit 0 -fi - -OPTIONS="${@:-allsave}" - -[ -f "device/rockchip/$RK_TARGET_PRODUCT/$RK_BOARD_PRE_BUILD_SCRIPT" ] \ - && source "device/rockchip/$RK_TARGET_PRODUCT/$RK_BOARD_PRE_BUILD_SCRIPT" # board hooks - -for option in ${OPTIONS}; do - echo "processing option: $option" - case $option in - BoardConfig*.mk) - option=device/rockchip/$RK_TARGET_PRODUCT/$option - ;& - *.mk) - CONF=$(realpath $option) - echo "switching to board: $CONF" - if [ ! -f $CONF ]; then - echo "not exist!" - exit 1 - fi - - ln -rsf $CONF $BOARD_CONFIG - ;; - lunch) build_select_board ;; - all) build_all ;; - save) build_save ;; - allsave) build_allsave ;; - check) build_check ;; - cleanall) build_cleanall ;; - firmware) build_firmware ;; - updateimg) build_updateimg ;; - otapackage) build_otapackage ;; - sdpackage) build_sdcard_package ;; - toolchain) build_toolchain ;; - spl) build_spl ;; - uboot) config_uboot ;; - uefi) build_uefi ;; - loader) build_loader ;; - kernel) build_kernel ;; - kerneldeb) build_kerneldeb ;; - extboot) build_extboot ;; - modules) build_modules ;; - rootfs|buildroot|ubuntu|debian|distro|yocto) build_rootfs $option ;; - pcba) build_pcba ;; - ramboot) build_ramboot ;; - recovery) build_recovery ;; - multi-npu_boot) build_multi-npu_boot ;; - info) build_info ;; - app/*|external/*) build_pkg $option ;; - createkeys) create_keys ;; - security_boot) security_is_enabled; build_ramboot; build_uboot boot ;; - security_uboot) security_is_enabled; build_uboot uboot ;; - security_recovery) security_is_enabled; build_recovery; build_uboot recovery ;; - security_check) check_security_condition ;; - security_rootfs) - security_is_enabled - build_rootfs - build_ramboot - build_uboot - echo "please update rootfs.img / boot.img" - ;; - *) usage ;; - esac -done