blob: 2b7cf0a41d3b6972af0c8e31805c4f4f91ce33e6 [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')
shijie.xiong696e17c2022-04-25 10:53:33 +080078 UBOOT_BOARDNAME="a1_ad403_nand_rtos"
shijie.xiong1369b8c2022-03-31 15:22:51 +080079 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
shijie.xiong82d1b622022-06-28 14:33:57 +080088 #Xip config
89 case $DSP_BOARD in
90 'ad401_a113l_hifi4a_lowpower')
91 if [ $UBOOT_BOARDNAME == 'a1_ad401_nor_rtos' ]; then
92 RTOS_XIP=1
93 fi
94 ;;
95 *) ;;
96
97 esac
98
shijie.xiong1369b8c2022-03-31 15:22:51 +080099 #Arch prefix settings
shijie.xiongbc5d3672022-04-01 17:52:16 +0800100 if [ -n "$RTOS_ARCH" ]; then
101 ARCH_PREFIX="${RTOS_ARCH}""-"
102 PRODUCT_SUFFIX="-""${RTOS_PRODUCT}"
shijie.xiong1369b8c2022-03-31 15:22:51 +0800103 fi
shijie.xiongbc5d3672022-04-01 17:52:16 +0800104 if [ -n "$DSP_ARCH" ]; then
105 ARCH_PREFIX="${ARCH_PREFIX}""${DSP_ARCH}""-"
106 PRODUCT_SUFFIX="${PRODUCT_SUFFIX}""-""${DSP_PRODUCT}"
shijie.xiong1369b8c2022-03-31 15:22:51 +0800107 fi
108}
109
110#build rtos dsp
111function build_rtos_dsp() {
112
113 pushd $RTOS_BUILD_DIR
114
shijie.xiongbc5d3672022-04-01 17:52:16 +0800115 source scripts/env.sh ${DSP_ARCH} ${DSP_SOC} ${DSP_BOARD} ${DSP_PRODUCT}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800116
117 make
118
119 test -f ${DSP_SDK_SINGED_BIN_FILE} && cp ${DSP_SDK_SINGED_BIN_FILE} $PROJECT_BUILD_OUT_IMAGE_PATH/dspboot.bin
shijie.xiong3fe6f042022-08-17 10:56:18 +0800120 test -f ${DSP_SDK_DEBUG_FILE_PREFIX}.lst && cp ${DSP_SDK_DEBUG_FILE_PREFIX}.lst $PROJECT_BUILD_OUT_IMAGE_PATH/${DSP_ARCH}-${DSP_BOARD}.lst
121 test -f ${DSP_SDK_DEBUG_FILE_PREFIX}.map && cp ${DSP_SDK_DEBUG_FILE_PREFIX}.map $PROJECT_BUILD_OUT_IMAGE_PATH/${DSP_ARCH}-${DSP_BOARD}.map
shijie.xiong1369b8c2022-03-31 15:22:51 +0800122 rm -rf $DSP_SDK_OUT_PATH
123
124 popd
125}
126
127#build rtos uimage
128function build_rtos_image() {
129
130 pushd $RTOS_BUILD_DIR
131
shijie.xiongbc5d3672022-04-01 17:52:16 +0800132 source scripts/env.sh ${RTOS_ARCH} ${RTOS_SOC} ${RTOS_BOARD} ${RTOS_PRODUCT}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800133
shijie.xiong82d1b622022-06-28 14:33:57 +0800134 if [ -n "$RTOS_XIP" ]; then
135 sed -i -e 's/CONFIG_XIP .*$/CONFIG_XIP 1/' $RTOS_XIP_CONFIG_FILE
136 fi
137
shijie.xiong1369b8c2022-03-31 15:22:51 +0800138 if [ -n "$1" ] &&
139 [ $1 == "backtrace" ]; then
140 make backtrace
shijie.xiong82d1b622022-06-28 14:33:57 +0800141 if [ -n "$RTOS_XIP" ]; then
142 make -f ${BUILD_SYSTEM_DIR}/xip.mk xip
143 cp ${RTOS_SDK_OUT_PATH}/${KERNEL}/${KERNEL}.bin ${RTOS_SDK_SINGED_BIN_FILE}
144 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800145 else
146 make
shijie.xiong82d1b622022-06-28 14:33:57 +0800147 if [ -n "$RTOS_XIP" ]; then
148 make -f ${BUILD_SYSTEM_DIR}/xip.mk xip
149 cp ${RTOS_SDK_OUT_PATH}/${KERNEL}/${KERNEL}.bin ${RTOS_SDK_SINGED_BIN_FILE}
150 fi
151 fi
152
153 if [ -n "$RTOS_XIP" ]; then
154 sed -i -e 's/CONFIG_XIP .*$/CONFIG_XIP 0/' $RTOS_XIP_CONFIG_FILE
shijie.xiong1369b8c2022-03-31 15:22:51 +0800155 fi
156
157 if [ $? -ne 0 ]; then
158 echo "bulid rtos image faile error:$?"
159 popd
160 exit 1
161 else
shijie.xiong82d1b622022-06-28 14:33:57 +0800162 if [ -z "$RTOS_XIP" ]; then
163 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
164 test -f ${RTOS_SDK_IMAGE_PATH}/rtos-uImage && cp ${RTOS_SDK_IMAGE_PATH}/rtos-uImage $PROJECT_BUILD_OUT_IMAGE_PATH/rtos-uImage
shijie.xiong3fe6f042022-08-17 10:56:18 +0800165 test -f ${RTOS_SDK_DEBUG_FILE_PREFIX}.lst && cp ${RTOS_SDK_DEBUG_FILE_PREFIX}.lst $PROJECT_BUILD_OUT_IMAGE_PATH/${RTOS_ARCH}-${RTOS_BOARD}.lst
166 test -f ${RTOS_SDK_DEBUG_FILE_PREFIX}.map && cp ${RTOS_SDK_DEBUG_FILE_PREFIX}.map $PROJECT_BUILD_OUT_IMAGE_PATH/${RTOS_ARCH}-${RTOS_BOARD}.map
shijie.xiong82d1b622022-06-28 14:33:57 +0800167 rm -rf $RTOS_SDK_OUT_PATH
168 else
169 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
170 cp ${RTOS_SDK_OUT_PATH}/freertos/freertos_b.bin ${RTOS_SDK_IMAGE_PATH}/rtos-xipA
171 cp ${RTOS_SDK_IMAGE_PATH}/* $PROJECT_BUILD_OUT_IMAGE_PATH/
shijie.xiong3fe6f042022-08-17 10:56:18 +0800172 test -f ${RTOS_SDK_DEBUG_FILE_PREFIX}.lst && cp ${RTOS_SDK_DEBUG_FILE_PREFIX}.lst $PROJECT_BUILD_OUT_IMAGE_PATH/${RTOS_ARCH}-${RTOS_BOARD}.lst
173 test -f ${RTOS_SDK_DEBUG_FILE_PREFIX}.map && cp ${RTOS_SDK_DEBUG_FILE_PREFIX}.map $PROJECT_BUILD_OUT_IMAGE_PATH/${RTOS_ARCH}-${RTOS_BOARD}.map
shijie.xiong82d1b622022-06-28 14:33:57 +0800174 rm -rf $RTOS_SDK_OUT_PATH
175 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800176 fi
177
178 popd
179}
180
181#build aml image
182function build_aml_image() {
183 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/platform.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
184 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/usb_flow.aml $PROJECT_BUILD_OUT_IMAGE_PATH/
185 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_sdc_burn.ini $PROJECT_BUILD_OUT_IMAGE_PATH/
186 if [ -z "$BUILD_DSP" ]; then
187 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_ndsp.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
188 $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
189 else
shijie.xiong82d1b622022-06-28 14:33:57 +0800190 if [ -z "$RTOS_XIP" ]; then
191 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
192 $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
193 else
194 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_xip.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
195 $RTOS_BUILD_DIR/image_packer/aml_image_v2_packer -r $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package_xip.conf $PROJECT_BUILD_OUT_IMAGE_PATH $PROJECT_BUILD_OUT_IMAGE_PATH/aml_upgrade_package.img
196 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800197 fi
shijie.xiongbc5d3672022-04-01 17:52:16 +0800198
shijie.xiong3fe6f042022-08-17 10:56:18 +0800199 cd $PROJECT_BUILD_OUT_IMAGE_PATH && rm $(ls | grep -v ".lst" | grep -v ".map" | grep -v ".img")
shijie.xiong1369b8c2022-03-31 15:22:51 +0800200}
201
202#build uboot
203function build_uboot() {
shijie.xiongfe9f21e2022-09-21 10:52:41 +0800204 echo "UBOOT COMPILE START"
shijie.xiongbc5d3672022-04-01 17:52:16 +0800205 if [ -z "$UBOOT_BOARDNAME" ]; then
shijie.xiong1369b8c2022-03-31 15:22:51 +0800206 echo "Select board($BOARD) not support compile uboot"
207 exit 1
208 else
209 pushd $RTOS_BUILD_DIR/boot/
shijie.xiongbc5d3672022-04-01 17:52:16 +0800210 ./mk $UBOOT_BOARDNAME
shijie.xiong1369b8c2022-03-31 15:22:51 +0800211 test -f build/u-boot.bin && cp -av build/u-boot.bin* $PROJECT_BUILD_OUT_IMAGE_PATH
212 popd
213 fi
214}
215
shijie.xiongbc5d3672022-04-01 17:52:16 +0800216package_target_verify
217package_env_config $RTOS_BOARD
shijie.xiong1369b8c2022-03-31 15:22:51 +0800218
shijie.xiong82d1b622022-06-28 14:33:57 +0800219export BUILD_SYSTEM_DIR=${RTOS_BUILD_DIR}/build_system
220export RTOS_XIP_CONFIG_FILE=${RTOS_BUILD_DIR}/boards/${RTOS_ARCH}/${RTOS_BOARD}/lscript.h
shijie.xiong696e17c2022-04-25 10:53:33 +0800221export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/packages/"${ARCH_PREFIX}""${RTOS_SOC}"-${RTOS_BOARD}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800222
shijie.xiongbc5d3672022-04-01 17:52:16 +0800223export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}
224export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images
225export RTOS_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images/${KERNEL}-signed.bin
shijie.xiong3fe6f042022-08-17 10:56:18 +0800226export RTOS_SDK_DEBUG_FILE_PREFIX=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/${KERNEL}/${KERNEL}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800227
shijie.xiongbc5d3672022-04-01 17:52:16 +0800228export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}
229export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images
230export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images/${KERNEL}-signed.bin
shijie.xiong3fe6f042022-08-17 10:56:18 +0800231export DSP_SDK_DEBUG_FILE_PREFIX=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/${KERNEL}/${KERNEL}
shijie.xiongbc5d3672022-04-01 17:52:16 +0800232
shijie.xiong1369b8c2022-03-31 15:22:51 +0800233test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH
234test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH
235test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH
236mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH
237
shijie.xiong1369b8c2022-03-31 15:22:51 +0800238test -n "$BUILD_RTOS" && build_rtos_image $1
shijie.xiongbc5d3672022-04-01 17:52:16 +0800239test -n "$BUILD_DSP" && build_rtos_dsp
240test -n "$BUILD_UBOOT" && build_uboot
shijie.xiong1369b8c2022-03-31 15:22:51 +0800241test -n "$BUILD_IMAGE" && build_aml_image
242
243echo "======Done======"