Rockchip Uboot 编译脚本
- RK uboot 提供了
make.sh
用于 uboot 构建。其功能并不完善,如无法通过menuconfig
修改配置,输出产物分散等。 - 可自行编写脚本,实现需要的功能。
构建脚本
-
以 rk3588 为例, 其余平台只需修改
RK_ARCH
,RK_DEFCONFIG
,TOOLCHAIN_PREFIX
,LOADER_IMG
即可使用:#!/bin/bash CUR_PATH=$(pwd) OUTPUT_PATH=$(pwd)/output // 编译产物输出目录 RK_ARCH=arm64 // 可以为 arm 或者 arm64 RK_DEFCONFIG=rk3588 // 使用的配置文件 // 工具链 TOOLCHAIN_PREFIX=toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- UBOOT_IMG=${CUR_PATH}/uboot.img LOADER_IMG=${CUR_PATH}/rk3588_spl_loader_vx.xx.xxx.bin OUTPUT_UBOOT_IMG=${OUTPUT_PATH}/uboot.img OUTPUT_LOADER_IMG=${OUTPUT_PATH}/MiniLoaderAll.bin print_help() { echo "Usage: $0 [OTIONS] COMMAND" echo "" echo "Options:" echo " --help show this message and exit" echo "" echo "Commands:" echo " -m show menuconfig" } build_uboot() { menuconfig=n while getopts "m" opt; do case $opt in m) menuconfig=y ;; ?) echo "invalid option $opt" exit -1 ;; esac done echo "============Start build uboot============" echo "ARCH =${RK_ARCH}" echo "CONFIG =${RK_DEFCONFIG}_defconfig" echo "==========================================" if [ "${menuconfig}" == "y" ]; then make ARCH=${RK_ARCH} CROSS_COMPILE=${TOOLCHAIN_PREFIX} ${RK_DEFCONFIG}_defconfig make ARCH=${RK_ARCH} CROSS_COMPILE=${TOOLCHAIN_PREFIX} menuconfig make ARCH=${RK_ARCH} CROSS_COMPILE=${TOOLCHAIN_PREFIX} savedefconfig cp defconfig configs/${RK_DEFCONFIG}_defconfig else ./make.sh ${RK_DEFCONFIG} test -d ${OUTPUT_PATH} || mkdir -p ${OUTPUT_PATH} cp -f ${UBOOT_IMG} ${OUTPUT_UBOOT_IMG} cp -f ${LOADER_IMG} ${OUTPUT_LOADER_IMG} fi } if [ "$1" == "--help" -o "$1" == "-h" ]; then print_help $0 exit 0 fi build_uboot $@
使用方法
./build.sh
,构建固件,输出产物默认放入目录output
。./build.sh -m
,进入menuconfig
,默认会保存更改后的配置。./build.sh -h
,打印帮助。