Практични примери за device tree
overlays на Raspberry Pi
Леон Анави
Linux User Group България
Пловдив, април 2019
Леон Анави - 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
Леон Анави - Linux User Group България 2019
Device Tree
 Спецификация за софтуерна структура от данни, която
описва хардуерни компоненти
 Позволява компилирано Linux ядро да поддържа
различни хардуерни конфигурации в рамките на едно и
също семейство устройства от еднаква архитектура
 Device tree се компилира като външен спрямо Linux
ядрото бинарен файл
Леон Анави - Linux User Group България 2019
Device Tree разширения и инструменти
 Device tree се компилира до device tree binary (DTB)
файл
 Device tree се компилира с device tree compiler (DTC)
 Кодът се съхранява в device tree source (DTS) файл с
разширение .dts
Леон Анави - 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/
Леон Анави - Linux User Group България 2019
DTO пример
Леон Анави - 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
Леон Анави - 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
Леон Анави - Linux User Group България 2019
DTB EEPROM и HAT
 За запис на EEPROM:
пинове 2 и 3
 За четене на EEPROM:
пинове 27 и 28
 Инструкции за .eep файл и флашване eepflash:
https://github.com/raspberrypi/hats
Леон Анави - 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

Практични примери за 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