====== Описание загрузчика NMS-SM-RK3588-U-Boot ======
===== Назначение =====
NMS-SM-RK3588-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;
* Используется для диагностики оборудования на ранних этапах
===== U-boot-2024 =====
Прямая ссылка на Git с системой сборки: https://github.com/inmys/buildroot-external-inmys/tree/nms-sm-rk3588
U-boot для RK3588 можно собрать с помощью Buildroot по[[https://wiki.inmys.ru/boards:nms-sm-rk3588:buildroot:start| инструкции по сборке]]
U-boot может загружаться либо с SD, либо с eMMC. Приоритет bootrom на EMMC. Приоритет нашего u-boot на SD.
Релиз доступен по ссылке: https://disk.360.yandex.ru/d/WtPLuyHF6YF9fQ
Релиз собран с поддержкой:
* ethernet (X7,X8 - cmd: "ping")
* usb (X11 cmd: "usb start")
* sata (m.2 на нижней части платы: X9: cmd: "scsi scan")
* pci (X33-pcie3, X19-pcie2: cmd: "pci enum;pci")
* sdcard(X5 : cmd: "mmc dev 1;mmc info")
* saveenv(сохраняет переменные окружения в eMMC)
Прошивать на 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
* mmc1 - SD на плате SM-EVM
* mmc0 - eMMC на модуле SMARC
* scsi - SATA M2 диск на плате SM-EVM
Таким образом, если нужно переопределить порядок загрузки, небходимо изменить порядок носителей в переменной окружения boot_targets.
Например, чтобы загружать Linux с SATA:
setenv boot_targets "scsi mmc1 mmc0 nvme usb pxe dhcp spi"
saveenv
==== Файл extlinux.conf ====
Пример конфигурационного файла для загрузки Buildroot-сборки:
TIMEOUT 3
DEFAULT main
#MENU TITLE Boot menu
label main
kernel /Image
fdt /rk3588-inmys-smarc-evm.dtb
initrd /rootfs.cpio.gz
append earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000 root=PARTUUID=31474154-01 rootwait