Из документации Rockchip можно узнать, что стандартная последовательность загрузки для их SoC является следующая:
- brom (прошивается на фабрике непосредственно в SoC) ищет и, если находит, то запускает SPL загрузчик на eMMC, затем на SPI flash (если такая вообще имеется), затем на SD-CARD;
- spl-загрузчик в такой-же последовательности пытается запустить u-boot;
- u-boot пытается найти extlinux.txt, но в приоритете уже SD-CARD.
У меня Nanopc-T4, у которой на борту есть eMMC флэшка. Разумеется я туда залил прошивку от Friendly Elec, так как на момент начала использования железки, ничего другого для неё и не было.
Имеется два варианта реализации загрузки:
- spl режим: tpl/spl -> uboot.itb -> kernel
- rockchip miniloader режим: miniloader-> uboot.img -> trust.img -> kernel.
В регулярных сборках используется spl-режим. У Friendly Elec и Armbian используется miniloader. При этом, видимо, Friendly Elec использует miniloader, который ищет uboot.img в первую очередь на SD-карточке. Так как на sd-карточках от Armbian используется та же связка miniloader-> uboot.img, то miniloader от Friendly Elec, прошитый в eMMC находит Armbian-ий uboot.img на sd-карточке, если она вставлена, и грузит его.
На sd-карточке, записанной из регулярной сборки Альта, соответствующего uboot.img нету. Так что, чтобы загрузиться с такой карточки нужно входить в MASKROM. У Nanopc-T4 есть для этого кнопка boot. Не факт, что такая кнопа есть у других плат на RK3399. У Firefly вроде бы её нету. Но я её в руках не держал.
Собрав нужные модули для режима spl, записав их на карточку и воспользовавшись кнопкой boot я таки смог лицезреть, как u-boot пытается загрузить kernel. То есть он его грузит в память, но, увы, после надписи Kernel starting ожидаемого продолжения не следует.
Увы, но с залитытми на карточку модулями из августовской регулярной сборки вообще все глухо, т.е. не запускается даже tpl/spl модуль.
Вобщем какой-то прогресс имеется, но победа пока где-то непонятно как близка, или далека.
В любом случае, даже, если мы справимся с этими временными преградами, для железок на rk3399 надо будет решать некоторое число дополнительных вопросов:
- недостаточно просто изготовить загрузочную sd-карточку, возможность загрузки с неё зависит от того, прошито ли что-то в eMMC/SPI флэш, что прошито, есть ли возможность включить MASKROM режим;
- если кнопка boot имеется и она спасает положение, то использовать её всегда, когда хочется загрузить Альт, не очень то удобно, может быть Альту использовать miniloader вместо tpl/sl, или научиться прошиваться в eMMC;
- на разных платах от разных производителей ситуации могут разниться и достаточно много вариантов различных сочетаний, например, кто-то может начать использовать Альт сразу на нулёвой Nanopc-T4 без каких бы то ни было проблем.