O documento fornece uma introdução sobre o Linux Device Tree, descrevendo sua história, funcionamento, estrutura e aplicações. O Device Tree é uma estrutura de dados que descreve o hardware de um sistema e configura os drivers do kernel Linux.
2. Sobre mim
André Márcio de Lima Curvello
» Engenheiro de Computação – USP São Carlos
» MBA em Gestão de TI - UNIFRAN
» Mestrado em Processamento de Sinais e
Instrumentação – USP São Carlos
» Articulista do Portal Embarcados e FilipeFlop
» Analista de Tecnologia – Padtec S/A
» Professor na Pós-Graduação em Sistemas
Embarcados – UNISAL São José - Campinas
2
3. “
Se a Microsoft já faz
aplicativos para Linux
significa que eu ganhei.
Linus Torvalds
3
6. O que é a Linux Device Tree?
▪ O ePAPR especifica o conceito chamado de device tree
para descrever um sistema de hardware.
▪ Um device tree é uma estrutura de dados do tipo árvore,
com nós que descrevem dispositivos físicos em um
sistema.
▪ Device-tree descreve informações de dispositivo ño
sistema que não podem ser dinamicamente detectadas
pelo cliente.
6
ePAPR – Power.org Standard for Embedded Power Architecture Platform Requirements
https://www.power.org/documentation/epapr-version-1-1/
7. Histórico
▪ Sun Microsystems – OpenBoot / OpenFirmware
(1988)
▫ Usado em sistemas SPARC
▫ Usa DT para descrever elementos de hardware
▪ IEEE-1275 formaliza a especificação (1994)
▪ Apple adota OpenFirmware no PowerMac 7200
usando Device-Tree (1995)
7
8. Histórico
▪ Common Hardware Reference Platform (CHRP)
especifica Device-Tree em 1995.
▪ ePAPR especifica Device-Tree (2008).
▪ E se torna o padrão ☺
8
9. Device Tree no Kernel Linux
▪ SPARC
▪ Todos os sistemas passam Device-Tree – já
suportado há muito tempo no Kernel
▪ PowerPC
▪ PowerMacs incentivaram o suporte de DeviceTree
no Kernel
▪ x86
▫ CE4100 Falconfalls usa Device-Tree
9
10. Device Tree no Kernel Linux
▪ ARM
▫ Ultimato de Linus Torvalds - 2011 – “Zona” de
códigos.
▪ MIPS
▪ Seguiu a onda do ultimato - 2011
▪ FPGAs
▫ Altera/Xilinx já aplicam DeviceTree na configuração
de seus sistemas (híbridos).
10
14. Antes da Device-Tree...
▪ Kernel continha TODA a descrição do Hardware.
▪ O bootloader carrega um único binário
(normalmente zImage ou uImage), e executa.
▪ Cada novo equipamento/plataforma...
▪ Uma estrutura de código adicional
▪ Registros para informar + dados e plataforma
14
16. E vem a Linux Device Tree
▪ Estrutura de dados (árvore) para descrever uma
configuração de hardware!
▪ Kernel 3+
▪ Interface entre bootloader e Sistema Operacional
(Kernel)
▪ Um Framework para suportar facilmente
múltiplos SoCs usando uma única imagem de
Kernel16
17. Histórico
▪ Here you have a list of items
▪ And some text
▪ But remember not to overload your slides with
content
Your audience will listen to you or read the content,
but won’t do both.
17
One Kernel to rule them all!
18. ▪ Kernel não mais possui a descrição do hardware
▪ Essa descrição fica na Device Tree!
▪ - Um novo binário – Device Tree Blob – DTB
▪ Imagem de Kernel –uImage ou zImage
▪ DTBs localizadas em arch/arm/boot/dts dos
fontes do Kernel.
▪ Um por placa
Device Tree
18
20. O que a Device Tree não faz
▪ Não substitui códigos específicos da placa
Ela só configura o que existe
▪ Não adiciona novas características à plataforma
E pode retirar o que a placa pode ter :-P
▪ Não faz dar boot mais rápido
20
21. ▪ Nós
▫ Agrupamentos de propriedades e nós-filhos
▪ Propriedades
▫ Pares chave-valor
▫ Pontos-chave para configurações desejadas
▫ Ex: endereço de memória, pino, IRQ, nome de dispositivo.
▪ Phandles
▫ Referências para outros nós
Conceitos Básicos de Device Tree
21
23. Estrutura da Device Tree
DTS/DTSi DTBDTC
23
Arquivo fonte da
Device Tree
Compilador da Device
Tree. Ele compila DTS
em DTB
Abreviação de Device
Tree Blob – É o arquivo
binário que armazena
informação da DTS.
24. Device Tree Source para ARM
▪ Formatos de arquivo:
▪ *.dts – Arquivos para definição de placas
▪ *.dtsi – Arquivos de includes
▪ *.dtsi - Normalmente contém definições de
SoC/Plataformas!
24
26. Device Tree Source para ARM
▪ Formatos de arquivo:
▪ *.dtb
1º - Produzido pelo compilador (dtc)
2º - Carregado pelo Bootloader
3º - “Parseado” (ai) pelo Kernel no boot.
a.k.a. Flattened Device Tree - FDT
arch/arm/boot/dts/Makefile
-lista os DTBs que devem ser compilados26
27. +Obs Device Tree
▪ Device Tree CONFIGURA Drivers
▪ Device Tree opera em CONJUNTO com Drivers
▪ Ex:
▫ Acionar/desativar GPIOS, SPI , I2C, UART, USB,
Rede, Display, Etc
▫ Controlar frequências, IRQs, clocks, etc.
▫ Parâmetros esses que são usados pelos...
▫ Drivers!
27
30. Tudo junto e misturado!
KernelDrivers
Device-
Tree
30
31. Device Tree Bindings!
▪ Documentation/devicetree/bindings
▪ Documenta propriedades, valores, itens
mandatórios e opcionais
▪ Para elementos já cadastrados na árvore do
Kernel!
Quero adicionar um nó! #comofaz?
31
35. Oferecimento do Free-Electrons
▪ Link: http://free-
electrons.com/pub/conferences/2013/elce/petaz
zoni-device-tree-dummies/petazzoni-device-
tree-dummies.pdf
Device Tree for Dummies
35