Table of Contents

Переменные, передаваемые извне:

переменнаясодержимоезначение для H96 MAX
prefix путь к каталогу /boot
devtypeтип загрузочного устройстваmmc
devnumномер загрузочного устройства0
distro_bootpartномер загрузочной партиции1

Переменные, определяемые в скрипте

переменнаясодержимоекомментарий
load_addr“0x9000000”Адрес для загрузки временных файлов - оверлеев и armbianEnv.txt
overlay_errorfalseВыставляется в true, если произошла ошибка обработки оверлея

Для загрузки файла используется команда load ${devtype} ${devnum}:${distro_bootpart} ADDRESS PATH_TO_FILE. Дальше указываем только адрес и путь к файлу.

АдресФайлКомментарий
load_addr${prefix}armbianEnv.txtГрузим список актуальных переменных и импортируем с помощью env import -t ${load_addr} ${filesize}
ramdisk_addr_r${prefix}uInitrdЗагрузка uInitrd
kernel_addr_r${prefix}ImageЗагрузка ядра
fdt_addr_r${prefix}dtb/${fdtfile}Загрузка dtb. Дальнейшая дозагрузка описана ниже

Загрузка dtb

Загрузка dtb - это длительный процесс, включающий добавление оверлеев и обработку ошибок.

  1. Основной файл загружается по адресу ${fdt_addr_r} из файла ${prefix}dtb/${fdtfile}
  2. Команда fdt addr ${fdt_addr_r} осуществляет инициализацию dtb
  3. fdt resize 65536 увеличивает место под dtb
  4. Переменная ${overlays} рассматривается как список оверлеев, которые подгружаются по адресу ${load_addr} из ${prefix}dtb/rockchip/overlay/${overlay_prefix}-${overlay_file}.dtbo и вмерживаются по команде fdt apply ${load_addr}. В случае ошибки выставляется переменная overlay_error в true
  5. Аналогично обрабатывается переменная ${user_overlays}, только с файлами по пути ${prefix}overlay-user/${overlay_file}.dtbo
  6. Если ${overlay_error}==true, то грузим повторно оригинальный файл dtb
  7. Если оверлееи загрузились, то применяем фиксапы
    1. Грузим ${prefix}dtb/rockchip/overlay/${overlay_prefix}-fixup.scr и исполняем по source ${load_addr}
    2. Аналогично поступаем с пользовательским ${prefix}fixup.scr