Сама фирма ARM ничего не выпускает, она лишь разрабатывает процессоры и кой-какую периферию. Выпуском процессоров (условно говоря) занимается приличное количество других фирм, ну а платы на основе их лепят вообще все, кому не лень.
Про процессор я сказал "условно говоря", поскольку он сейчас включает кучу всякой периферии, а не только собственно процессорное ядро: UART, SPI, I2C, часто Ethernet и USB, ну и т.д. и т.п., не говоря уже о памяти.
Что же касается UEFI и прочего, то это к архитектуре процессора вообще никакого отношения не имеет. Возьмите, к примеру, обычные ПК. Все они построены вокруг процессоров архитектуры IA-32 (x86) производства разных фирм (не только Intel и AMD, но другие производители либо уже отошли в мир иной, либо завязали с этим поганым делом, либо производят специализированные варианты процов для промышленных систем, а не для бытовых ПК, поэтому обычный человек с ними никак не сталкивается). Современные ПК все поддерживают UEFI, но они пока ещё поддерживают и альтернативу в виде старого BIOS. Но технически ничто не мешает сделать компьютер на базе того же процессора без всяких UEFI, BIOS и прочих стандартных для ПК средств. Понятно, что это сразу сделает его несовместимым с существующими ПК, и именно поэтому таких компьютеров мы не видим, но технически это возможно.
Что же до ARM, то там UEFI отнюдь не господствует. Более того, подавляющее большинство решений на базе этой архитектуры вообще не имеет никакого аналога UEFI/BIOS и полностью доступно программисту для самостоятельного творчества. Единственное, что для этого абсолютно необходимо, -- это доступная документация на процессор. Вот с этим и бывают проблемы. Если для микроконтроллеров на базе ARM документация всегда открыта (иначе и быть не может: они используются в огромном числе узкоспециализированной аппаратуры, а поэтому стандартные решения там, как правило, неэффективны или вовсе невозможны), то с мощными микропроцессорами ситуация иная: производители очень часто не выкладывают никакой документации, предоставляя её лишь крупным клиентам. Грубо говоря, Samsung выпускает свои телефоны на своих процессорах, и, естественно, их разработчики имеют всю документацию, но если я захочу сделать что-то на их процессоре, то купить сам процессор я смогу, а вот получить документацию -- очень вряд ли (а вот какая-нибудь Sony или там то, что осталось от Нокии в Микрософте -- запросто). Из производителей микропроцессоров на современных ядрах (серия Cortex-A с разными номерами), насколько знаю, только Freescale, TI и Atmel предоставляют практически всю необходимую документацию (правда, графические процессоры у них тоже не документированы, но без них-то жить можно -- для программного построения изображений в видеобуфере вся необходимая информация имеется). nVidia сначала документацию не давала, сейчас частично открыла; во всяком случае, описания процов Tegra2, 3 и 4 я видел -- но вот ерраты (Errata -- документ, содержащий описание известных ошибок в железе) на них не выложено, что очень затруднит работу с этими процессорами, поскольку ошибок во всех них (у всех фирм) огромное число (индусы не только быдлокод быдлокодят -- они и железо проектируют, и, естественно, примерно с таким же качеством).
Линух (как и Андроид, который -- тот же Линух, подпиленный Гуглом) используется лишь на небольшой части достаточно мощных процессоров, причём в большинстве случаев загрузкой занимается не UEFI, а более простые загрузчики, главным образом UBOOT. Если документация на процессор есть, ничто не мешает сделать всё своё, начиная от загрузчика (лишь самый первый загрузчик, находящийся в ПЗУ процессора, остаётся тем же самым, но его функции сводятся к поиску устройства, с которого можно загрузить код, и передаче ему управления, ну а в микроконтроллерах и такой загрузчик, даже если имеется, может не использоваться -- если во флэш-ПЗУ уже прошит код пользователя, а сам проц сконфигурирован с помощью внешней коммутации определённых ног таким образом, чтобы сразу стартовал пользовательский код).
На Вашей плате стоит процессор AllWinner A20, и очень похоже, что документацию сия фирма простым смертным не даёт. Так что поиграться с ним на низком уровне у Вас по этой причине не получится. Это не следствие недоступности самой архитектуры ARM и т.п., а следствие неудачного выбора платы -- но без опыта ж не знаешь, на что обращать внимание.
Насчёт сложности по сравнению с 8-разрядными процессорами Вы, конечно, правы, но это неизбежно: за возможности приходится платить. Лично я для освоения АРМов порекомендовал бы начать с микроконтроллеров с ядрами серии Cortex-M (новые) или со старыми ядрами ARM7 или ARM9, но не с новыми Cortex-A. Причина -- как раз в большой сложности микропроцессоров на Cortex-A. Здесь, правда, следует учесть, что, хотя и Cortex-M, и Cortex-A называются ARMами, на самом деле первые кардинально отличаются по системной архитектуре от вторых, поэтому и системное ПО для них будет сильно отличаться в ряде аспектов (как минимум загрузка, обработка прерываний, управление памятью -- ну и ввод-вывод, конечно, но он вообще разный у процессоров разных производителей, а иногда и у разных серий одного производителя). А вот древние ядра полностью совместимы с Cortex-A снизу вверх (т.е., к примеру, код, за исключением драйверов устройств и загрузчика, можно "в лоб" перенести с процессора на ядре ARM7 на процессор на ядре Cortex-A, и он сразу будет работать -- естественно, не используя дополнительные возможности, появившиеся в Cortex-A). Поэтому, если интересуют именно "настоящие" АРМы, начинать лучше со старья.
|