Кратка презентация от ежегодния семинар на Linux User Group България в Пловдив, 6 април 2019г. Съдържа практични примери за употреба на device tree overlays на Raspberry Pi и първи стъпки в dts (device tree source) и dtc (device tree compiler).
Free and Open Source Software Tools for Making Open Source Hardware
Практични примери за device tree overlays на Raspberry Pi
1. Практични примери за device tree
overlays на Raspberry Pi
Леон Анави
Linux User Group България
Пловдив, април 2019
2. Леон Анави - Linux User Group България 2019
Device Tree
Specification for a software data structure that describes
hardware components
Allows compiled Linux kernel to support different hardware
configurations within a wider architecture family
The device tree is compiled as an external file from the Linux
kernel binary files called DTB (Device Tree Blob) from source
code in DTS (Device Tree Source)
Device Tree Compiler (DTC) compiles the source into a binary
For more details:
https://www.devicetree.org/
https://elinux.org/images/f/f9/Petazzoni-device-tree-dummies_0.pdf
3. Леон Анави - Linux User Group България 2019
Device Tree
Спецификация за софтуерна структура от данни, която
описва хардуерни компоненти
Позволява компилирано Linux ядро да поддържа
различни хардуерни конфигурации в рамките на едно и
също семейство устройства от еднаква архитектура
Device tree се компилира като външен спрямо Linux
ядрото бинарен файл
4. Леон Анави - Linux User Group България 2019
Device Tree разширения и инструменти
Device tree се компилира до device tree binary (DTB)
файл
Device tree се компилира с device tree compiler (DTC)
Кодът се съхранява в device tree source (DTS) файл с
разширение .dts
5. Леон Анави - Linux User Group България 2019
Device Tree Overlay (DTO)
DTO позволява върху централен DTB (device tree blob) да
бъдат насложени описания
DTO съдържа набор от фрагменти
Bootloader-ът по подразбиране на Raspberry Pi, чете и
зарежда DTO от config.txt, разположен на FAT дялът на
microSD картата, чрез dtoverlay=
Автоматично DTO може да бъде прочетено и заредено
при стартиране от EEPROM на add-on платка към 2-рата
I2C шина на Raspberry Pi, т.е. пинове 27 и 28. След
зареждане информацията се вижда в /proc/device-tree/proc/proc/device-tree/device-tree/proc/device-tree/
hat/proc/device-tree/
6. Леон Анави - Linux User Group България 2019
DTO пример
7. Леон Анави - Linux User Group България 2019
Инсталация на DTC на Raspberry Pi
Device tree compiler (DTC) може да бъде инсталиран на
Raspbian, официалната GNU/Linux дистрибуция за
Raspberry Pi с командите:
sudo apt-get update
sudo apt-get install device-tree-compiler
8. Леон Анави - Linux User Group България 2019
Създаване на DTBO
Първо се създава dts файл, който съдържа описанието
на хардуера
С DTC от dts файла се компилира dtbo файл, например:
dtc -I dts -O dtb -o foo.dtbo foo.dts
DTBO файлът се поставя в /boot/overlays/
sudo cp anavi-buttons.dtbo /proc/device-tree/boot/proc/device-tree/overlays/proc/device-tree/
DTBO файлът се описва в config.txt:
dtoverlay=anavi-buttons
9. Леон Анави - Linux User Group България 2019
DTB EEPROM и HAT
За запис на EEPROM:
пинове 2 и 3
За четене на EEPROM:
пинове 27 и 28
Инструкции за .eep файл и флашване eepflash:
https://github.com/raspberrypi/hats
10. Леон Анави - Linux User Group България 2019
Полезни връзки
https://www.devicetree.org/
https://elinux.org/images/f/f9/Petazzoni-device-tree-dummies_0.pdf
https://www.raspberrypi.org/documentation/configuration/device-tree.md
https://opensource.com/article/19/3/gamepad-raspberry-pi
https://www.raspberrypi.org/documentation/configuration/config-txt/gpio.md