Совершенно неожиданно обнаружил себя копающимся в потрохах ядра, а именно — в древовидных структурах 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)