Jump to content
    

EBAZ4205 собрать petalinux "с нуля". Чего бы почитать про device-tree?

2 hours ago, sasamy said:

с любыми

... самопальными левыми девайсами с неподписанными драйверами ...

Share this post


Link to post
Share on other sites

8 minutes ago, RobFPGA said:

самопальными левыми девайсами с неподписанными драйверами

процессоры imx такие самопальные, а чтобы запрограммировать надо кому-то под писку дать 🙂

https://github.com/nxp-imx/mfgtools

Share this post


Link to post
Share on other sites

21 час назад, sasamy сказал:

А уж какой трах в венде с USB устройствами - брр или вы никогда не пользовались ими ?

А что там не так? Вот единственное, чего меня реально бесит в винде - это смена имени диска, если вставляешь другую флешку, вот это да, тут поленом бы забил того, кто так сделал...

14 часов назад, sasamy сказал:

процессоры imx такие самопальные, а чтобы запрограммировать надо кому-то под писку дать

А у других разве не так?))

17 часов назад, sasamy сказал:

с любыми

https://zadig.akeo.ie/

Нее, эт с кривыми дровами так, которые из линукса переехали под винду, но очень криворуко переехали...

Share this post


Link to post
Share on other sites

16 часов назад, sasamy сказал:

поставите на самсунг "простую" венду или пупок развяжется ?

там встретились сразу два "особо одаренных" творения - андроид и арм, а винда под арм это примерно такая же "дурь" что и андроид

в лучшие годы собирал дроиды 7-10 под х86 и как ни странно добиться универсальности дистрибутива там было больше шансов несмотря на значительно более обширную периферию

Share this post


Link to post
Share on other sites

Товарищи, большое спасибо за содержательное обсуждение! Очень познавательно было всё почитать компактно в однм месте.

Что до моей проблемы, то я её в какой-то мере решил. Сделал сборку Linux для ebaz4205 средствами petalinux 2022.2, которая практически понятно, как получена.

В процессе пытал нейросеть Perplexity, научился в U-boot руками загружать и смотреть device-tree, радикально помог рабочий проект от KeitetsuWorks на GitHub.

В качестве полезной книжки нейросеть рекламирует

Simmonds Chris. Mastering Embedded Linux Programming.pdf.

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

Итак, у меня были установлены Petalinux 2022.2 и Vivado 2022.2. Нашёл проект от har-in-air на GitHub, решил пойти по нему.

Наконфигурировал всё, как пишет har-in-air, но при сборке через petalinux-build получил ошибку, не помню точно, какую - что-то про nand - названия в petalinux и в device-tree из Vivado не бьются.

Нашёл как в petalinux-config отключить nand, отключил, собралось.

Да, в процессе еще скачал архивы downloads и sstate с Xilinx (около 60 Гб). Чтобы в процессе сборки не тратить время на выкачивание компонентов из интернета.

При попытке запуска того, что собралось, выявилось две проблемы:

  • U-boot не может загрузить в память ядро
  • не запускается ethernet.

После долгих муторных поисков и общения с ИИ понял, что проблема загрузки ядра связана со значением константы

CONFIG_SUBSYSTEM_UBOOT_FIT_IMAGE_OFFSET=0x10000000

- она по-умолчанию указывает на конец RAM.

А проблема с Ethernet связана с тем, что из Vivado в petalinux пришла не вся информация о том, что есть на плате ebaz4205. Пришло про конфигурацию контроллера Ethernet внутри Zynq, а нужно было еще про микросхему IP101GA ему в device-tree как-то сказать. Ни Vivado, ни Petalinux про это не знают. Это я должен был сказать. Но мне страшно писать от руки кусок device-tree. Я боюсь. Не нравится мне такая отладка - пишешь текст в свободной форме, пять минут собираешь, копируешь на SD-card, втыкаешь, включаешь, видишь - не работаает. И снова по циклу.

Я решил пойти от рабочего.

Взял проект от KeitetsuWorks. Он для Petalinun 2021.2. Скачал нужный petalinux. Vivado 2022.2 нормально приняло *.tcl от KeitetsuWorks. И его выход нормально импортировался в petalinux 2021.2 по команде

petalinux-config  --get-hw-description

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

