[devel-sbc] UEFI и Raspberry Pi
Alexey V. Vissarionov
gremlin at altlinux.org
Mon May 11 13:53:38 MSK 2020
On 2020-05-11 11:48:36 +0300, Aleksey Novodvorsky wrote:
>> Через u-boot можно загрузиться только с SD-карты. Через edk2
>> можно загрузиться только через USB.
>>
>> Это совершенно разные загрузчики. u-boot предоставляет
>> минимальную совместимость с UEFI, только чтобы grub-efi
>> загрузить.
>> edk2 - это полноценный UEFI, который позволяет грузить с
>> флешки гибридные ISO-образы. А это полноценные live,
>> инсталляторы, rescue.
Все эти "полноценные live, инсталляторы, rescue" можно сделать
просто на базе USB-флешки, безо всяких ISO-образов. Но тут, как
всегда, "есть нюансы".
>> Чем и интересен.
> +1
-1
Вероятность того, что кто-то подключит сидюк к мелкому компутеру,
пренебрежимо мала (хотя на том же BPi-R1 есть SATA прямо на плате).
Вероятность того, что этот сидюк будет использоваться в качестве
загрузочного накопителя - еще меньше.
Даже на писюшатине они практически вымерли. Вот захожу я по адресу
https://www.citilink.ru/catalog/mobile/notebooks/ и среди параметров
поиска вижу прекрасное соотношение вариантов:
Оптический привод: DVD - 73, без привода 1020.
Крупный ретейлер что-то знает о предпочтениях покупателей? :-)
Это именно ноутбучная категория, причем есть еще две: ультрабуки
и трансформеры (у которых сидюков не бывает в принципе).
Поэтому остаются флешки - как SD/MMC, так и USB. И тут начинается
самое интересное.
> Честно говоря, загрузка с USB мне кажется плюсом. Это серьезный
> шаг к унификации и пользовательских свойств, и технологии
> разработки/сборки. Вопрос только в выравнивания сборки RPI 4
> по багам.
Далеко не только.
Дело в процессе загрузки. Когда процессор стартует, ему доступны
только те устройства, которые есть у него на борту (процессоров как
таковых уже давно нет, они все в той или иной мере SoC, System on
Chip) - это немного ПЗУ, немного ОЗУ (килобайты), интерфейсы I2C и
SPI, ногодрыжество (GPIO)... и все. Про внешние устройства ничего
не известно, и как с ними работать - в общем случае непонятно.
Однако "есть один нюанс", который сильно упрощает жизнь: почти все
современные ПЗУ умеют работать по SPI, а реализовать его предельно
просто - по одному проводу отправляем (или, наоборот, принимаем)
синхроимпульс, по второму передаем один бит данных, по третьему
принимаем один бит встречных данных. Провода и сигналы называются,
соответственно, SCK (clock), SDO (data out; также MOSI) и SDI
(data in; также MISO); добавляем питание (VCC), общий (GND) и выбор
устройства (CS, chip select) - все, можно работать. А самое главное,
в таком режиме умеют работать и SD/MMC-флешки: пусть медленно, зато
единообразно. В общем, есть место, где хранится информация о том,
что у нас есть и как с ним работать.
А вот USB-хосты унифицированы только с одной стороны - той, куда
подключается периферия. Там все хорошо: более 20 лет существует
стандарт https://www.usb.org/sites/default/files/usbmassbulk_10.pdf
Но нам-то интересна та часть, которая находится со стороны SoC... и
там полнейший зоопарк.
Соответственно, для EFI-загрузки с USB нужна унификация содержимого
ПЗУ на платах (пусть хотя бы на уровне "найти USB-флешку, найти на
ней активный раздел с типом 0xEF и файловой системой FAT32, прочитать
в память файл EFI/Boot/bootaa64.efi и передать ему управление"). Кто
этим будет заниматься - я не знаю: производителям железяк это не
нужно, производителям SoC тем более.
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
More information about the devel-sbc
mailing list