Rockchip Uboot 多平台编译脚本 menuconfig

143 阅读1分钟

Rockchip Uboot 编译脚本

  • RK uboot 提供了 make.sh 用于 uboot 构建。其功能并不完善,如无法通过 menuconfig 修改配置,输出产物分散等。
  • 可自行编写脚本,实现需要的功能。

构建脚本

  • 以 rk3588 为例, 其余平台只需修改 RK_ARCHRK_DEFCONFIG, TOOLCHAIN_PREFIXLOADER_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,打印帮助。