Armbian x Eltay RM66

в 12:59, , рубрики: armbian, bsp, Elron, Eltay, linux
Armbian x Eltay RM66 - 1

Привет!

Меня зовут Сергей Брауманн, мне 29 лет, по специальности я техник АСУ ТП, а сейчас обучаюсь по направлению “Программная инженерия” (бакалавриат 4 курс). Живу в Екатеринбурге. Сегодня я хочу рассказать о своём проекте по портированию Armbian на плату Eltay RM66 и о том, какого прогресса удалось добиться. Сразу скажу, что в этой статье не планирую глубоко погружаться в тонкости разработки BSP под Linux. Для начала хочется просто познакомить вас с проектом, рассказать, с чего всё началось и что происходит сейчас. Если тема окажется интересной, в дальнейшем можно будет разобрать и техническую сторону вопроса.

Но прежде чем мы перейдём к самому проекту, давайте немного вспомним базу.

Когда берёшь в руки “голую” плату, отлично понимаешь: чтобы заставить её работать, одной паяльной станции мало. Нужна ещё программная составляющая, то есть операционная система (Далее ОС)


Зачем железу ОС?

Представим, что у тебя есть процессор на 1,8 ГГц, 8 ГБ быстрой оперативной памяти и терабайты NVMe. Всё это установлено на материнской плате. Ты подаёшь питание и видишь лишь красный индикатор. Ни тебе интерфейса, ни возможности запустить привычную программу, ни даже банального калькулятора. Железо есть, а толку — ноль.

Конечно, процессор способен выполнять инструкции и без операционной системы. Существует даже отдельный подход к разработке — bare-metal, когда программа работает непосредственно с аппаратным обеспечением. Но у нас задача немного другая: мы хотим получить полноценную Linux-систему, в которой можно запускать приложения, работать с файлами, сетью и подключённым оборудованием. Вот для этого нам и нужна ОС.

Что делает ОС?

Если проще, ОС — посредник между аппаратным обеспечением и прикладными программами. Но это довольно сухое определение. На самом деле ОС решает множество задач, из которых я бы выделил три основные.

Диспетчеризация ресурсов

Представим, что у тебя запущено семь программ. Все они хотят выполняться прямо сейчас. Но процессорные ресурсы не бесконечны. Даже если процессор многоядерный и способен выполнять несколько задач одновременно, количество желающих получить процессорное время может быть значительно больше числа доступных ядер. Кто-то должен решать, какая программа получит драгоценные такты процессора, а какая немного подождёт.

Этим занимается планировщик (по-другому Scheduler) ОС. То же самое с памятью: приложение просит выделить ему 100 МБ для работы, ОС организует выделение памяти и следит, чтобы приложение не залезло в адресное пространство соседнего процесса. В этом ей помогают и аппаратные механизмы процессора, в частности MMU (Memory Management Unit — блок управления памятью) — это специализированный аппаратный узел внутри процессора, который отвечает за трансляцию виртуальных адресов памяти в физические и защиту адресных пространств. Именно MMU делает возможным существование современных многозадачных операционных систем (таких как Linux, Windows, macOS), изолируя процессы друг от друга. Без такого “дирижёра” разработчикам пришлось бы самостоятельно организовывать распределение ресурсов между программами.

Абстракция и драйверы

Второй важный аспект — это то, как программы общаются с железом. Разработчику софта не нужно знать, по каким именно линиям на плате Eltay RM66 подключён тот или иной контроллер и какие регистры необходимо задействовать для работы с ним. Вместо этого программа использует интерфейсы операционной системы, а ОС через соответствующие драйверы взаимодействует с оборудованием. И это очень удобно.

Иначе пришлось бы переписывать программу каждый раз, когда какой-то гений решит поменять контроллер на плате. Конечно, не всё оборудование работает одинаково, и полной независимости от железа добиться нельзя. Но драйверы позволяют скрыть значительную часть этих различий от прикладного ПО.

Защита и изоляция (режимы процессора)

Современные ARM-процессоры, рассчитанные на запуск Linux, поддерживают разные уровни привилегий. Если сильно упростить, есть привилегированный режим, в котором работает ядро ОС, и пользовательский режим, в котором выполняются обычные приложения. Ядро может управлять памятью, обрабатывать прерывания и взаимодействовать с оборудованием. А вот пользовательская программа не имеет прямого доступа ко всем этим возможностям. И это правильно в целом.

Иначе любая случайно скачанная программа могла бы из-за собственной ошибки повредить память других процессов или нарушить работу всей системы. Разумеется, ОС не обеспечивает абсолютную защиту от всего на свете, но механизмы изоляции значительно снижают вероятность подобных проблем.

Что даёт нам ОС?

