Использование вендорского варианта загрузчика не всегда допустимо и приветствуется. Для сборки ванильного необходимо установить ряд переменных окружения
export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.44.elf export TEE=../rkbin/tee.elf export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.21.bin export CROSS_COMPILE=aarch64-linux-gnu-
Назначение переменных следующее:
На выходе получаем u-boot-rockchip.bin, который необходимо записать на SD-карту или eMMC со смещением в 64 сектора, например с использованием rkdevelop. Например, с помощью такого скрипта
#!/bin/bash echo Bootloader ./../rkbin/tools/rkdeveloptool db ./../rkbin/rk356x_spl_loader_v1.21.113.bin echo U-Boot image sleep 1 ./../rkbin/tools/rkdeveloptool wl 64 u-boot-rockchip.bin echo Reset board sleep 1 ./../rkbin/tools/rkdeveloptool rd
Обратите внимание, чип должен быть переведен в MaskRom режим (см bootmode), и в этом режиме используется предварительно созданный SPL загрузчик (см rkbin]).
По невыясненным причинам (возможно баг в U-Boot версии 2024.10 и более ранних) ядро не хочет работать с рядом операционных систем. В частности в Debian Lunux (bookworm). В какой-то момент срабатывает защитв в OpTee и система перезагружается. Предположительно это происходит по причине достапа ядра Linux к регионам паямяти, из которых работает OpTee. Коммит https://github.com/MinimumLaw/ravion-kernel/commit/6493a49c8bd3608a20378765baec950c69975656 в первом приближении решает указанную проблему.
Требуется дальнейшая работа над данной проблематикой.