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}))/..) |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 9 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 10 | #Package target check |
| 11 | function package_target_verify() { |
| 12 | |
| 13 | #Get the packed sequence selected by the user |
| 14 | j=0 |
| 15 | while IFS= read -r LINE; do |
| 16 | if [ $j == $CHOICE_PACKAGE ]; then |
| 17 | PACKAGE_ARRY=($(echo $LINE | tr ' ' ' ')) |
| 18 | fi |
| 19 | j=$((j + 1)) |
| 20 | done <$PACKAGE_COMBINATION |
| 21 | |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 22 | #parameter check |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 23 | if [ -z "$PACKAGE_ARRY" ]; then |
shijie.xiong | 9a3c904 | 2022-04-12 17:51:55 +0800 | [diff] [blame] | 24 | echo -e "\033[41;33m package list is not set, please execute source scripts/pkg_env.sh \033[0m" |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 25 | exit 1 |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 26 | fi |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 27 | |
| 28 | #parameter check |
| 29 | for ((loop = 0; loop < ${#PACKAGE_ARRY[@]}; loop += 4)); do |
| 30 | arch=${PACKAGE_ARRY[loop]} |
| 31 | soc=${PACKAGE_ARRY[loop + 1]} |
| 32 | board=${PACKAGE_ARRY[loop + 2]} |
| 33 | product=${PACKAGE_ARRY[loop + 3]} |
| 34 | |
| 35 | echo $arch $soc $board $product |
| 36 | |
| 37 | case ${product} in |
| 38 | 'hifi_dsp') |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 39 | BUILD_DSP=1 |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 40 | DSP_ARCH=$arch |
| 41 | DSP_SOC=$soc |
| 42 | DSP_BOARD=$board |
| 43 | DSP_PRODUCT=$product |
| 44 | ;; |
| 45 | 'speaker') |
| 46 | BUILD_RTOS=1 |
| 47 | RTOS_ARCH=$arch |
| 48 | RTOS_SOC=$soc |
| 49 | RTOS_BOARD=$board |
| 50 | RTOS_PRODUCT=$product |
| 51 | ;; |
| 52 | *) |
| 53 | echo "Unsupported product type:${product}" |
| 54 | exit 1 |
| 55 | ;; |
| 56 | esac |
| 57 | |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 58 | done |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 59 | |
| 60 | #Set the board configuration path |
| 61 | IMAGE_BOARD_CONFIG_DIR="image_packer/$RTOS_SOC/" |
| 62 | |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 63 | #Set up the build project |
| 64 | BUILD_CLEAN=1 |
| 65 | BUILD_IMAGE=1 |
| 66 | BUILD_UBOOT=1 |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 67 | } |
| 68 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 69 | #Packaging environment configuration |
| 70 | function package_env_config() { |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 71 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 72 | #Select the compile parameters of the bootstrap |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 73 | case $1 in |
| 74 | 'ad401_a113l') |
| 75 | UBOOT_BOARDNAME="a1_ad401_nand_rtos" |
| 76 | ;; |
| 77 | 'ad403_a113l') |
| 78 | UBOOT_BOARDNAME="a1_ad403_nor_rtos" |
| 79 | unset BUILD_DSP |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 80 | unset DSP_ARCH |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 81 | ;; |
| 82 | *) |
| 83 | echo "Unsupported board type:$1" |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 84 | exit 1 |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 85 | ;; |
| 86 | esac |
| 87 | |
| 88 | #Arch prefix settings |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 89 | if [ -n "$RTOS_ARCH" ]; then |
| 90 | ARCH_PREFIX="${RTOS_ARCH}""-" |
| 91 | PRODUCT_SUFFIX="-""${RTOS_PRODUCT}" |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 92 | fi |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 93 | if [ -n "$DSP_ARCH" ]; then |
| 94 | ARCH_PREFIX="${ARCH_PREFIX}""${DSP_ARCH}""-" |
| 95 | PRODUCT_SUFFIX="${PRODUCT_SUFFIX}""-""${DSP_PRODUCT}" |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 96 | fi |
| 97 | } |
| 98 | |
| 99 | #build rtos dsp |
| 100 | function build_rtos_dsp() { |
| 101 | |
| 102 | pushd $RTOS_BUILD_DIR |
| 103 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 104 | source scripts/env.sh ${DSP_ARCH} ${DSP_SOC} ${DSP_BOARD} ${DSP_PRODUCT} |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 105 | |
| 106 | make |
| 107 | |
| 108 | test -f ${DSP_SDK_SINGED_BIN_FILE} && cp ${DSP_SDK_SINGED_BIN_FILE} $PROJECT_BUILD_OUT_IMAGE_PATH/dspboot.bin |
| 109 | rm -rf $DSP_SDK_OUT_PATH |
| 110 | |
| 111 | popd |
| 112 | } |
| 113 | |
| 114 | #build rtos uimage |
| 115 | function build_rtos_image() { |
| 116 | |
| 117 | pushd $RTOS_BUILD_DIR |
| 118 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 119 | source scripts/env.sh ${RTOS_ARCH} ${RTOS_SOC} ${RTOS_BOARD} ${RTOS_PRODUCT} |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 120 | |
| 121 | if [ -n "$1" ] && |
| 122 | [ $1 == "backtrace" ]; then |
| 123 | make backtrace |
| 124 | else |
| 125 | make |
| 126 | fi |
| 127 | |
| 128 | if [ $? -ne 0 ]; then |
| 129 | echo "bulid rtos image faile error:$?" |
| 130 | popd |
| 131 | exit 1 |
| 132 | else |
| 133 | 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 |
| 134 | test -f ${RTOS_SDK_IMAGE_PATH}/rtos-uImage && cp ${RTOS_SDK_IMAGE_PATH}/rtos-uImage $PROJECT_BUILD_OUT_IMAGE_PATH/rtos-uImage |
| 135 | rm -rf $RTOS_SDK_OUT_PATH |
| 136 | fi |
| 137 | |
| 138 | popd |
| 139 | } |
| 140 | |
| 141 | #build aml image |
| 142 | function build_aml_image() { |
| 143 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/platform.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 144 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/usb_flow.aml $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 145 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_sdc_burn.ini $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 146 | if [ -z "$BUILD_DSP" ]; then |
| 147 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_ndsp.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 148 | $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 |
| 149 | else |
| 150 | install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package.conf $PROJECT_BUILD_OUT_IMAGE_PATH/ |
| 151 | $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 |
| 152 | fi |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 153 | |
shijie.xiong | 69cbf04 | 2022-04-22 13:32:39 +0800 | [diff] [blame^] | 154 | cd $PROJECT_BUILD_OUT_IMAGE_PATH && rm $(ls | grep -v "aml_upgrade_package.img") |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 155 | } |
| 156 | |
| 157 | #build uboot |
| 158 | function build_uboot() { |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 159 | if [ -z "$UBOOT_BOARDNAME" ]; then |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 160 | echo "Select board($BOARD) not support compile uboot" |
| 161 | exit 1 |
| 162 | else |
| 163 | pushd $RTOS_BUILD_DIR/boot/ |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 164 | ./mk $UBOOT_BOARDNAME |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 165 | test -f build/u-boot.bin && cp -av build/u-boot.bin* $PROJECT_BUILD_OUT_IMAGE_PATH |
| 166 | popd |
| 167 | fi |
| 168 | } |
| 169 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 170 | package_target_verify |
| 171 | package_env_config $RTOS_BOARD |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 172 | |
shijie.xiong | 69cbf04 | 2022-04-22 13:32:39 +0800 | [diff] [blame^] | 173 | export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/packages/"${ARCH_PREFIX}""${RTOS_SOC}"-${RTOS_BOARD}/images/ |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 174 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 175 | export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT} |
| 176 | export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images |
| 177 | export RTOS_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images/${KERNEL}-signed.bin |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 178 | |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 179 | export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT} |
| 180 | export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images |
| 181 | export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images/${KERNEL}-signed.bin |
| 182 | |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 183 | test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH |
| 184 | test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH |
| 185 | test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH |
| 186 | mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH |
| 187 | |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 188 | test -n "$BUILD_RTOS" && build_rtos_image $1 |
shijie.xiong | bc5d367 | 2022-04-01 17:52:16 +0800 | [diff] [blame] | 189 | test -n "$BUILD_DSP" && build_rtos_dsp |
| 190 | test -n "$BUILD_UBOOT" && build_uboot |
shijie.xiong | 1369b8c | 2022-03-31 15:22:51 +0800 | [diff] [blame] | 191 | test -n "$BUILD_IMAGE" && build_aml_image |
| 192 | |
| 193 | echo "======Done======" |