SlideShare a Scribd company logo
1 of 10
Download to read offline
Практични примери за 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

More Related Content

Similar to Практични примери за device tree overlays на Raspberry Pi

Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Leon Anavi
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваLeon Anavi
 
диплона работа3
диплона работа3диплона работа3
диплона работа3Diqn Vasilew
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptLeon Anavi
 
Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011IBS Bulgaria
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastIvailo Jelqzkov
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux liveIvan Davidov
 

Similar to Практични примери за device tree overlays на Raspberry Pi (8)

Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройства
 
диплона работа3
диплона работа3диплона работа3
диплона работа3
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScript
 
Os
OsOs
Os
 
Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-last
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux live
 

More from Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiLeon Anavi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source HardwareLeon Anavi
 

More from Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
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