blob: f7d171466c312f8282f29065c323232f45d0209a [file] [log] [blame]
shijie.xiong1369b8c2022-03-31 15:22:51 +08001#! /bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8RTOS_BUILD_DIR=$(realpath $(dirname $(readlink -f ${BASH_SOURCE[0]:-$0}))/..)
shijie.xiong1369b8c2022-03-31 15:22:51 +08009
shijie.xiongbc5d3672022-04-01 17:52:16 +080010#Package target check
11function 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.xiong1369b8c2022-03-31 15:22:51 +080022 #parameter check
shijie.xiongbc5d3672022-04-01 17:52:16 +080023 if [ -z "$PACKAGE_ARRY" ]; then
shijie.xiong9a3c9042022-04-12 17:51:55 +080024 echo -e "\033[41;33m package list is not set, please execute source scripts/pkg_env.sh \033[0m"
shijie.xiongbc5d3672022-04-01 17:52:16 +080025 exit 1
shijie.xiong1369b8c2022-03-31 15:22:51 +080026 fi
shijie.xiongbc5d3672022-04-01 17:52:16 +080027
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.xiong1369b8c2022-03-31 15:22:51 +080039 BUILD_DSP=1
shijie.xiongbc5d3672022-04-01 17:52:16 +080040 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.xiong1369b8c2022-03-31 15:22:51 +080058 done
shijie.xiongbc5d3672022-04-01 17:52:16 +080059
60 #Set the board configuration path
61 IMAGE_BOARD_CONFIG_DIR="image_packer/$RTOS_SOC/"
62
shijie.xiong1369b8c2022-03-31 15:22:51 +080063 #Set up the build project
64 BUILD_CLEAN=1
65 BUILD_IMAGE=1
66 BUILD_UBOOT=1
shijie.xiong1369b8c2022-03-31 15:22:51 +080067}
68
shijie.xiongbc5d3672022-04-01 17:52:16 +080069#Packaging environment configuration
70function package_env_config() {
shijie.xiong1369b8c2022-03-31 15:22:51 +080071
shijie.xiongbc5d3672022-04-01 17:52:16 +080072 #Select the compile parameters of the bootstrap
shijie.xiong1369b8c2022-03-31 15:22:51 +080073 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.xiongbc5d3672022-04-01 17:52:16 +080080 unset DSP_ARCH
shijie.xiong1369b8c2022-03-31 15:22:51 +080081 ;;
82 *)
83 echo "Unsupported board type:$1"
shijie.xiongbc5d3672022-04-01 17:52:16 +080084 exit 1
shijie.xiong1369b8c2022-03-31 15:22:51 +080085 ;;
86 esac
87
88 #Arch prefix settings
shijie.xiongbc5d3672022-04-01 17:52:16 +080089 if [ -n "$RTOS_ARCH" ]; then
90 ARCH_PREFIX="${RTOS_ARCH}""-"
91 PRODUCT_SUFFIX="-""${RTOS_PRODUCT}"
shijie.xiong1369b8c2022-03-31 15:22:51 +080092 fi
shijie.xiongbc5d3672022-04-01 17:52:16 +080093 if [ -n "$DSP_ARCH" ]; then
94 ARCH_PREFIX="${ARCH_PREFIX}""${DSP_ARCH}""-"
95 PRODUCT_SUFFIX="${PRODUCT_SUFFIX}""-""${DSP_PRODUCT}"
shijie.xiong1369b8c2022-03-31 15:22:51 +080096 fi
97}
98
99#build rtos dsp
100function build_rtos_dsp() {
101
102 pushd $RTOS_BUILD_DIR
103
shijie.xiongbc5d3672022-04-01 17:52:16 +0800104 source scripts/env.sh ${DSP_ARCH} ${DSP_SOC} ${DSP_BOARD} ${DSP_PRODUCT}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800105
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
115function build_rtos_image() {
116
117 pushd $RTOS_BUILD_DIR
118
shijie.xiongbc5d3672022-04-01 17:52:16 +0800119 source scripts/env.sh ${RTOS_ARCH} ${RTOS_SOC} ${RTOS_BOARD} ${RTOS_PRODUCT}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800120
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
142function 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.xiongbc5d3672022-04-01 17:52:16 +0800153
shijie.xiong69cbf042022-04-22 13:32:39 +0800154 cd $PROJECT_BUILD_OUT_IMAGE_PATH && rm $(ls | grep -v "aml_upgrade_package.img")
shijie.xiong1369b8c2022-03-31 15:22:51 +0800155}
156
157#build uboot
158function build_uboot() {
shijie.xiongbc5d3672022-04-01 17:52:16 +0800159 if [ -z "$UBOOT_BOARDNAME" ]; then
shijie.xiong1369b8c2022-03-31 15:22:51 +0800160 echo "Select board($BOARD) not support compile uboot"
161 exit 1
162 else
163 pushd $RTOS_BUILD_DIR/boot/
shijie.xiongbc5d3672022-04-01 17:52:16 +0800164 ./mk $UBOOT_BOARDNAME
shijie.xiong1369b8c2022-03-31 15:22:51 +0800165 test -f build/u-boot.bin && cp -av build/u-boot.bin* $PROJECT_BUILD_OUT_IMAGE_PATH
166 popd
167 fi
168}
169
shijie.xiongbc5d3672022-04-01 17:52:16 +0800170package_target_verify
171package_env_config $RTOS_BOARD
shijie.xiong1369b8c2022-03-31 15:22:51 +0800172
shijie.xiong69cbf042022-04-22 13:32:39 +0800173export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/packages/"${ARCH_PREFIX}""${RTOS_SOC}"-${RTOS_BOARD}/images/
shijie.xiong1369b8c2022-03-31 15:22:51 +0800174
shijie.xiongbc5d3672022-04-01 17:52:16 +0800175export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}
176export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images
177export RTOS_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images/${KERNEL}-signed.bin
shijie.xiong1369b8c2022-03-31 15:22:51 +0800178
shijie.xiongbc5d3672022-04-01 17:52:16 +0800179export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}
180export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images
181export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images/${KERNEL}-signed.bin
182
shijie.xiong1369b8c2022-03-31 15:22:51 +0800183test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH
184test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH
185test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH
186mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH
187
shijie.xiong1369b8c2022-03-31 15:22:51 +0800188test -n "$BUILD_RTOS" && build_rtos_image $1
shijie.xiongbc5d3672022-04-01 17:52:16 +0800189test -n "$BUILD_DSP" && build_rtos_dsp
190test -n "$BUILD_UBOOT" && build_uboot
shijie.xiong1369b8c2022-03-31 15:22:51 +0800191test -n "$BUILD_IMAGE" && build_aml_image
192
193echo "======Done======"