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

Материал из Wiren Board
(Новая страница: «Read more about Device Tree: https://en.wikipedia.org/wiki/Device_tree , http://elinux.org/Device_Tree»)
(Новая страница: «Device Tree for Wiren Board is located in the [https://github.com/contactless/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23-wirenboard28.dts imx23-wiren…»)
Строка 4: Строка 4:
Read more about Device Tree: https://en.wikipedia.org/wiki/Device_tree , http://elinux.org/Device_Tree
Read more about Device Tree: https://en.wikipedia.org/wiki/Device_tree , http://elinux.org/Device_Tree


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 for Wiren Board is located in the [https://github.com/contactless/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23-wirenboard28.dts imx23-wirenboard28.dts]  
file. It also uses the processor description file [https://github.com/contactless/linux/blob/v3.12-rc3-imxv5-x0.3/arch/arm/boot/dts/imx23.dtsi imx23.dtsi]


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

Версия 18:36, 24 апреля 2019

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

Device Tree are files describing the hardware configuration. They are used in Linux and therefore in the Wiren Board controllers firmware. Modification of Device Tree-files may be required when re-assigning ports, connecting some UEXT-devices, when connecting 1-Wire sensors, etc.

Read more about Device Tree: https://en.wikipedia.org/wiki/Device_tree , http://elinux.org/Device_Tree

Device Tree for Wiren Board is located in the imx23-wirenboard28.dts

file. It also uses the processor description file 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/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/mxs-pinfunc.h

$ wget https://raw.github.com/contactless/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/contactless/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/contactless/linux/$WB_BRANCH/arch/arm/boot/dts/skeleton.dtsi

$ wget https://raw.github.com/contactless/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 файла!