Processo de Exportação de Device Tree Overlay

Device Tree Overlay
Este post faz parte da série Device Tree

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.

root@beaglebone:/lib/firmware# ls -ltr
total 1660
…

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.

root@beaglebone:/lib/firmware# cd /sys/devices/bone_capemgr.*

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:

root@beaglebone:/sys/devices/bone_capemgr.9# cat 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. 

0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI

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:

root@beaglebone:/sys/devices/bone_capemgr.9# echo BB-UART1 > slots

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:

root@beaglebone:/sys/devices/bone_capemgr.9# cat slots

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

0: 54:PF---
1: 55:PF---
2: 56:PF---
3: 57:PF---
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-UART1

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:

root@beaglebone:/sys/devices/bone_capemgr.9# echo -7 > slots

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:

mkdir /mnt/boot
mount /dev/mmcblk0p1 /mnt/boot
nano /mnt/boot/uEnv.txt
#adicione isto ao fim de uma linha do uEnv.txt (não numa nova linha) :
capemgr.enable_partno=BB-UART1

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

Saiba mais

[wpdm_asset id=’13’]

Device Tree

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.
Comentários:
Notificações
Notificar
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Alexandre
Alexandre
11/12/2017 10:10

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

Home » Hardware » Placas de desenvolvimento » Processo de Exportação de Device Tree Overlay

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: