blob: 9487cd69eafba72cdddef0d5226171d10ee99731 [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
120 rm -rf $DSP_SDK_OUT_PATH
121
122 popd
123}
124
125#build rtos uimage
126function build_rtos_image() {
127
128 pushd $RTOS_BUILD_DIR
129
shijie.xiongbc5d3672022-04-01 17:52:16 +0800130 source scripts/env.sh ${RTOS_ARCH} ${RTOS_SOC} ${RTOS_BOARD} ${RTOS_PRODUCT}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800131
shijie.xiong82d1b622022-06-28 14:33:57 +0800132 if [ -n "$RTOS_XIP" ]; then
133 sed -i -e 's/CONFIG_XIP .*$/CONFIG_XIP 1/' $RTOS_XIP_CONFIG_FILE
134 fi
135
shijie.xiong1369b8c2022-03-31 15:22:51 +0800136 if [ -n "$1" ] &&
137 [ $1 == "backtrace" ]; then
138 make backtrace
shijie.xiong82d1b622022-06-28 14:33:57 +0800139 if [ -n "$RTOS_XIP" ]; then
140 make -f ${BUILD_SYSTEM_DIR}/xip.mk xip
141 cp ${RTOS_SDK_OUT_PATH}/${KERNEL}/${KERNEL}.bin ${RTOS_SDK_SINGED_BIN_FILE}
142 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800143 else
144 make
shijie.xiong82d1b622022-06-28 14:33:57 +0800145 if [ -n "$RTOS_XIP" ]; then
146 make -f ${BUILD_SYSTEM_DIR}/xip.mk xip
147 cp ${RTOS_SDK_OUT_PATH}/${KERNEL}/${KERNEL}.bin ${RTOS_SDK_SINGED_BIN_FILE}
148 fi
149 fi
150
151 if [ -n "$RTOS_XIP" ]; then
152 sed -i -e 's/CONFIG_XIP .*$/CONFIG_XIP 0/' $RTOS_XIP_CONFIG_FILE
shijie.xiong1369b8c2022-03-31 15:22:51 +0800153 fi
154
155 if [ $? -ne 0 ]; then
156 echo "bulid rtos image faile error:$?"
157 popd
158 exit 1
159 else
shijie.xiong82d1b622022-06-28 14:33:57 +0800160 if [ -z "$RTOS_XIP" ]; then
161 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
162 test -f ${RTOS_SDK_IMAGE_PATH}/rtos-uImage && cp ${RTOS_SDK_IMAGE_PATH}/rtos-uImage $PROJECT_BUILD_OUT_IMAGE_PATH/rtos-uImage
163 rm -rf $RTOS_SDK_OUT_PATH
164 else
165 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
166 cp ${RTOS_SDK_OUT_PATH}/freertos/freertos_b.bin ${RTOS_SDK_IMAGE_PATH}/rtos-xipA
167 cp ${RTOS_SDK_IMAGE_PATH}/* $PROJECT_BUILD_OUT_IMAGE_PATH/
168 rm -rf $RTOS_SDK_OUT_PATH
169 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800170 fi
171
172 popd
173}
174
175#build aml image
176function build_aml_image() {
177 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/platform.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
178 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/usb_flow.aml $PROJECT_BUILD_OUT_IMAGE_PATH/
179 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_sdc_burn.ini $PROJECT_BUILD_OUT_IMAGE_PATH/
180 if [ -z "$BUILD_DSP" ]; then
181 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_ndsp.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
182 $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
183 else
shijie.xiong82d1b622022-06-28 14:33:57 +0800184 if [ -z "$RTOS_XIP" ]; then
185 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
186 $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
187 else
188 install $RTOS_BUILD_DIR/$IMAGE_BOARD_CONFIG_DIR/aml_upgrade_package_xip.conf $PROJECT_BUILD_OUT_IMAGE_PATH/
189 $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
190 fi
shijie.xiong1369b8c2022-03-31 15:22:51 +0800191 fi
shijie.xiongbc5d3672022-04-01 17:52:16 +0800192
shijie.xiong69cbf042022-04-22 13:32:39 +0800193 cd $PROJECT_BUILD_OUT_IMAGE_PATH && rm $(ls | grep -v "aml_upgrade_package.img")
shijie.xiong1369b8c2022-03-31 15:22:51 +0800194}
195
196#build uboot
197function build_uboot() {
shijie.xiongbc5d3672022-04-01 17:52:16 +0800198 if [ -z "$UBOOT_BOARDNAME" ]; then
shijie.xiong1369b8c2022-03-31 15:22:51 +0800199 echo "Select board($BOARD) not support compile uboot"
200 exit 1
201 else
202 pushd $RTOS_BUILD_DIR/boot/
shijie.xiongbc5d3672022-04-01 17:52:16 +0800203 ./mk $UBOOT_BOARDNAME
shijie.xiong1369b8c2022-03-31 15:22:51 +0800204 test -f build/u-boot.bin && cp -av build/u-boot.bin* $PROJECT_BUILD_OUT_IMAGE_PATH
205 popd
206 fi
207}
208
shijie.xiongbc5d3672022-04-01 17:52:16 +0800209package_target_verify
210package_env_config $RTOS_BOARD
shijie.xiong1369b8c2022-03-31 15:22:51 +0800211
shijie.xiong82d1b622022-06-28 14:33:57 +0800212export BUILD_SYSTEM_DIR=${RTOS_BUILD_DIR}/build_system
213export RTOS_XIP_CONFIG_FILE=${RTOS_BUILD_DIR}/boards/${RTOS_ARCH}/${RTOS_BOARD}/lscript.h
shijie.xiong696e17c2022-04-25 10:53:33 +0800214export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/packages/"${ARCH_PREFIX}""${RTOS_SOC}"-${RTOS_BOARD}
shijie.xiong1369b8c2022-03-31 15:22:51 +0800215
shijie.xiongbc5d3672022-04-01 17:52:16 +0800216export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}
217export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_ARCH}-${RTOS_BOARD}-${RTOS_PRODUCT}/images
218export 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 +0800219
shijie.xiongbc5d3672022-04-01 17:52:16 +0800220export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}
221export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images
222export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_ARCH}-${DSP_BOARD}-${DSP_PRODUCT}/images/${KERNEL}-signed.bin
223
shijie.xiong1369b8c2022-03-31 15:22:51 +0800224test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH
225test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH
226test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH
227mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH
228
shijie.xiong1369b8c2022-03-31 15:22:51 +0800229test -n "$BUILD_RTOS" && build_rtos_image $1
shijie.xiongbc5d3672022-04-01 17:52:16 +0800230test -n "$BUILD_DSP" && build_rtos_dsp
231test -n "$BUILD_UBOOT" && build_uboot
shijie.xiong1369b8c2022-03-31 15:22:51 +0800232test -n "$BUILD_IMAGE" && build_aml_image
233
234echo "======Done======"