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

Outros artigos da série

<< Introdução ao uso de Device Tree e Device Tree Overlay em Sistemas Linux Embarcado

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.

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

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

Home » Beaglebone Black » Processo de Exportação de Device Tree Overlay
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Alexandre Nunes
Alexandre
11/12/2017 10:10

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

Talvez você goste:

Séries



Outros da Série

Menu