Processo de Exportação de Device Tree Overlay

Device Tree Overlay
Este post faz parte da série Device Tree. Leia também os outros posts da série:

Na primeira parte do artigo pudemos entender um pouco mais sobre o histórico que envolve os Device Tree´s, e também estudamos detalhadamente cada uma das suas partes e suas particularidades. Mas apenas “escrever” o Device Tree Overlay não é suficiente para chegarmos ao nosso objetivo, que é descrevermos o hardware de forma precisa. Então neste artigo iremos entender um pouco mais a fundo o processo de exportação de um Device Tree Overlay.

 

Os exemplos a seguir são demonstrados usando a distribuição Debian padrão que atualmente vem gravada nas placas, lembrando que estamos usando uma BeagleBone Black - Revisão C.

 

 

Exportando e “Des- Exportando” um Device Tree Overlay

 

Para começar, navegamos até a pasta /lib/firmware e alí podemos ver todos os device tree overlays disponíveis por padrão.

 

 

Será possível ver uma quantidade razoável de device tree overlays disponíveis. O arquivo fonte (dts) e o compilado (dto) estão no mesmo diretório. Se desejar, abra qualquer um dos arquivos para verificar o conteúdo e até mesmo para fazer uma verificação do que foi explicado no artigo anterior. Cada device tree overlay, por si só, é bem descritivo e, geralmente, bem comentado.

 

Nós poderíamos utilizar o .dts que produzimos no artigo anterior, mas para que a explicação fique mais didática e ilustrada, vamos aproveitar o fato de termos alguns .dto's já compilados disponíveis. Você poderá aplicar os mesmos passos que veremos a seguir com o .dts que produzimos anteriormente.

 

Dito isso, vamos usar como base daqui pra frente o arquivo BB-UART1-00A0.dts.

 

O primeiro passo será navegar até o diretório onde é possível ver quais device tree overlays estão habilitados pelo bone cape manager.

 

 

Note na linha acima que o * é necessário porque nós não conhecemos qual número deve ser, porque isso depende da ordem de boot. Você terá que descobrir qual é o seu caminho particular. No caso da placa e da distribuição que estamos utilizando para escrever o artigo podemos ver o caminho como /sys/devices/bone_capemgr.9/slots.

 

Agora vamos verificar o conteúdo do arquivo slots:

 

 

O arquivo deve estar muito parecido com o que você verá abaixo, considerando que você não tenha feito grandes customizações da distribuição Debian padrão. 

 

 

De acordo com a documentação da BeagleBone, os três primeiros slots são designados para os EEPROM IDs das capes. Os próximos 2 são overlays carregados no boot. O número 4 é a memória eMMC da placa, de onde, muito provavelmente, você está rodando sua distribuição Debian. O quinto device tree overlay é para habilitar o HDMI da placa.

 

Se exportamos agora um novo device tree overlay, como o que estamos usando neste artigo (UART1 overlay), você verá uma nova opção surgir listada como um novo número. Vamos fazer esse teste exportando o arquivo dtbo da UART1:

 

 

Com o comando acima nós obtemos a saída do comando echo, “BB-UART1”, e a escrevemos no arquivo de slots a fim de habilitar os drivers e o device para a UART1 usando o overlay. Agora vamos conferir se o device tree overlay foi carregado adequadamente:

 

 

E assim conseguimos ver nesse ponto a UART1 carregada e pronta para ser utilizada: 

 

 

Agora vamos imaginar que por uma outra necessidade durante seu processo de desenvolvimento você não precisa mais utilizar a UART1 e deseja utilizar os pinos para outra necessidade qualquer. Um dos caminhos para remover o overlay carregado é reinicializar a BeagleBone. A outra forma é “des-exportar”, e você pode fazer isso executando o seguinte comando:

 

 

Nós utilizamos a sétima opção listada, adicionamos um ‘-’ antes, e escrevemos isso no arquivo de slots.

 

Todavia, há uma observação importante para se fazer. Na versão mais recente do Debian (bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img) que foi utilizada durante a escrita deste artigo e também em algumas versões da distribuição Angstrom (a partir da 6-20-2013), descarregar vários overlays pode causar um kernel panic, causando a perda da sessão ssh, e deixando o cape manager com um comportamento imprevisível. A recomendação é para que se faça a reinicialização do sistema para descarregar os overlays, até que esse problema seja corrigido.

 

Mas agora que sabemos que a reinicialização do sistema gera o descarregamento do overlay, como fazer para que ele seja carregado junto com o boot do sistema?

 

Isso é bem simples de ser feito. Tudo o que você precisa fazer é referenciá-lo no arquivo uEnv.txt, que está localizado na pequena partição FAT da sua BeagleBone Black.

 

Os passos a seguir ilustram como fazer isso para o device tree overlay da UART1:

  

 

No próximo artigo iremos compilar um device tree overlay e finalizar essa série de artigos. Até lá!

 

 

Saiba mais

 

Apresentação do Fábio Estevam no Seminário Linux Embarcado 2015

Outros artigos da série

<< Introdução ao uso de Device Tree e Device Tree Overlay em Sistemas Linux Embarcado
Este post faz da série Device Tree. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Mateus Gagliardi
Formado em Matemática pela UNICAMP com experiência no desenvolvimento de firmware para sistemas embarcados. Apaixonado por tecnologia e atuante em soluções que envolvem sistemas bare metal e Linux Embarcado.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Alexandre Nunes Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Alexandre Nunes
Visitante
Alexandre

Quando será publicada a terceira parte "Compilação do DT"?