Автор Тема: Devicetree  (Прочитано 2548 раз)

Оффлайн Olej

Re: Devicetree
« Ответ #15 : Июнь 16, 2018, 12:25:47 am »

Вопрос - может знаете? - вот таким образом восстановленное дерево устройств .dtb или .dts - можно ли его использовать в дальнейшем для ручной сборки ядра/образа для той же платформы  (где оно было снято)?
Чтобы не разгребать детально hardware этой же платформы, и чтобы не выписывать для неё вручную .dts-ы ... да ещё и не особенно умея это делать. ;D

насколько помню нет, когда писал оверлеи "кнопки на GPIO Mainline Linux OrangePi"  и "I2S Аудио на mainline ядре OrangePi", только так я мог видеть текущее состояние ДУ, без перезагрузки Opi, то есть  незаменимая вещь при отладке оверлеев на целевой платформе.
Оверлеи в DT, насколько я понял - это только записать DT по фрагментам, отдельно по ветвям, из которых дерево потом будет составлено (оверлеи DT, как я встречал, вообще появились достаточно недавно ... года с 2015-го, и это альтернативная техника).

Но восстановленной полное дерево .dts, из /proc по показанной вами технологии, должно бы годится как описание компонентов SBC - для сборки для ней системы Linux.   

Т.е. примерно так:
- кто-то первоначально записывал (оверлейно, возможно) DT для существующей системы, собирал для неё образ ... система работает...
- мы восстанавливает DT в .dts из /proc ...
- потом это дерево используем в сборке нового ядра/образа для этого SBC.
« Последнее редактирование: Июнь 16, 2018, 12:29:04 am от Olej »

pcmax

  • Гость
Re: Devicetree
« Ответ #16 : Июнь 16, 2018, 01:25:27 am »
там Вы не отвечаете
может скажите, какие ключи нужны
какой вообще синтаксис?

pcmax

  • Гость
Re: Devicetree
« Ответ #17 : Июнь 16, 2018, 01:45:50 am »
помогите с ключами dts разобраться
надо указывать, когда будешь компилить dts в dtb
Мы в этой теме не рассматриваем компиляцию .dts - вы уже и так в 3-х других темах этим занимаетесь ... вот там и продолжайте ;D
Это тема: о том как строятся и записываются DT, вопросы подготовки DT, какие операции можно выполнять с DT ... и т.д.
так приходится везде искать ответы.  Вы же игнорируете, в гугл отправляете.
этот u-boot уже два месяца висит вопросом.

Оффлайн Olej

Re: Devicetree
« Ответ #18 : Июнь 16, 2018, 11:06:34 am »
может скажите, какие ключи нужны
какой вообще синтаксис?
Ну вот зачем срать в посторонние темы, которые совсем не относятся в вопросу? >:(
« Последнее редактирование: Июнь 16, 2018, 05:30:35 pm от Olej »

pcmax

  • Гость
Re: Devicetree
« Ответ #19 : Июнь 16, 2018, 02:44:47 pm »
я думал dtc тема

Оффлайн Olej

Re: Devicetree
« Ответ #20 : Июнь 16, 2018, 04:07:15 pm »
когда писал оверлеи "кнопки на GPIO Mainline Linux OrangePi"  и "I2S Аудио на mainline ядре OrangePi"
Эти темы есть на форуме? Можно ссылки? Быстрым более-менее поиском я ничего не нашёл подобного ... но тут разделов много на форуме, и разбиты они тематически далеко не лучшим образом.
Или это где-то в другом месте описание можно посмотреть?

Оффлайн Olej

Re: Devicetree
« Ответ #21 : Июнь 16, 2018, 04:19:39 pm »
текущее состояние ДУ можно посмотреть так:

sudo apt-get install device-tree-compiler

dtc -I fs -O dtb -o My.dtb /proc/device-tree
dtc -I dtb -O dts -o My.dts ./My.dtb

Это может быть полезно, если вам нужно увидеть эффект от слияния оверлеев в одно базовое дерево,
Имеется в виду следующее:
- имеем в руках работающий Linux на ARM SBC (т.е. можем посмотреть /boot, /proc и всё-всё-всё...)
- какой-то совсем чуждой OrangePi & Armbian архитектуры - я как образец беру Rapsberi Pi 2 ... с noname загруженным образом неиззвестной сборки и происхождения
- там в /boot, естественно, какая то иерархия файлов .dtb и оверлеев .dtbo ... там, как всегда, много лишнего, в расчёте на ближайшие модификации этого SBC ... там всякие mini, zero и пр.
- показанным вами способом я могу воссоздать единое дерево .dtb, использующееся на данном конкретном образце SBC ... ну и, при желании, соответствующее ему .dts на "посмотреть"
- получаю что-то такое:
root@raspberrypi:~ # dtc -I fs -O dtb -o My.dtb /proc/device-tree
Warning (unit_address_vs_reg): Node /soc has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/vchiq has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/gpiomem has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/local_intc has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /axi/vc_mem has a reg or ranges property, but no unit name
Warning (avoid_default_addr_size): Relying on default #address-cells value for /axi/vc_mem
Warning (avoid_default_addr_size): Relying on default #size-cells value for /axi/vc_mem

root@raspberrypi:~ # ls
Desktop  Documents  Downloads  ex01  gpio_test  Music  My.dtb  pi2  Pictures  Public  Templates  Videos

root@raspberrypi:~ # dtc -I dtb -O dts -o My.dts ./My.dtb
Warning (unit_address_vs_reg): Node /soc has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/vchiq has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/gpiomem has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /soc/local_intc has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name
Warning (unit_address_vs_reg): Node /axi/vc_mem has a reg or ranges property, but no unit name
Warning (avoid_default_addr_size): Relying on default #address-cells value for /axi/vc_mem
Warning (avoid_default_addr_size): Relying on default #size-cells value for /axi/vc_mem

root@raspberrypi:~ # ls
Desktop  Documents  Downloads  ex01  gpio_test  Music  My.dtb  My.dts  pi2  Pictures  Public  Templates  Videos
- как видно, всё сработало ... что там куча предупреждений - так это мы отставим на потом...
- видно, что .dtb & .dts создались...

Могу я это единое дерево .dtb (оно ведь полностью соответствует аппаратной конфигурации что у меня в руках?) использовать при сборке нового образа для этого оборудования?


Оффлайн ua3nbw

Re: Devicetree
« Ответ #22 : Июнь 16, 2018, 07:42:33 pm »

Могу я это единое дерево .dtb (оно ведь полностью соответствует аппаратной конфигурации что у меня в руках?) использовать при сборке нового образа для этого оборудования?

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

Оффлайн ua3nbw

Re: Devicetree
« Ответ #23 : Июнь 16, 2018, 07:59:47 pm »
когда писал оверлеи "кнопки на GPIO Mainline Linux OrangePi"  и "I2S Аудио на mainline ядре OrangePi"
Эти темы есть на форуме? Можно ссылки? Быстрым более-менее поиском я ничего не нашёл подобного ... но тут разделов много на форуме, и разбиты они тематически далеко не лучшим образом.
Или это где-то в другом месте описание можно посмотреть?

https://ua3nbw.ru/all/knopki-na-gpio-orangepi/
про "I2S Аудио на mainline ядре OrangePi",  использовал как базовый оверлей от raspberry, но как основу, на armbian  оверлеи от raspberry не работают, надо чуть дорабатывать.


Оффлайн Olej

Re: Devicetree
« Ответ #24 : Июнь 17, 2018, 10:27:08 am »
https://ua3nbw.ru/all/knopki-na-gpio-orangepi/
Прочитал с огромным интересом! ;)
А ещё, пойдя от этой заметки, Device Tree Mainline Linux.
Всё это изучаю с неиссякаемым интересом ;D
Прокомментируйте, подскажите ... то что вы там пишете:

