56
56
# - tpl-spl-blob: uses mainline u-boot TPL and SPL with proprietary rockchip ATF blob
57
57
# - tpl-blob-atf-mainline: proprietary rockchip ddrbin + mainline u-boot SPL + mainline ATF
58
58
# - 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
59
60
60
61
# BOOT_SOC=`expr $BOOTCONFIG : '.*\(rk[[:digit:]]\+.*\)_.*'`
61
62
BOOT_SOC=${BOOT_SOC:=$(expr $BOOTCONFIG : '.*\( rk[[:digit:]]\+ .*\) _.*' || true )}
@@ -80,12 +81,6 @@ case "$BOOT_SOC" in
80
81
DDR_BLOB="${DDR_BLOB:-" rk33/rk3308_ddr_589MHz_uart2_m1_v1.30.bin"}"
81
82
MINILOADER_BLOB="${MINILOADER_BLOB:-" rk33/rk3308_miniloader_v1.22.bin"}"
82
83
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
89
84
;;
90
85
91
86
rk3328)
@@ -157,9 +152,12 @@ case "$BOOT_SOC" in
157
152
esac
158
153
159
154
prepare_boot_configuration() {
155
+ ATFSOURCE=''
156
+ ATF_COMPILE='no'
160
157
case "$BOOT_SCENARIO" in
161
158
blobless | tpl-blob-atf-mainline)
162
159
UBOOT_TARGET_MAP="BL31=bl31.elf idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
160
+ ATF_COMPILE=yes
163
161
ATFSOURCE='https://github.com/ARM-software/arm-trusted-firmware'
164
162
ATF_COMPILER='aarch64-linux-gnu-'
165
163
ATFDIR='arm-trusted-firmware'
@@ -171,22 +169,17 @@ prepare_boot_configuration() {
171
169
[[ $BOOT_SCENARIO == tpl-blob-atf-mainline ]] &&
172
170
UBOOT_TARGET_MAP="BL31=bl31.elf idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
173
171
;;
174
-
175
172
tpl-spl-blob)
176
173
UBOOT_TARGET_MAP="BL31=$RKBIN_DIR/$BL31_BLOB idbloader.img u-boot.itb;;idbloader.img u-boot.itb"
177
- ATFSOURCE=''
178
- ATF_COMPILE='no'
179
174
;;
180
175
spl-blobs)
181
176
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'
184
177
;;
185
-
186
178
only-blobs)
187
179
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"
190
183
;;
191
184
esac
192
185
@@ -206,45 +199,52 @@ prepare_boot_configuration() {
206
199
}
207
200
208
201
uboot_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"
235
205
236
- elif [[ $BOOT_SCENARIO == "only-blobs" ]]; then
206
+ case "$BOOT_SCENARIO" in
207
+ blobless | tpl-spl-blob | binman)
208
+ :
209
+ ;;
237
210
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
+ ;;
244
234
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
248
248
249
249
if [[ $BOOT_SUPPORT_SPI == yes ]]; then
250
250
if [[ "${BOOT_SPI_RKSPI_LOADER:-" no"}" == "yes" ]]; then
@@ -273,9 +273,11 @@ write_uboot_platform() {
273
273
local logging_prelude=""
274
274
[[ $(type -t run_host_command_logged) == function ]] && logging_prelude="run_host_command_logged"
275
275
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=32k seek=1 conv=notrunc status=none
278
+ elif [ -f $1/rksd_loader.img ]; then # legacy rk3399 loader
277
279
${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"
279
281
${logging_prelude} dd if =$1/idbloader.img of=$2 seek=64 conv=notrunc status=none
280
282
${logging_prelude} dd if =$1/u-boot.itb of=$2 seek=16384 conv=notrunc status=none
281
283
elif [[ -f $1/uboot.img ]]; then # $BOOT_SCENARIO == "only-blobs"
@@ -288,16 +290,13 @@ write_uboot_platform() {
288
290
fi
289
291
}
290
292
293
+ # @TODO: this is not ready for BOOT_SCENARIO=binman yet
291
294
write_uboot_platform_mtd() {
292
295
if [[ -f $1/rkspi_loader.img ]]; then
293
-
294
296
dd if =$1/rkspi_loader.img of=$2 conv=notrunc status=none > /dev/null 2>&1
295
-
296
297
else
297
-
298
298
echo "SPI u-boot image not found!"
299
299
exit 1
300
-
301
300
fi
302
301
}
303
302
0 commit comments