1

Тема: UEFI для ARM і MIPS

Займаюсь імплементацією стандарту UEFI на кілька ОПК (міні-PC) на архітектури ARM і MIPS.
Власне маю 5 машин для цього:

  • AARCH32 - armv7 - Cortex-A8 - TI Sitara am3358 x1 - Beagle Bone Black (плата)

  • AARCH32 - armv7 - Cortex-A7 - Allwinner a20 x2 - Cubieboard 2 (плата)

  • AARCH64 - armv8 - Cortex-A53 - Rockchip rk3368 x8 (4+4) - CSA90 (відроїдний ТВ-коробок)

  • AARCH64 - armv8 - Cortex-A53 - Allwinner a64 x4 - Pine64+ (плата)

  • MIPS32 - mips32r2 - XBurst - Ingenic jz4780 x2 - Mips Creator ci20 (плата)

Для чого? Просто так. Бо я люблю системне проґрамування. Також під сьомий арм і під "малі" ядра восьмого арма, тим паче під міпс, ніхто ще не писав UEFI, тож, якшо вийде, може бути корисним для інших. Як фірмваря, UEFI незрівнянно краща за убут - хаотичний набір костилів і поробок. :D

Шо зроблено вже? Об'єктивно - майже нічого ще. :D Трохи коду написано звичайно, але ще дуже далеко до називання цього чимсь цілісним, тим паче - готовим для тестування. Ще дуже багато роботи. Частково написані Uefi Boot Services. Переважно Сервіси Обслуговування Протоколів. Придумна внутрішня булова БД тих протоколів і гендлів.
Також частково написана SEC фаза (PI специфікація) для Beagle Bone Black машини. Це стартовий код, шоб ви розуміли. З керуванням MMU, кешами і обробкою винятків. І, продумана будова PEI фази - наступної фази, яка головно ініціалізує DRAM. Читати багато треба специфікацій, і це далеко не фігня в цьому ділі. Так от в цьому, уже далеко не на початку - вже багато вивчено.
Мови імплементації - C, асемблери відповідних архітектур (SEC і PEI фази цілком плануються бути написані на асемблерах).
Якшо це стане "продуктом", то яка його буде ліцензія. Не вирішено. Але якшо принаймні під певні машини код буде відкритий, то - за BSD ліцензією. :) Наприклад нема ніяких причин його не відкривати для Beagle Bone Black машини. Взагалі це проєкт на кілька машин і 2 архітектури, а не на купу архітектур і ще більше машин. Але може колись до цього хтось долучиться, тоді відбудеться розширення цільового поля платформ. Ясно одне, шо якшо це буде опинсорс, це буде BSD опинсорс.
Ну якшо цікаво, от написав за свій проєкт. Може ще хтось таким страждає? :D
По ходу діла, додаватиму коротенькі звіти за успіхи. А колись може й сцилки для завантаження викладу. :D
Тут же обов'язково мають бути люди, які люблять возитися з армівськими ОПК. лінукс конпілірувати(R) на них і займатися подібним рукоблуддям. Так от, UEFI дозволяє займатися лінукс онанізмом значно продуктивніше! Але я не вмію переконувати в таких питаннях - чим UEFI краща за uboot, просто ті, хто стикається і знають, шо воно таке, можуть приблизно розуміти відмінности між цими двома ФВ. Коротко, якшо всі визначені стандартом можливості імплементовані, то UEFI дає потужний вибір з чого можна вантажити машину. Це - стандарт, який створений великими жадібними корпораціями, які між іншим мають дуже розумних і досвідчених інженерів, які врахувавши весь досвід попередніх стандартів фірмварей (ARC, OF), розробили цей крутий стандарт (і ACPI теж! :D). Кажуть його придумали в Інтелі+МС (Wintel), бо МС і близько не хотів чути про BIOS в новому процесорі, шо готувався народитись, на ймення Itanium. Саме з цього стандарту походить продивнута GPT схема партиціонування сховищ, між іншим. Вільна від обмежень MBR. Це важливо для розробницьких сценаріїв, де зручно мати масивний multi-boot, без необхідности щоразу перетирати різні версії збірок ядер, щоразу розбивати сховище наново. Також важливо мати можливість вантажитися з усього, шо тільки в голову прийде. UEFI дає це. В убут, якшо туди вендор вставить підтримку чогось, то теж можна те використовувати, але на відміну від UEFI, яка є, як ми вже сказали, вельми добре розробленим промисловим стандартом, убут - це все навпаки - ні стандарту ні документації. Вендорам звичайно важко шось туди додавати - важко вивчати ту галіматтю, важко інтегруватися в неї, портувати її на свої плати і додавати нові свистілки можливості. Тобто відмінність переважно в підході і організації - стандарт проти хаосу. фільозофія геть різна. як наслідок різні можливості, - модулярности, гнучкости, легкости вивчення і адаптації, портування тощо. але, все ж, в убута є практична перевага - він переважно дижаст воркс(R) на багатьох цих платах. На відміну від UEFI, імплементацій якої, ще бракує на цьому ландшафті - армівських (не кажучи вже міпсівські) ОПК. Ось ми й прийшли частково залити цю дірку, bitches! :D
Шо ще? А, коротко за себе - звичайний ламер, за винятком, шо НЕ мастурбую на опинсорс і крепекс (англ - linux), а навпаки є палкий фонат Вінди і лінуксгейтер. Шо я ще ненавиджу? хардварну віртуалізацію як паразитичну непотріб-технологію і cloud галіматтю як маркетинговий bullshit. Ну і ООП мабуть, який він принаймні є. Але це не має сприйматися як особиста образа для людей з іншою точкою зору - хто як хоче, так і цікавиться, еге ж? Живу в домбабві, на кордоні з орками. :(

Подякували: 0xDADA11C7, NaharD, /KIT\, leofun014