Кнопки на GPIO Mainline Linux OrangePi
Цитировать
git clone https://github.com/ua3nbw-cf/gpio-keys
Это ваш собственный GIT, я так понимаю?
Посмотрел код драйвера gpio-keys.c, там в комментариях останавливает внимание (как это и принято в мире Linux) :
Цитировать
* Copyright 2005 Phil Blundell
* Copyright 2010, 2011 David Jander <david@protonic.nl>

Т.е. это вещь не новая, не вчерашняя...
Можно уточнить: из какого источника её происхождение? ... т.е. изделие, фирма, для чего это делалось изначально и т.д.

Device Tree Mainline Linux.
Цитировать
armbian-add-overlay you-overlay.dts
Что это за команда armbian-add-overlay? (по её написанию - это какой-то специфический скрипт Armbian?)
И что она делает по смыслу?

про "I2S Аудио на mainline ядре OrangePi",  использовал как базовый оверлей от raspberry, но как основу, на armbian  оверлеи от raspberry не работают, надо чуть дорабатывать.
В чём состоят главные отличия (что не работают) и как приходится дорабатывать?
« Последнее редактирование: Июнь 17, 2018, 11:45:18 am от Olej »

Оффлайн ua3nbw

Re: Devicetree
« Ответ #25 : Июнь 17, 2018, 07:51:59 pm »
Оверлей включающий пины (PA11,PA12) GPIO при начале загрузки, просто писал для теста драйвера gpio-leds который встроен в ядро (или подгружается, но не в этом суть) от armbian, пример использования  https://ua3nbw.ru/all/device-tree-mainline-linux/

gpio_keys.c это стандартный keyboard driver, и тут пример оверлея: https://www.kernel.org/doc/Documentation/devicetree/bindings/input/gpio-keys.txt
я просто использовал этот драйвер. он не включен в armbian по умолчанию, поэтому показал как можно собрать  gpio_keys. http://ua3nbw.ru/all/knopki-na-gpio-orangepi/

тут ещё примеры оверлеев от armbian:  https://github.com/armbian/sunxi-DT-overlays/tree/master/examples
и если сравнивать оверлеи  armbian и аналогичные оверлеи  для raspberry (не помню где видел более 100 оверлеев для raspberry) эту разницу можно уловить.

armbian-add-overlay , да скрипт.  Основная команда :dtc -@ -q -I dts -O dtb -o ${temp_dir}/${fname}.dtbo $1
ну и скрипт armbian-add-overlay поместит .dtbo, в /boot/overlay-user и пропишет оверлей в /boot/armbianEnv.txt



« Последнее редактирование: Июнь 17, 2018, 07:55:07 pm от ua3nbw »