SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Desvendando a
Linux Device Tree
André Márcio de Lima Curvello
contato@andrecurvello.com.br
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
“
Se a Microsoft já faz
aplicativos para Linux
significa que eu ganhei.
Linus Torvalds
3
1.
Linux Device Tree
A árvore da vida. Embarcada.
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/
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
Histórico
▪ Common Hardware Reference Platform (CHRP)
especifica Device-Tree em 1995.
▪ ePAPR especifica Device-Tree (2008).
▪ E se torna o padrão ☺
8
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
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
Histórico +
11
Evolução de defconfigs para ARM
12
The treta has been planted
A grande mudança
Um Kernel unificado
13
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
Antes da Device-Tree...
15
ARM Tags
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
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!
▪ 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
Device Tree
19
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
▪ 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
Estrutura
22
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.
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
25
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
+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
28
29
Tudo junto e misturado!
KernelDrivers
Device-
Tree
30
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
32 https://www.kernel.org/doc/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt
Hora de colocar a mão na massa!
Demonstração
33
34
Conflito com endereço do MPU6050!
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
▪ Link:
https://e-labworks.com/en/treinamentos/linux-
device-drivers/
Embedded Labworks
Linux Device Drivers
36
▪ Link:
https://www.toradex.com/pt_br/webinars/demystifying-device-tree-for-nxp-imx-processors
Seminário convidado: Desmistificando Device Tree
para processadores NXP® i.MX
37
Obrigado!
Perguntas?
38
😉
Contato
39
@andremlcurvello
http://youtube.com/profandrecurvello
http://andrecurvello.com.br
contato@andrecurvello.com.br
http://facebook.com/profandrecurvello

Mais conteúdo relacionado

Mais procurados

ArquiteturaRisc_GabiCoelho
ArquiteturaRisc_GabiCoelhoArquiteturaRisc_GabiCoelho
ArquiteturaRisc_GabiCoelhoGabriela Coelho
 
Risc e cisc resumo
Risc e cisc resumoRisc e cisc resumo
Risc e cisc resumoredesinforma
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxFrederico Madeira
 
Apresentacao
ApresentacaoApresentacao
Apresentacaopcassio23
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e riscTiago
 
Aula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de ComputadoresAula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de ComputadoresJorge Ávila Miranda
 
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...Daniel Caixeta
 
Localização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentesLocalização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentesAndré Curvello
 
Arch Linux: Uma distribuição leve e simples - Érico de Morais Nunes
Arch Linux: Uma distribuição leve e simples - Érico de Morais NunesArch Linux: Uma distribuição leve e simples - Érico de Morais Nunes
Arch Linux: Uma distribuição leve e simples - Érico de Morais NunesTchelinux
 
Arch linux - Como instalar
Arch linux - Como instalarArch linux - Como instalar
Arch linux - Como instalarlinuxInfo
 
Protocolo de memória I2C e SPI
Protocolo de memória I2C e SPIProtocolo de memória I2C e SPI
Protocolo de memória I2C e SPIPedro Raphael
 

Mais procurados (20)

ArquiteturaRisc_GabiCoelho
ArquiteturaRisc_GabiCoelhoArquiteturaRisc_GabiCoelho
ArquiteturaRisc_GabiCoelho
 
Processadores RISC
Processadores RISCProcessadores RISC
Processadores RISC
 
Risc e cisc
Risc e ciscRisc e cisc
Risc e cisc
 
Risc e cisc resumo
Risc e cisc resumoRisc e cisc resumo
Risc e cisc resumo
 
Lista de exercícios 01
Lista de exercícios 01 Lista de exercícios 01
Lista de exercícios 01
 
Blackfin
BlackfinBlackfin
Blackfin
 
SDAC 12º - M9 TGEI
SDAC 12º - M9 TGEISDAC 12º - M9 TGEI
SDAC 12º - M9 TGEI
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao Linux
 
PSoC
PSoCPSoC
PSoC
 
Introdução
IntroduçãoIntrodução
Introdução
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e risc
 
Aula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de ComputadoresAula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de Computadores
 
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
 
Localização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentesLocalização indoor com redes de beacons inteligentes
Localização indoor com redes de beacons inteligentes
 
Arch Linux: Uma distribuição leve e simples - Érico de Morais Nunes
Arch Linux: Uma distribuição leve e simples - Érico de Morais NunesArch Linux: Uma distribuição leve e simples - Érico de Morais Nunes
Arch Linux: Uma distribuição leve e simples - Érico de Morais Nunes
 
