Представляем ядро ​​BeagleBone Black для Linux 3.8

Эта гостевая колонка соучредителя BeagleBoard.org Джейсона Криднера представляет новейшее ядро ​​BeagleBone Black для Linux 3.8 по сравнению с оригинальным ядром BeagleBone 3.2.
Новое ядро ​​включает новую архитектуру драйвера дисплея диспетчера прямой визуализации (DRM), а также полную поддержку структуры данных дерева устройств, представленной в Linux 3.7, чтобы упростить разработку ARM Linux и поддержку оборудования.

Представляем ядро ​​BeagleBone Black для Linux 3.8

Джейсон Криднер, соучредитель BeagleBoard.org

BeagleBone Black вышел!
Всего за 45 долларов за плату Sitara ARM AM335x Cortex-A8 с тактовой частотой 1 ГГц, сконфигурированную и готовую к использованию через поставляемый USB-кабель всего за несколько секунд, эти крошечные платы слетают с полок и вызывают большой всплеск.
В дополнение к новому встроенному выходу HDMI, встроенному флэш-накопителю eMMC объемом 2 ГБ и обновленной оперативной памяти теперь объемом 512 МБ, имеется также обновленное ядро, переходящее с версии Linux 3.2.x на 3.8.x, и обновленный BoneScript с запуском. очень полезного живого учебника по бегу.
Эти усовершенствования программного обеспечения имеют решающее значение для включения следующего поколения пользователей Beagle и оказывают большое влияние.

Погоня за новыми ядрами была постоянной миссией разработки Beagle, так как мы стремимся максимально помочь большому количеству разработчиков ядра продвигать и использовать проект.
Хотя нам пока не удалось использовать ванильное ядро ​​(то, которое не было исправлено вне исходных текстов ядра Линуса), многие из примененных нами исправлений поступили непосредственно из списков рассылки Linux, куда исправления были отправлены сопровождающие уже
Мы фактически начали интеграцию BeagleBone Black с ядром 3.7 и переключились на 3.8 незадолго до запуска - нам нужно было использовать новейшее стабильное ядро, доступное для обеспечения поддержки.
Этим летом мы будем привлекать команду разработчиков ядра TI и нескольких стажеров, чтобы помочь сообществу BeagleBoard.org и ключевым разработчикам в очистке исправлений, которые еще не отправлены, а также в передаче их вышестоящим сопровождающим.
Мы пропустили 3.9 и будем прыгать обратно в основной поезд на 3.11-й.

Хотя мы всегда стремимся быть агрессивными в принятии новых ядер для обеспечения плат, запуск такого относительно нового ядра не был простым решением.
Ядро 3.2 было довольно стабильным с большой поддержкой, и некоторые проекты уже сделали исправления для включения BeagleBone Black в своих старых версиях кода, таких как проект «Rowboat», который предоставляет Android 4.1 (он же «Jelly Bean») в общедоступный открытый репозиторий с открытым исходным кодом .
Однако некоторые ключевые особенности нового ядра 3.8.x сделали его настолько привлекательным, что мы просто не хотели бы, чтобы разработчики продолжали тратить свое время на старый код.

Первое критическое обновление - это «дерево устройств». В старом стиле каждая платформа имела свой собственный идентификатор и логику времени выполнения для настройки всех различных периферийных устройств, включенных в платформу.
Сотни платформ ARM сделали всю эту логику времени выполнения чем-то практически не поддерживаемым, и ведущие разработчики заявили, что никакие новые платформы не будут поддерживаться в старом стиле.
Это означает, что если бы мы не переключались на дерево устройств, независимо от того, насколько качественно мы работали, мы всегда были бы в тупике, поддерживая его сами и никогда не смогли бы извлечь выгоду из работы других разработчиков Linux.
Это просто неприемлемо, и было лучше, чтобы мы заплатили налог как можно раньше, чтобы новые взносы были максимально совместимы.

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

BeagleBone Black - одна из первых полностью ARM-платформ с поддержкой дерева устройств, поэтому мы стремимся охватить то, что может поддерживать дерево устройств.
Во многих случаях мы исправили проблемы с поддержкой дерева основных устройств, которые могут принести пользу всем будущим разработкам.
Мы также представили некоторые привлекательные новые функции в дереве устройств, такие как наложения во время выполнения, которые позволяют загружать и настраивать драйверы устройств в любое время.
Это улучшение не только упрощает создание прототипов, но и позволяет загружать драйверы на основе пользовательского ввода для компонентов, которые не могут быть обнаружены аппаратным обеспечением.

Второе критическое обновление - это использование более современной архитектуры драйвера дисплея, основанной на Direct Rendering Manager (DRM), а не простого кадрового буфера.
Это оказывается критически важным для поддержки определенных во время выполнения разрешений для мониторов, которые проверяются на предмет их возможностей по кабелю HDMI с использованием EDID.
Продолжается работа по улучшению поддержки различных мониторов, но решение в более ранних ядрах включало жесткое кодирование значений в аргументах загрузки для указания разрешения загрузки.
Возможность просто подключить монитор и заставить его работать с самым высоким поддерживаемым разрешением - невероятно желанная особенность нового ядра.

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

Хотя мы еще не перехватили основную линию и не включили поддержку всех накидок с этим новым выпуском ядра, мы продвинулись вперед, и включение накидок было значительно упрощено.
Мы с большим успехом закрываем погоню и используем новейшие возможности.
Те, кто не хочет приходить на прогулку, также имеют большой успех.
С BeagleBone Black редко возникает вопрос: «Будет ли оно работать на моем программном обеспечении?», Но «какое из многочисленных решений я хочу использовать?». Это довольно замечательный мир, в котором так много вариантов!

Учитывая динамичный рост дополнительных плат Cape для BeagleBone Black и широкий круг пользователей и использования, я считаю, что наш выбор для выполнения этого значительного обновления ядра был очень полезным для разработчиков и конечных пользователей.
Почему бы не повеселиться и присоединиться к погоне?

Рекомендации

Дальнейшие детали относительно тем в этом объявлении доступны от ссылок ниже.

Об авторе: Джейсон Криднер, менеджер по архитектуре программного обеспечения для процессоров приложений, в Texas Instruments.
Известный архитектор программного обеспечения с открытым исходным кодом, Kridner является соучредителем BeagleBoard.org, мощного сообщества, где разработчики программного обеспечения и любители обмениваются решениями, демонстрируют новые проекты, задают вопросы и дают обратную связь.