генерация дерева устройств для встроенного linux на Zedboard

#linux-kernel #arm #embedded-linux #xilinx #device-tree

#linux-ядро #arm #встроенный-linux #xilinx #устройство-дерево

Вопрос:

Я работаю над ZedBoard (с SoC серии Zync от Xilinx) и хочу создать дерево устройств для встроенного Linux, которое я планирую загрузить на этой Zedboard. Я перешел по двум ссылкам

  1. http://xillybus.com/tutorials/device-tree-zynq-1
  2. http://www.wiki.xilinx.com/Build Устройство Дерево Большой двоичный объект

Они оба дали мне представление о дереве устройств.

Теперь у меня есть два варианта:

  1. Я получил один предварительно созданный файл device tree .dts для Zedboard. Итак, могу ли я использовать это напрямую, ничего не меняя, и добавить только необходимые драйверы, и это будет работать?

или

  1. Должен ли я начать с нуля и создать свой собственный файл device tree .dts. Что я хочу спросить / подтвердить: файл дерева устройств (.dts) не зависит от проекта, и содержимое файла .dts будет уникальным для конкретной платы (в нашем случае это ZedBoard). Итак, я могу взять один рабочий файл .dts (как в варианте 1) в качестве базовой платформы для моего проекта и добавить узел моего устройства в этот файл .dts (если его там нет), и он будет работать?

Пожалуйста, предложите и поправьте меня.

Комментарии:

1. «Хорошо написанный» DT должен состоять из файла .dts для конкретной платы, который включает файлы . dtsi более низкого уровня. Самый нижний файл .dtsi (т. Е. Один из первых включенных файлов) будет предназначен для самого SoC, со всеми второстепенными и необязательными периферийными устройствами, объявленными, но отключенными. Вся информация, относящаяся к плате, должна храниться вне этого файла .dtsi уровня SoC и объявляться в самом файле .dts или файле . dtsi высокого уровня. Практичность такой организации не очевидна для одной платы, но если у вас было несколько конструкций плат, использующих один и тот же SoC, вы можете увидеть его преимущества.

Ответ №1:

Я согласен с комментарием @sawdust. Пожалуйста, найдите графическое изображение того же самого.

Я бесстыдно скопировал это из презентации здесь.
Компоновка плат ARMDA

Чтобы ответить на ваш вопрос, вы должны создать свой собственный файл «.dts», который включает в себя все необходимые родительские (т. Е. Специфичные для SOC и необходимые) файлы dtsi. И скомпилируйте ваш файл «.dts» с помощью компилятора DTC (либо из linux / scripts / dtc / dtc в исходном дереве Linux, либо с помощью пакета типа «device-tree-compiler»).

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