Это старая версия документа!
NMS-SM-RK3568-U-Boot — это программный компонент, предназначенный для подготовки аппаратной платформы и загрузки основной операционной системы. Запускается после включения питания или сброса аппаратной платформ, в его задачи входят: 1. Инициализация аппаратуры - Настраивает контроллеры памяти (DRAM, SRAM, Flash); - Конфигурирует тактирование (PLL, clock tree); - Инициализирует UART, SPI, I²C, GPIO, сетевые интерфейсы; - Подготавливает устройства хранения (eMMC, SD, SATA SSD и т.п.).
2. Загрузка операционной системы - Находит и загружает ядро ОС и корневую файловую систему; - Передаёт ядру параметры (адреса памяти, командную строку, DTB); - Запускает ядро на выполнение.
3. Поддержка различных источников загрузки - Может загружать ОС из Flash, SD-карты, eMMC, USB, сети (TFTP/NFS) и т.д.; - Позволяет выбрать порядок загрузки (boot sequence).
4. Интерактивная оболочка (CLI) - Через консоль UART можно выполнять команды вручную; - Настраивать переменные окружения (например, bootcmd, bootargs); - Отлаживать систему на ранних стадиях запуска.
5. Обновление и отладка - Позволяет обновлять прошивку по сети или с USB; - Используется для диагностики оборудования на ранних этапах
Прямая ссылка на Git с системой сборки: https://github.com/inmys/buildroot-external-inmys/tree/nms-sm-rk3568
U-boot для RK3568 можно собрать из mainline репозитория с помощью Buildroot по инструкции для ядра 6.1
U-boot может загружаться либо с SD, либо с eMMC. Приоритет bootrom на EMMC. Приоритет нашего u-boot на SD.
Релиз доступен по ссылке: https://disk.yandex.ru/d/hmKqKdvUE5smig
Релиз собран с поддержкой:
Прошивать на SDcard или eMMC так:
dd if=u-boot-rockchip.bin of=/dev/XXX seek=64
U-boot переходит к загрузке ОС командой
bootflow scan
Команда ожидает extlinux.conf файл носителях, которые определены в переменной окружения:
boot_targets=mmc1 mmc0 nvme scsi usb pxe dhcp spi
Таким образом, если нужно переопределить порядок загрузки, небходимо изменить порядок носителей в переменной окружения boot_targets.
Например, чтобы загружать Linux с SATA:
setenv boot_targets "scsi mmc1 mmc0 nvme usb pxe dhcp spi" saveenv
Пример конфигурационного файла для загрузки Buildroot-сборки:
TIMEOUT 3 DEFAULT main #MENU TITLE Boot menu label main kernel /Image fdt /rk3568-inmys-smarc-evm.dtb initrd /rootfs.cpio.gz append earlycon=uart8250,mmio32,0xfe660000 console=ttyS2,1500000