shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame^] | 1 | #! /bin/bash |
| 2 | # |
| 3 | # Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved. |
| 4 | # |
| 5 | # SPDX-License-Identifier: MIT |
| 6 | # |
| 7 | |
| 8 | RTOS_BUILD_DIR=$(realpath $(dirname $(readlink -f ${BASH_SOURCE[0]:-$0}))/..) |
| 9 | BOARD_ARRY=(ad401_a113l ad403_a113l) |
| 10 | BOARD_LIST_ARRY=($(find ${RTOS_BUILD_DIR}/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n)) |
| 11 | |
| 12 | #Equipment validity check |
| 13 | function board_validity_check() { |
| 14 | #parameter check |
| 15 | if [ -z "$1" ]; then |
| 16 | echo -e "\033[41;33m COMPILER is not set, Please execute source scripts/env.sh \033[0m" |
| 17 | exit 0 |
| 18 | fi |
| 19 | #Determine whether this board is supported |
| 20 | for boards in ${BOARD_ARRY[@]}; do |
| 21 | if [ "$boards" == "$1" ] || [[ "$1" =~ $boards"_hifi" ]]; then |
| 22 | BUILD_RTOS=1 |
| 23 | fi |
| 24 | done |
| 25 | if [ -z "$BUILD_RTOS" ]; then |
| 26 | echo -e "\033[41;33m WARNING: $1 boards do not support packaging!!!\033[0m" |
| 27 | exit 0 |
| 28 | fi |
| 29 | #Identify and determine the corresponding board combination |
| 30 | for boards in ${BOARD_LIST_ARRY[@]}; do |
| 31 | if [ $boards == $1 ] && [[ "$1" =~ "_hifi" ]]; then |
| 32 | BOARD_NAME=${1%_hifi*} |
| 33 | DSP_BOARD_NAME=$1 |
| 34 | BUILD_DSP=1 |
| 35 | elif [ $boards == $1 ]; then |
| 36 | BOARD_NAME=$1 |
| 37 | for dsp in ${BOARD_LIST_ARRY[@]}; do |
| 38 | if [[ "$dsp" =~ $BOARD_NAME"_hifi" ]]; then |
| 39 | DSP_BOARD_NAME=$dsp |
| 40 | BUILD_DSP=1 |
| 41 | fi |
| 42 | done |
| 43 | fi |
| 44 | done |
| 45 | #Set up the build project |
| 46 | BUILD_CLEAN=1 |
| 47 | BUILD_IMAGE=1 |
| 48 | BUILD_UBOOT=1 |
| 49 | #Set the board configuration path |
| 50 | IMAGE_BOARD_CONFIG_DIR="image_packer/$SOC/" |
| 51 | } |
| 52 | |
| 53 | #select build board |
| 54 | function build_board_select() { |
| 55 | |
| 56 | #Determine dsp and arm types |
| 57 | case ${SOC} in |
| 58 | 'a1') |
| 59 | RTOS_BOARD_ARCH="arm64" |
| 60 | DSP_BOARD_ARCH="xtensa" |
| 61 | RTOS_BOARD_PRODUCT="speaker" |
| 62 | DSP_BOARD_PRODUCT="hifi_dsp" |
| 63 | ;; |
| 64 | *) |
| 65 | echo "Unsupported soc type:${SOC}" |
| 66 | exit 0 |
| 67 | ;; |
| 68 | esac |
| 69 | |
| 70 | #Determine the hardware model, boot type |
| 71 | case $1 in |
| 72 | 'ad401_a113l') |
| 73 | UBOOT_BOARDNAME="a1_ad401_nand_rtos" |
| 74 | ;; |
| 75 | 'ad403_a113l') |
| 76 | UBOOT_BOARDNAME="a1_ad403_nor_rtos" |
| 77 | unset BUILD_DSP |
| 78 | unset DSP_BOARD_ARCH |
| 79 | ;; |
| 80 | *) |
| 81 | echo "Unsupported board type:$1" |
| 82 | exit 0 |
| 83 | ;; |
| 84 | esac |
| 85 | |
| 86 | #Arch prefix settings |
| 87 | if [ -n "$RTOS_BOARD_ARCH" ]; then |
| 88 | ARCH_PREFIX="${RTOS_BOARD_ARCH}""-" |
| 89 | fi |
| 90 | if [ -n "$DSP_BOARD_ARCH" ]; then |
| 91 | ARCH_PREFIX="${ARCH_PREFIX}""${DSP_BOARD_ARCH}""-" |
| 92 | fi |
| 93 | } |
| 94 | |
| 95 | #build rtos dsp |
| 96 | function build_rtos_dsp() { |
| 97 | |
| 98 | pushd $RTOS_BUILD_DIR |
| 99 | |
| 100 | source scripts/env.sh ${DSP_BOARD_ARCH} ${SOC} ${DSP_BOARD_NAME} ${DSP_BOARD_PRODUCT} |
| 101 | |
| 102 | make |
| 103 | |
| 104 | test -f ${DSP_SDK_SINGED_BIN_FILE} && cp ${DSP_SDK_SINGED_BIN_FILE} $PROJECT_BUILD_OUT_IMAGE_PATH/dspboot.bin |
| 105 | rm -rf $DSP_SDK_OUT_PATH |
| 106 | |
| 107 | popd |
| 108 | } |
| 109 | |
| 110 | #build rtos uimage |
| 111 | function build_rtos_image() { |
| 112 | |
| 113 | pushd $RTOS_BUILD_DIR |
| 114 | |
| 115 | source scripts/env.sh ${RTOS_BOARD_ARCH} ${SOC} ${BOARD_NAME} ${RTOS_BOARD_PRODUCT} |
| 116 | |
| 117 | if [ -n "$1" ] && |
| 118 | [ $1 == "backtrace" ]; then |
| 119 | make backtrace |
| 120 | else |
| 121 | make |
| 122 | fi |
| 123 | |
| 124 | if [ $? -ne 0 ]; then |
| 125 | echo "bulid rtos image faile error:$?" |
| 126 | popd |
| 127 | exit 1 |
| 128 | else |
| 129 | mkimage -A ${ARCH} -O u-boot -T standalone -C none -a 0x1000 -e 0x1000 -n rtos -d ${RTOS_SDK_SINGED_BIN_FILE} ${RTOS_SDK_IMAGE_PATH}/rtos-uImage |
| 130 | test -f ${RTOS_SDK_IMAGE_PATH}/rtos-uImage && cp ${RTOS_SDK_IMAGE_PATH}/rtos-uImage $PROJECT_BUILD_OUT_IMAGE_PATH/rtos-uImage |
| 131 | rm -rf $RTOS_SDK_OUT_PATH |
| 132 | fi |
| 133 | |
| 134 | popd |
| 135 | } |
| 136 | |
| 137 | #build aml image |
| 138 | function build_aml_image() { |
| 139 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/platform.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 140 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/usb_flow.aml $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 141 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_sdc_burn.ini $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 142 | if [ -z "$BUILD_DSP" ]; then |
| 143 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_ndsp.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 144 | $RTOS_BUILD_DIR/image_packer/aml_image_v2_packer -r $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package_ndsp.conf $PROJECT_BUILD_OUT_IMAGE_PATH $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package.img |
| 145 | else |
| 146 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 147 | $RTOS_BUILD_DIR/image_packer/aml_image_v2_packer -r $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package.conf $PROJECT_BUILD_OUT_IMAGE_PATH $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package.img |
| 148 | fi |
| 149 | } |
| 150 | |
| 151 | #build uboot |
| 152 | function build_uboot() { |
| 153 | if [ $UBOOT_BOARDNAME == "none" ]; then |
| 154 | echo "Select board($BOARD) not support compile uboot" |
| 155 | exit 1 |
| 156 | else |
| 157 | pushd $RTOS_BUILD_DIR/boot/ |
| 158 | ./mk $1 |
| 159 | test -f build/u-boot.bin && cp -av build/u-boot.bin* $PROJECT_BUILD_OUT_IMAGE_PATH |
| 160 | popd |
| 161 | fi |
| 162 | } |
| 163 | |
| 164 | board_validity_check $BOARD |
| 165 | build_board_select $BOARD_NAME |
| 166 | |
| 167 | export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/package/"${ARCH_PREFIX}""${SOC}"-${BOARD_NAME}/images/ |
| 168 | |
| 169 | export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT} |
| 170 | export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT}/images |
| 171 | export RTOS_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT}/images/${KERNEL}-signed.bin |
| 172 | |
| 173 | export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT} |
| 174 | export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT}/images |
| 175 | export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT}/images/${KERNEL}-signed.bin |
| 176 | |
| 177 | test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH |
| 178 | test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH |
| 179 | test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH |
| 180 | mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH |
| 181 | |
| 182 | test -n "$BUILD_DSP" && build_rtos_dsp |
| 183 | test -n "$BUILD_RTOS" && build_rtos_image $1 |
| 184 | test -n "$BUILD_UBOOT" && build_uboot $UBOOT_BOARDNAME |
| 185 | test -n "$BUILD_IMAGE" && build_aml_image |
| 186 | |
| 187 | echo "======Done======" |
| 188 | echo "Image Path: $PROJECT_BUILD_OUT_IMAGE_PATH " |
| 189 | ls -la $PROJECT_BUILD_OUT_IMAGE_PATH |