LINUX.ORG.RU

Ползаем по деревьям устройств

 , ,


5

5
Ползаем по деревьям устройств

Совершенно неожиданно обнаружил себя копающимся в потрохах ядра, а именно — в древовидных структурах Devicetree, содержащих описание периферии, подключенной к системе (как правило, встраиваемой).

Не ожидал я такого потому, что подключенный к моему одноплатнику (Wandboard) пятидюймовый LCD-экранчик прекрасно работал с образом Ubuntu 14.04, скачанным с официального сайта. И перестал работать сразу, как я запустил там самосборный дистрибутив с распоследним ванильным ядром.

Целая неделя ушла на то, чтобы осознать причину: в очень нужном и полезном процессе принятия в апстрим ядра вендорских (тогда ещё Freescale, позже поглощённая NXP) патчей для платформы i.mx6, куда-то потеряли поддержку устройств вывода на вандбордах — ни сигналов на параллельной RGB-шине, ни управления питанием экрана, ни даже фреймбуфера /dev/fb0. И это при том, что были проверены и исключены все прочие возможные причины: конфигурация загрузчика, передаваемые ядру параметры, отсутствующие драйверы, дополнительные патчи или опции настройки ядра. Оставалась лишь одно — некорректная конфигурация Devicetree.

Ситуацию усугубил тот факт, что я, ведомый естественным желанием по-быстрому накопипастить чужого, везде натыкался лишь на устаревшие и более неактуальные фрагменты devtree-структур (работоспособные только на патченных ядрах 3.x, от которых решено было избавиться).

И не ждите, что ядро каким-либо образом отреагирует на DT-блоб, неточно или не в полной мере описывающий вашу аппаратную конфигурацию. В лучшем случае на плате ничего не сгорит ;)

Теперь про скриншот. Даже поверхностного взгляда достаточно, чтоб понять: это вам не Plug-and-Play™ :)

Итак, начиная с верхнего левого окна:

  • любимый Okular с открытой распиновкой LCD-модуля и парой висячих заметок
  • под ним — принципиальная схема одноплатника, по которой отслеживается, к какой физической ноге процессора подключен тот или иной сигнал
  • следующее окно — редактируемый .dtsi-файл (DeviceTree Source Include), в который добавляю нужные узлы дерева по аналогии с
  • тем, как это сделано в другой плате с экранчиком — SABRE Lite (окно вверху правее центра)
  • справа вверху — документация ядра с перечнем нужных узлов и параметров (Freescale i.MX DRM master device)
  • справа внизу — документация на процессор с описанием поддерживаемых режимов работы параллельного интерфейса графической подсистемы

Затем из моих правок будет сформирован патч, подсовываемый рецепту ядра для сборочной системы Yocto, которая на выходе сгенерирует мне чистенький и компактный загрузочный образ.

Рабочая система — Gentoo, KDE5.

Спрашивайте ваши ответы. Особенно интересно будет перекинуться парой фраз с имевшими со всем этим дело.

>>> Просмотр (3840x2160, 1730 Kb)

★★

Проверено: JB ()
Ответ на: комментарий от alpha

Поздравляю!

Отдельное уважение за использование свежего ядра. Дадим бой ископаемому софту во встраиваемых системах!

TwisteR ★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)