5656# - tpl-spl-blob: uses mainline u-boot TPL and SPL with proprietary rockchip ATF blob
5757# - tpl-blob-atf-mainline: proprietary rockchip ddrbin + mainline u-boot SPL + mainline ATF
5858# - blobless: mainline u-boot TPL + mainline u-boot SPL + mainline ATF
59+ # - binman: u-boot builds full boot image from information in device tree. See: https://docs.u-boot.org/en/latest/develop/package/binman.html
5960
6061# BOOT_SOC=`expr $BOOTCONFIG : '.*\(rk[[:digit:]]\+.*\)_.*'`
6162BOOT_SOC= ${BOOT_SOC:= $(expr $BOOTCONFIG : ' .*\(rk[[:digit:]]\+.*\)_.*' || true )}
@@ -80,12 +81,6 @@ case "$BOOT_SOC" in
8081 DDR_BLOB= " ${DDR_BLOB:-" rk33/ rk3308_ddr_589MHz_uart2_m1_v1.30 .bin" }"
8182 MINILOADER_BLOB= " ${MINILOADER_BLOB:-" rk33/ rk3308_miniloader_v1.22 .bin" }"
8283 BL31_BLOB= " ${BL31_BLOB:-" rk33/ rk3308_bl31_v2.22 .elf" }"
83-
84- if [[ ${BRANCH} == legacy ]]; then
85- DDR_BLOB= " ${DDR_BLOB:-" rk33/ rk3308_ddr_589MHz_uart2_m0_v1.26 .bin" }"
86- MINILOADER_BLOB= " ${MINILOADER_BLOB:-" rk33/ rk3308_miniloader_sd_nand_v1.13 .bin" }"
87- BL31_BLOB= " ${BL31_BLOB:-" rk33/ rk3308_bl31_v2.10 .elf" }"
88- fi
8984 ;;
9085
9186 rk3328)
@@ -157,9 +152,12 @@ case "$BOOT_SOC" in
157152esac
158153
159154prepare_boot_configuration () {
155+ ATFSOURCE= ' '
156+ ATF_COMPILE= ' no'
160157 case " $BOOT_SCENARIO" in
161158 blobless | tpl- blob- atf- mainline)
162159 UBOOT_TARGET_MAP= " BL31=bl31.elf idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
160+ ATF_COMPILE= yes
163161 ATFSOURCE= ' https://github.com/ARM-software/arm-trusted-firmware'
164162 ATF_COMPILER= ' aarch64-linux-gnu-'
165163 ATFDIR= ' arm-trusted-firmware'
@@ -171,22 +169,17 @@ prepare_boot_configuration() {
171169 [[ $BOOT_SCENARIO == tpl- blob- atf- mainline ]] &&
172170 UBOOT_TARGET_MAP= " BL31=bl31.elf idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
173171 ;;
174-
175172 tpl- spl- blob)
176173 UBOOT_TARGET_MAP= " BL31=$RKBIN_DIR/$BL31_BLOB idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
177- ATFSOURCE= ' '
178- ATF_COMPILE= ' no'
179174 ;;
180175 spl- blobs)
181176 UBOOT_TARGET_MAP= " BL31=$RKBIN_DIR/$BL31_BLOB spl/u-boot-spl.bin u-boot.dtb u-boot.itb;;idbloader.img u-boot.itb"
182- ATFSOURCE= ' '
183- ATF_COMPILE= ' no'
184177 ;;
185-
186178 only- blobs)
187179 UBOOT_TARGET_MAP= " u-boot-dtb.bin;;idbloader.bin uboot.img trust.bin"
188- ATFSOURCE= ' '
189- ATF_COMPILE= ' no'
180+ ;;
181+ binman)
182+ UBOOT_TARGET_MAP= " BL31=$RKBIN_DIR/$BL31_BLOB ROCKCHIP_TPL=$RKBIN_DIR/$DDR_BLOB;;u-boot-rockchip.bin"
190183 ;;
191184 esac
192185
@@ -206,45 +199,52 @@ prepare_boot_configuration() {
206199}
207200
208201uboot_custom_postprocess () {
209- [[ - z ${BOOT_SOC} ]] && exit_with_error " BOOT_SOC not defined for scenario '${BOOT_SCENARIO}' for BOARD'=${BOARD}' and BOOTCONFIG='${BOOTCONFIG}'"
210-
211- if [[ $BOOT_SCENARIO == " blobless" || $BOOT_SCENARIO == " tpl-spl-blob" ]]; then
212- :
213- elif [[ $BOOT_SCENARIO == " spl-blobs" || $BOOT_SCENARIO == " tpl-blob-atf-mainline" ]]; then
214- # Bomb if DDR_BLOB not defined or does not exist
215- declare SPL_BIN_PATH= " ${RKBIN_DIR}/${DDR_BLOB}"
216- [[ - z ${SPL_BIN_PATH} ]] && exit_with_error " DDR_BLOB not defined for scenario ${BOOT_SCENARIO}"
217- [[ ! - f " ${SPL_BIN_PATH}" ]] && exit_with_error " DDR_BLOB ${SPL_BIN_PATH} does not exist for scenario ${BOOT_SCENARIO}"
218-
219- if [[ $BOOT_SOC == " rk3576" ]]; then
220- display_alert " boot_merger for '${BOOT_SOC}' for scenario ${BOOT_SCENARIO}" " SPL_BIN_PATH: ${SPL_BIN_PATH}" " debug"
221- RKBOOT_INI_FILE= rk3576.ini
222- cp $RKBIN_DIR/ rk35/ RK3576MINIALL.ini $RKBOOT_INI_FILE
223- sed - i " s|FlashBoost=.*$|FlashBoost=${RKBIN_DIR}/rk35/rk3576_boost_v1.02.bin|g" $RKBOOT_INI_FILE
224- sed - i " s|Path1=.*rk3576_ddr.*$|Path1=${SPL_BIN_PATH}|g" $RKBOOT_INI_FILE
225- sed - i " s|Path1=.*rk3576_usbplug.*$|Path1=${RKBIN_DIR}/rk35/rk3576_usbplug_v1.03.bin|g" $RKBOOT_INI_FILE
226- sed - i " s|FlashData=.*$|FlashData=${SPL_BIN_PATH}|g" $RKBOOT_INI_FILE
227- sed - i " s|FlashBoot=.*$|FlashBoot=./spl/u-boot-spl.bin|g" $RKBOOT_INI_FILE
228- sed - i " s|IDB_PATH=.*$|IDB_PATH=idbloader.img|g" $RKBOOT_INI_FILE
229- run_host_x86_binary_logged $RKBIN_DIR/ tools/ boot_merger $RKBOOT_INI_FILE
230- rm - f $RKBOOT_INI_FILE
231- else
232- display_alert " mkimage for '${BOOT_SOC}' for scenario ${BOOT_SCENARIO}" " SPL_BIN_PATH: ${SPL_BIN_PATH}" " debug"
233- run_host_command_logged tools/ mkimage - n " ${BOOT_SOC_MKIMAGE}" - T rksd - d " ${SPL_BIN_PATH}:spl/u-boot-spl.bin" idbloader.img
234- fi
202+ [[ - z ${BOOT_SOC} ]] &&
203+ exit_with_error " BOOT_SOC not defined for scenario '${BOOT_SCENARIO}' for BOARD'=${BOARD}' and BOOTCONFIG='${BOOTCONFIG}'"
204+ display_alert " ${BOARD}" " boots with ${BOOT_SCENARIO} scenario" " info"
235205
236- elif [[ $BOOT_SCENARIO == " only-blobs" ]]; then
206+ case " $BOOT_SCENARIO" in
207+ blobless | tpl- spl- blob | binman)
208+ :
209+ ;;
237210
238- local tempfile
239- tempfile= $(mktemp)
240- run_host_command_logged tools/ mkimage - n " ${BOOT_SOC_MKIMAGE}" - T rksd - d $RKBIN_DIR/ $DDR_BLOB idbloader.bin
241- cat $RKBIN_DIR/ $MINILOADER_BLOB >> idbloader.bin
242- run_host_x86_binary_logged $RKBIN_DIR/ tools/ loaderimage -- pack -- uboot ./ u- boot- dtb.bin uboot.img 0x200000
243- run_host_x86_binary_logged $RKBIN_DIR/ tools/ trust_merger -- replace bl31.elf $RKBIN_DIR/ $BL31_BLOB trust.ini
211+ spl- blobs | tpl- blob- atf- mainline)
212+ # Bomb if DDR_BLOB not defined or does not exist
213+ declare SPL_BIN_PATH= " ${RKBIN_DIR}/${DDR_BLOB}"
214+ [[ - z ${SPL_BIN_PATH} ]] && exit_with_error " DDR_BLOB not defined for scenario ${BOOT_SCENARIO}"
215+ [[ ! - f " ${SPL_BIN_PATH}" ]] && exit_with_error " DDR_BLOB ${SPL_BIN_PATH} does not exist for scenario ${BOOT_SCENARIO}"
216+
217+ if [[ " $BOOT_SOC" == " rk3576" ]]; then
218+ display_alert " boot_merger for '${BOOT_SOC}' for scenario ${BOOT_SCENARIO}" " SPL_BIN_PATH: ${SPL_BIN_PATH}" " debug"
219+ RKBOOT_INI_FILE= rk3576.ini
220+ cp $RKBIN_DIR/ rk35/ RK3576MINIALL.ini $RKBOOT_INI_FILE
221+ sed - i " s|FlashBoost=.*$|FlashBoost=${RKBIN_DIR}/rk35/rk3576_boost_v1.02.bin|g" $RKBOOT_INI_FILE
222+ sed - i " s|Path1=.*rk3576_ddr.*$|Path1=${SPL_BIN_PATH}|g" $RKBOOT_INI_FILE
223+ sed - i " s|Path1=.*rk3576_usbplug.*$|Path1=${RKBIN_DIR}/rk35/rk3576_usbplug_v1.03.bin|g" $RKBOOT_INI_FILE
224+ sed - i " s|FlashData=.*$|FlashData=${SPL_BIN_PATH}|g" $RKBOOT_INI_FILE
225+ sed - i " s|FlashBoot=.*$|FlashBoot=./spl/u-boot-spl.bin|g" $RKBOOT_INI_FILE
226+ sed - i " s|IDB_PATH=.*$|IDB_PATH=idbloader.img|g" $RKBOOT_INI_FILE
227+ run_host_x86_binary_logged $RKBIN_DIR/ tools/ boot_merger $RKBOOT_INI_FILE
228+ rm - f $RKBOOT_INI_FILE
229+ else
230+ display_alert " mkimage for '${BOOT_SOC}' for scenario ${BOOT_SCENARIO}" " SPL_BIN_PATH: ${SPL_BIN_PATH}" " debug"
231+ run_host_command_logged tools/ mkimage - n " ${BOOT_SOC_MKIMAGE}" - T rksd - d " ${SPL_BIN_PATH}:spl/u-boot-spl.bin" idbloader.img
232+ fi
233+ ;;
244234
245- else
246- exit_with_error " Unsupported u-boot processing configuration!"
247- fi
235+ only- blobs)
236+ local tempfile
237+ tempfile= $(mktemp)
238+ run_host_command_logged tools/ mkimage - n " ${BOOT_SOC_MKIMAGE}" - T rksd - d $RKBIN_DIR/ $DDR_BLOB idbloader.bin
239+ cat $RKBIN_DIR/ $MINILOADER_BLOB >> idbloader.bin
240+ run_host_x86_binary_logged $RKBIN_DIR/ tools/ loaderimage -- pack -- uboot ./ u- boot- dtb.bin uboot.img 0x200000
241+ run_host_x86_binary_logged $RKBIN_DIR/ tools/ trust_merger -- replace bl31.elf $RKBIN_DIR/ $BL31_BLOB trust.ini
242+ ;;
243+
244+ * )
245+ exit_with_error " \" $BOOT_SCENARIO\" is an Unsupported Boot Scenario!"
246+ ;;
247+ esac
248248
249249 if [[ $BOOT_SUPPORT_SPI == yes ]]; then
250250 if [[ " ${BOOT_SPI_RKSPI_LOADER:-" no" }" == " yes" ]]; then
@@ -273,9 +273,11 @@ write_uboot_platform() {
273273 local logging_prelude= " "
274274 [[ $(type - t run_host_command_logged) == function ]] && logging_prelude= " run_host_command_logged"
275275
276- if [[ - f $1 / rksd_loader.img ]]; then # legacy rk3399 loader
276+ if [ - f $1 / u- boot- rockchip.bin ]; then # "$BOOT_SCENARIO" == binman
277+ ${logging_prelude} dd if = $1 / u- boot- rockchip.bin of = $2 bs= 32 k seek= 1 conv= notrunc status= none
278+ elif [ - f $1 / rksd_loader.img ]; then # legacy rk3399 loader
277279 ${logging_prelude} dd if = $1 / rksd_loader.img of = $2 seek= 64 conv= notrunc status= none
278- elif [[ - f $1 / u- boot.itb ]]; then # $BOOT_SCENARIO == "blobless" || $BOOT_SCENARIO == "tpl-spl-blob"
280+ elif [[ - f $1 / u- boot.itb ]]; then # $BOOT_SCENARIO "blobless" or "tpl-spl-blob"
279281 ${logging_prelude} dd if = $1 / idbloader.img of = $2 seek= 64 conv= notrunc status= none
280282 ${logging_prelude} dd if = $1 / u- boot.itb of = $2 seek= 16384 conv= notrunc status= none
281283 elif [[ - f $1 / uboot.img ]]; then # $BOOT_SCENARIO == "only-blobs"
@@ -288,16 +290,13 @@ write_uboot_platform() {
288290 fi
289291}
290292
293+ # @TODO: this is not ready for BOOT_SCENARIO=binman yet
291294write_uboot_platform_mtd () {
292295 if [[ - f $1 / rkspi_loader.img ]]; then
293-
294296 dd if = $1 / rkspi_loader.img of = $2 conv= notrunc status= none > / dev/ null 2 > & 1
295-
296297 else
297-
298298 echo " SPI u-boot image not found!"
299299 exit 1
300-
301300 fi
302301}
303302
0 commit comments