Ficha de trabalho 1
Ficha de trabalho 1Ficha de trabalho 1
Ficha de trabalho 1
 
Arch linux - Como instalar
Arch linux - Como instalarArch linux - Como instalar
Arch linux - Como instalar
 
Protocolo de memória I2C e SPI
Protocolo de memória I2C e SPIProtocolo de memória I2C e SPI
Protocolo de memória I2C e SPI
 
Imc
ImcImc
Imc
 

Semelhante a Desvendando a Linux Device Tree

1 aprehardsoftso
1 aprehardsoftso1 aprehardsoftso
1 aprehardsoftsoUCM-NAMPULA
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.dannas_06
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoMauro Tapajós
 
Avaliação das distribuições Linux
Avaliação das distribuições LinuxAvaliação das distribuições Linux
Avaliação das distribuições LinuxMauro Tapajós
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPAMarcelo Veiga Neves
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhsAnderson Lago
 
Aula de-introducao-z os
Aula de-introducao-z osAula de-introducao-z os
Aula de-introducao-z osIvan Sanches
 
INF_AULA_1a4_2023.pdf
INF_AULA_1a4_2023.pdfINF_AULA_1a4_2023.pdf
INF_AULA_1a4_2023.pdfritaporfrio
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulosAnderson Lago
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisguest830f1
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisCindy Dalfovo
 
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini Tchelinux
 

Semelhante a Desvendando a Linux Device Tree (20)

IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
1 aprehardsoftso
1 aprehardsoftso1 aprehardsoftso
1 aprehardsoftso
 
S.o iuras
S.o iurasS.o iuras
S.o iuras
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e Instalação
 
Avaliação das distribuições Linux
Avaliação das distribuições LinuxAvaliação das distribuições Linux
Avaliação das distribuições Linux
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs
 
IBM zOS Basics
IBM zOS BasicsIBM zOS Basics
IBM zOS Basics
 
Aula de-introducao-z os
Aula de-introducao-z osAula de-introducao-z os
Aula de-introducao-z os
 
INF_AULA_1a4_2023.pdf
INF_AULA_1a4_2023.pdfINF_AULA_1a4_2023.pdf
INF_AULA_1a4_2023.pdf
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulos
 
Informática para concursos aula 00
Informática para concursos   aula 00Informática para concursos   aula 00
Informática para concursos aula 00
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
DESMISTIFICANDO A FSTAB - Ricardo José Maraschini
 
Linux
LinuxLinux
Linux
 
S.o aula 1234
S.o aula 1234S.o aula 1234
S.o aula 1234
 
So-mod-2
So-mod-2So-mod-2
So-mod-2
 
Aula hardware
Aula hardwareAula hardware
Aula hardware
 

Mais de André Curvello

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19André Curvello
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaAndré Curvello
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureAndré Curvello
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!André Curvello
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...André Curvello
 
Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaAndré Curvello
 
Pilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasPilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasAndré Curvello
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoAndré Curvello
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaAndré Curvello
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasAndré Curvello
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...André Curvello
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.André Curvello
 
Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?André Curvello
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueAndré Curvello
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016André Curvello
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoAndré Curvello
 
IoT - Além da Telemetria
IoT - Além da TelemetriaIoT - Além da Telemetria
IoT - Além da TelemetriaAndré Curvello
 
Segurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasSegurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasAndré Curvello
 
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...André Curvello
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...André Curvello
 

Mais de André Curvello (20)

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem prática
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com Azure
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
 
Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetria
 
Pilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasPilares da Computação para Internet das Coisas
Pilares da Computação para Internet das Coisas
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de Computação
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações Conectadas
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
 
Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino Due
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento Assimétrico
 
IoT - Além da Telemetria
IoT - Além da TelemetriaIoT - Além da Telemetria
IoT - Além da Telemetria
 
Segurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasSegurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das Coisas
 
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
 

Desvendando a Linux Device Tree

  • 1. Desvendando a Linux Device Tree André Márcio de Lima Curvello contato@andrecurvello.com.br
  • 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
  • 4. 1. Linux Device Tree A árvore da vida. Embarcada.
  • 5.
  • 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
  • 11. Histórico + 11 Evolução de defconfigs para ARM
  • 12. 12 The treta has been planted
  • 13. A grande mudança Um Kernel unificado 13
  • 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
  • 25. 25
  • 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
  • 28. 28
  • 29. 29
  • 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
  • 33. Hora de colocar a mão na massa! Demonstração 33
  • 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