Device Tree: различия между версиями

Материал из Wiren Board
(Отметить эту версию для перевода)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
Device Tree -файлы описания аппаратной конфигурации. Они используются в Linux и, следовательно в Wiren Board.  
Device Tree - файлы описания аппаратной конфигурации. Они используются в Linux и, следовательно в Wiren Board.  
Модификация Device Tree-файлов может понадобится при переназначении портов, подключении некоторых UEXT-устройств, при подключении 1-wire датчиков и т.д.
Модификация Device Tree-файлов может понадобится при переназначении портов, подключении некоторых UEXT-устройств, при подключении 1-wire датчиков и т.д.


Строка 9: Строка 9:


<!--T:3-->
<!--T:3-->
Device Tree для Wiren Board находится в файле [https://github.com/contactless/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23-wirenboard28.dts imx23-wirenboard28.dts]. В нём также используется файл описания процессора, [https://github.com/contactless/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23.dtsi imx23.dtsi]
Device Tree для Wiren Board находится в файле [https://github.com/wirenboard/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23-wirenboard28.dts imx23-wirenboard28.dts]. В нём также используется файл описания процессора, [https://github.com/wirenboard/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23.dtsi imx23.dtsi]


<!--T:4-->
<!--T:4-->
Файлы Device Tree бывают в текстовом формате dts, который компилируется в бинарный формат dtb
Файлы Device Tree бывают в текстовом формате dts, который компилируется в бинарный формат dtb


== Загрузка == <!--T:5-->
== Загрузка == <!--T:5-->
Строка 19: Строка 18:
<!--T:6-->
<!--T:6-->
В стандартом образе Wiren Board загрузчик [[Special:MyLanguage/U-Boot|U-Boot]] считывает dtb-файл описания Device Tree и передаёт его ядру.
В стандартом образе Wiren Board загрузчик [[Special:MyLanguage/U-Boot|U-Boot]] считывает dtb-файл описания Device Tree и передаёт его ядру.
Имя dtb-файла задаётся в файле [https://github.com/contactless/wirenboard/blob/master/rootfs/configs/boot/uEnv.txt /boot/uEnv.txt] :
Имя dtb-файла задаётся в файле [https://github.com/wirenboard/wirenboard/blob/master/rootfs/configs/boot/uEnv.txt /boot/uEnv.txt] :


<!--T:7-->
<!--T:7-->
Строка 29: Строка 28:
<!--T:8-->
<!--T:8-->
Файл dtb находится в /boot/dtbs/imx23-wirenboard28.dtb (для Wiren Board rev. 2.8), в /boot/dtbs/imx23-wirenboard32.dtb (для Wiren Board Smart Home rev. 3.5)
Файл dtb находится в /boot/dtbs/imx23-wirenboard28.dtb (для Wiren Board rev. 2.8), в /boot/dtbs/imx23-wirenboard32.dtb (для Wiren Board Smart Home rev. 3.5)


== Пересборка == <!--T:9-->
== Пересборка == <!--T:9-->
Строка 38: Строка 36:
<!--T:11-->
<!--T:11-->
Другой способ - [[Special:MyLanguage/Сборка ядра|Сборка ядра]]
Другой способ - [[Special:MyLanguage/Сборка ядра|Сборка ядра]]


===Загрузка=== <!--T:12-->
===Загрузка=== <!--T:12-->


<!--T:13-->
<!--T:13-->
Необходимо скачать  из [https://github.com/contactless/linux/tree/v3.13-imxv5-x0.1/arch/arm/boot/dts] файл imx23-wirenboardXX.dts, соответствующий версии устройства  и зависимости. Зависимости на настоящий момент это файлы imx23.dtsi, skeleton.dtsi.
Необходимо скачать  из [https://github.com/wirenboard/linux/tree/v3.13-imxv5-x0.1/arch/arm/boot/dts] файл imx23-wirenboardXX.dts, соответствующий версии устройства  и зависимости. Зависимости на настоящий момент это файлы imx23.dtsi, skeleton.dtsi.


<!--T:14-->
<!--T:14-->
Строка 53: Строка 50:
<!--T:16-->
<!--T:16-->
imx23-wirenboard28.dts для Wiren Board rev. 2.8
imx23-wirenboard28.dts для Wiren Board rev. 2.8


<!--T:17-->
<!--T:17-->
Строка 66: Строка 62:
$ #export WB_BRANCH=v3.12-rc3-imxv5-x0.3  # для ядра 3.12
$ #export WB_BRANCH=v3.12-rc3-imxv5-x0.3  # для ядра 3.12
$ export WB_BRANCH=v3.13-imxv5-x0.1
$ export WB_BRANCH=v3.13-imxv5-x0.1


<!--T:20-->
<!--T:20-->
$ wget https://raw.github.com/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/mxs-pinfunc.h
$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/mxs-pinfunc.h


<!--T:21-->
<!--T:21-->
$ wget https://raw.github.com/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-wirenboard28.dts
$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-wirenboard28.dts


<!--T:22-->
<!--T:22-->
Строка 78: Строка 73:


<!--T:23-->
<!--T:23-->
$ wget https://raw.github.com/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/imx23.dtsi
$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23.dtsi


<!--T:24-->
<!--T:24-->
Строка 84: Строка 79:


<!--T:25-->
<!--T:25-->
$ wget https://raw.github.com/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/skeleton.dtsi
$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/skeleton.dtsi


<!--T:26-->
<!--T:26-->
$ wget https://raw.github.com/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-pinfunc.h
$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-pinfunc.h


<!--T:27-->
<!--T:27-->
Строка 93: Строка 88:
imx23.dtsi      imx23-wirenboard28.dts  skeleton.dtsi
imx23.dtsi      imx23-wirenboard28.dts  skeleton.dtsi
imx23-pinfunc.h  mxs-pinfunc.h
imx23-pinfunc.h  mxs-pinfunc.h


<!--T:28-->
<!--T:28-->
</pre>
</pre>


===Компилятор=== <!--T:29-->
===Компилятор=== <!--T:29-->
Строка 109: Строка 101:
$ sudo apt-get install device-tree-compiler
$ sudo apt-get install device-tree-compiler
</pre>
</pre>


<!--T:32-->
<!--T:32-->
Строка 118: Строка 109:
$ sudo apt-get install gcc
$ sudo apt-get install gcc
</pre>
</pre>


===Компиляция=== <!--T:34-->
===Компиляция=== <!--T:34-->
Строка 130: Строка 120:
DTC: dts->dtb  on file "-"
DTC: dts->dtb  on file "-"
</pre>
</pre>


===Установка=== <!--T:37-->
===Установка=== <!--T:37-->

Текущая версия на 23:39, 18 января 2023

Другие языки:

Device Tree - файлы описания аппаратной конфигурации. Они используются в Linux и, следовательно в Wiren Board. Модификация Device Tree-файлов может понадобится при переназначении портов, подключении некоторых UEXT-устройств, при подключении 1-wire датчиков и т.д.

Подробнее про Device Tree: https://en.wikipedia.org/wiki/Device_tree , http://elinux.org/Device_Tree

Device Tree для Wiren Board находится в файле imx23-wirenboard28.dts. В нём также используется файл описания процессора, imx23.dtsi

Файлы Device Tree бывают в текстовом формате dts, который компилируется в бинарный формат dtb

Загрузка

В стандартом образе Wiren Board загрузчик U-Boot считывает dtb-файл описания Device Tree и передаёт его ядру. Имя dtb-файла задаётся в файле /boot/uEnv.txt :

#These are the default settings for some useful u-boot variables:
fdt_file=/boot/dtbs/imx23-wirenboard28.dtb

Файл dtb находится в /boot/dtbs/imx23-wirenboard28.dtb (для Wiren Board rev. 2.8), в /boot/dtbs/imx23-wirenboard32.dtb (для Wiren Board Smart Home rev. 3.5)

Пересборка

Для внесения изменений в Device Tree надо скачать Device Tree в текстовом формате, скомпилировать файл imx23-wirenboard28.dts и записать результат (imx23-wirenboard28.dtb) в /boot/dtbs/

Другой способ - Сборка ядра

Загрузка

Необходимо скачать из [1] файл imx23-wirenboardXX.dts, соответствующий версии устройства и зависимости. Зависимости на настоящий момент это файлы imx23.dtsi, skeleton.dtsi.

Основной DTS-файл:

imx23-wirenboard32.dts для Wiren Board Smart Home rev. 3.5

imx23-wirenboard28.dts для Wiren Board rev. 2.8

$ mkdir dts
$ cd dts

$ #export WB_BRANCH=v3.12-rc3-imxv5-x0.3  # для ядра 3.12
$ export WB_BRANCH=v3.13-imxv5-x0.1

$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/mxs-pinfunc.h

$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-wirenboard28.dts

2013-11-17 04:24:28 (37.9 MB/s) - «imx23-wirenboard28.dts» сохранён [5255/5255]

$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23.dtsi

2013-11-17 04:24:33 (272 KB/s) - «imx23.dtsi» сохранён [13052/13052]

$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/skeleton.dtsi

$ wget https://raw.github.com/wirenboard/linux/$WB_BRANCH/arch/arm/boot/dts/imx23-pinfunc.h

$ ls 
imx23.dtsi       imx23-wirenboard28.dts  skeleton.dtsi
imx23-pinfunc.h  mxs-pinfunc.h

Компилятор

Компилятор Device Tree в Ubuntu и Debian находится в пакете device-tree-compiler. Установим его:

$ sudo apt-get install device-tree-compiler

Также требуется gcc

$ sudo apt-get install gcc

Компиляция

$ gcc -E -Wp,-MD,imx23-wirenboard28.dtb.d.pre.tmp -nostdinc -I. -undef -D__DTS__ -x assembler-with-cpp -o .imx23-wirenboard28.dtb.dts.tmp  imx23-wirenboard28.dts

$ cat .imx23-wirenboard28.dtb.dts.tmp | grep -v "^#" | dtc -I dts -O dtb -o imx23-wirenboard28.dtb
DTC: dts->dtb  on file "-"

Установка

Скомпилированный файл необходимо записать в /boot/dtsb. Обязательно сделайте резервную копию существущего в /boot/dtsb файла!