У KeitetsuWorks не очень понятный репозиторий, непонятно, с чего он начал. Тогда я взял, сделал в petalinux 2021.2 новый чистый проект командой petalinux-create, и сравнил его с тем, который собрался. Посмотрел, какие были существенные изменения и сделал патч (в приложении). Который применил к своему проекту на базе har-in-air и petalinux 2022.2.
В патче, собственно, правка CONFIG_SUBSYSTEM_UBOOT_FIT_IMAGE_OFFSET
и файл ebaz4205.dtsi с необходимой "обвязкой" - дополнение к device-tree, которое я должен был сам написать руками.

Хрен бы я его сам написал. Особенно, пассажи вроде

&sdhci0 {
    status = "okay";
    xlnx,has-cd = <0x1>;
    xlnx,has-power = <0x0>;
    xlnx,has-wp = <0x0>;
};

Где, как я должен был найти эту информацию? Особенно про "xlnx"?
Ну ладно, спасибо, что заработало. Правда, есть подозрение, что светодиод должен был мигать (heartbeat😞

led-red {
    label = "led-red";
    gpios = <&gpio0 54 1>;
    default-state = "on";
    linux,default-trigger = "heartbeat";
};

но он не мигает. И с NAND нужно на досуге разобраться. И demo приложения я в root-fs отключил, нужно попробовать реанимировать.

Короче, самая жесть - самому руками писать device-tree из непонятного и неведомого набора "стандартных" но "vendor-specific" лексем.

 

 

0001-Valuable-additions-from-KeitetsuWorks.patch.txt

Share this post


Link to post
Share on other sites

Успехов.

ПС: Что и требовалось доказать:

"линух это гемморой гемороя. вроде есть дофига всего, а подробностей, нюансов, что и как и почему нету от слова совсем. посему любой шаг в сторону от образца - это шаг в трясину."

Edited by Alex77

Share this post


Link to post
Share on other sites

6 minutes ago, Alex77 said:

"линух это гемморой гемороя. вроде есть дофига всего, а подробностей, нюансов, что и как и почему нету от слова совсем. посему любой шаг в сторону от образца - это шаг в трясину."

Не Linux это геморой, а невежество разработчиков считающих что их работу (как минимум разобраться в конфигах) должен кто то делать за них ... 

Share this post


Link to post
Share on other sites

В 21.10.2025 в 15:52, Arlleex сказал:

и по своей тематике, а не неделями настраивать IDE и отладчик для микроконтроллеров)) И тем более не пересобирать чего-то из исходников и уж тем более - не разбираться с тем, почему что-то не собр

По работе приходилось работать c Zynq, STM чисто embedded и с другими микроконтроллерами уже под FreeRTOS, Embox. С PetaLinux тоже работал. Многозадачность конечно удобна, но реальное время становиться весьма условным, упрощение разработки неоднозначно, выплывают новые сложности связанные с ОС, о чём и сказано выше.   Вот моя темка по EBAZ 

 

Share this post


Link to post
Share on other sites

В 23.10.2025 в 12:38, mitro сказал:

Короче, самая жесть - самому руками писать device-tree из непонятного и неведомого набора "стандартных" но "vendor-specific" лексем.

 

вы наверное dts представяете себе как некий скрипт, а это конфиг типа ini или json только немного другой, конфиг этот читает драйвер спец. функциями (если захочет) и если вписать, что-то что драйвер не знает, то это ни на что не повлияет.

с этим связана проблема "чтобы почитать", а почитать кроме описания этого конфига от автора драйвера по сути нечего

Share this post


Link to post
Share on other sites

Пока из полезного нашел видео на youtube Device Tree For Dummies, Thomas Petazzoni. Там он, в частности, говорит, что все магические строки должны быть описаны в исходниках ядра в папке Documentation/devicetree/bindings.
По-умолчанию в проекте petlinux исходники ядра не видны (похоже, удаляются после успешной сборки). Их можно явно получить командой:
 

petalinux-devtool modify linux-xlnx

После её выполнения исходники ядра появятся в папке components/yocto/workspace/sources/linux-xlnx/. И эта же папка будет потом использоваться при сборке. Если это не нужно, можно посмотреть содержимое, а потом отменить операцию:
 

petalinux-devtool reset linux-xlnx

Или можно пересобрать, не удаляя исходики после сборки:
 

petalinux-build -c linux-xlnx -x savesstate

Но я так не пробовал. Исходники при этом должны оказаться в папке (в моём частном случае) build/tmp/work/zynq_generic-xilinx-linux-gnueabi/linux-xlnx/5.15.36+gitAUTOINC+19984dd147-r0/git

Так уже немного полегче. Хотя бы понятно, откуда чудесные строчки берутся.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...