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
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.

[wpseo_breadcrumb]
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
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services