blob: ddad3407e2bf29a94f5bf6c92e30f4d34c8d76e9 [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}))/..)
9BOARD_ARRY=(ad401_a113l ad403_a113l)
10BOARD_LIST_ARRY=($(find ${RTOS_BUILD_DIR}/boards -mindepth 2 -maxdepth 2 -type d ! -name ".*" | xargs basename -a | sort -n))
11
12#Equipment validity check
13function 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
54function 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
96function 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
111function 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
138function 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
152function 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
164board_validity_check $BOARD
165build_board_select $BOARD_NAME
166
167export PROJECT_BUILD_OUT_IMAGE_PATH=${RTOS_BUILD_DIR}/output/package/"${ARCH_PREFIX}""${SOC}"-${BOARD_NAME}/images/
168
169export RTOS_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT}
170export RTOS_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT}/images
171export RTOS_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${RTOS_BOARD_ARCH}-${BOARD_NAME}-${RTOS_BOARD_PRODUCT}/images/${KERNEL}-signed.bin
172
173export DSP_SDK_OUT_PATH=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT}
174export DSP_SDK_IMAGE_PATH=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT}/images
175export DSP_SDK_SINGED_BIN_FILE=${RTOS_BUILD_DIR}/output/${DSP_BOARD_ARCH}-${DSP_BOARD_NAME}-${DSP_BOARD_PRODUCT}/images/${KERNEL}-signed.bin
176
177test -n "$BUILD_CLEAN" && rm -fr $DSP_SDK_OUT_PATH
178test -n "$BUILD_CLEAN" && rm -fr $RTOS_SDK_OUT_PATH
179test -n "$BUILD_CLEAN" && rm -fr $PROJECT_BUILD_OUT_IMAGE_PATH
180mkdir -p $PROJECT_BUILD_OUT_IMAGE_PATH
181
182test -n "$BUILD_DSP" && build_rtos_dsp
183test -n "$BUILD_RTOS" && build_rtos_image $1
184test -n "$BUILD_UBOOT" && build_uboot $UBOOT_BOARDNAME
185test -n "$BUILD_IMAGE" && build_aml_image
186
187echo "======Done======"
188echo "Image Path: $PROJECT_BUILD_OUT_IMAGE_PATH "
189ls -la $PROJECT_BUILD_OUT_IMAGE_PATH