Теперь немного о том, что мы получаем:

  • Запуск прикладного софта. ОС обеспечивает привычную среду для выполнения программ, управляет процессами и предоставляет им необходимые системные интерфейсы.

  • Работа с файлами. Благодаря драйверам и файловым системам наш NVMe-накопитель становится доступным для хранения данных, установки программ и прочих задач.

  • Многозадачность. Можно одновременно компилировать программу, работать по SSH и выполнять другие задачи.

  • Сеть. ОС предоставляет сетевой стек, а драйверы позволяют взаимодействовать с сетевым оборудованием. В результате мы можем подключаться к другим устройствам и обмениваться данными.

Всё перечисленное в той или иной форме можно реализовать и без полноценной ОС. Но зачем изобретать велосипед, если существует Linux с огромным количеством готовых решений? А не форкать условный Ubuntu и пытаться на нём костылить свой инструмент, выдавая за собственную разработку? Собственно, поэтому я и решил заняться портированием Armbian.

Armbian x Eltay RM66

Теперь, когда мы немного разобрались с ролью операционной системы, предлагаю вернуться к главному герою этой статьи — Eltay RM66. Это вычислительный модуль российской компании «Элрон», построенный на базе четырёхъядерного ARM-процессора Rockchip RK3566. В зависимости от комплектации он может оснащаться до 8 ГБ оперативной памяти, встроенным накопителем eMMC и различными интерфейсами для подключения периферии.

В общем, вполне интересное железо, на котором можно построить немало полезных вещей: от небольшого домашнего сервера до встраиваемого устройства под конкретную задачу. Но когда я смотрел на этот компьютерный модуль, меня интересовал вопрос: какую ОС поставить?

Разумеется, вариантов несколько. И мне кажется важным, чтобы разработчик не был ограничен единственным программным решением. Особенно когда мы говорим об отечественном оборудовании.

Сегодня российские аппаратные платформы находят применение в самых разных областях, и требования к программному обеспечению могут существенно различаться. Где-то на первый план выходят безопасность, сертификация и соответствие нормативным требованиям. В других случаях важнее гибкость, доступность исходного кода и возможность самостоятельно изменять систему под свои нужды.

Компания «Элрон» учитывает оба направления, развивая совместимость своего оборудования с отечественными операционными системами и открытыми Linux-дистрибутивами. И это действительно круто!

Для систем с особыми требованиями к информационной безопасности необходимо выбирать соответствующие программные решения. А для разработчиков, энтузиастов, студентов и интеграторов открытые системы вроде Armbian дают возможность экспериментировать, изучать устройство Linux и создавать собственные проекты без привязки к одной платформе. Более того, открытость позволяет не просто пользоваться готовой ОС, но и участвовать в её развитии: исправлять ошибки, добавлять поддержку оборудования и делиться результатами с другими разработчиками.

Именно такой подход мне и близок. Ведь чем шире выбор программного обеспечения для конкретной платы, тем больше сценариев её использования. А когда результаты разработки доступны сообществу, проделанная работа может оказаться полезной далеко за пределами одного проекта.

Собственно, поэтому мой выбор пал на Armbian. Это открытый проект, ориентированный на Linux-системы для одноплатных компьютеров и других устройств на ARM. Помимо готовых образов Debian и Ubuntu, он предоставляет инфраструктуру для сборки системы, настройки ядра и добавления поддержки новых плат. И самое интересное здесь то, что для добавления нового устройства необязательно быть сотрудником его производителя: достаточно разобраться в аппаратной части, подготовить необходимые изменения и пройти процесс их интеграции в проект.

И что же получилось?

Armbian x Eltay RM66 - 2

Сегодня Eltay RM66 уже представлен в официальном каталоге Armbian со статусом Community. Для платы доступны готовые образы Ubuntu 26.04 с GNOME и KDE Plasma, и CLI, а также минимальный Debian 13. Все они используют ядро Linux 6.18.

Теперь любой желающий может перейти на страницу Eltay RM66 в Armbian, скачать подходящий образ и попробовать систему самостоятельно. Конечно, это ещё не финальная точка: впереди работа над поддержкой дополнительной периферии, интеграцией vendor-ядра Linux 6.1 и устранением оставшихся ограничений.

Но главный результат уже есть: ещё одна российская аппаратная платформа получила собственную конфигурацию в открытом международном проекте, а её пользователи — дополнительный выбор программного обеспечения.

Для меня это интересный опыт знакомства с внутренним устройством Linux, загрузчиками, Device Tree и процессом внесения изменений в большой Open Source проект. На этом, пожалуй, и закончим наше первое знакомство с Eltay RM66 и Armbian.

Если эта тема вам интересна, в следующей статье я подробнее расскажу о самом процессе портирования: с какими проблемами пришлось столкнуться, как устроена поддержка платы и что потребовалось для её интеграции в Armbian. Спасибо за внимание!

Автор: Sergey_Braumann

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js