BeagleBone – Carregando Device Tree Overlay pelo U-Boot

Este artigo descreve o processo de carregamento de Device Tree Overlay por meio do U-boot na BeagleBone Green. Uma vez que o método anterior pelo bone cape manager foi descontinuado. Para demostrar o processo, serão um display OLED e um ADC.

O processo de carregamento de Device Tree Overlay (DTO) na BeagleBone era realizado pelo Kernel por meio do bone cape manager, no entanto esse método foi descontinuado e substituído pelo Overlay por meio do U-Boot. Deste modo, é necessário descrever quais Device Tree Overlay serão carregados durante o processo de boot.

Este artigo irá descrever o processo de carregamento do Device Tree Overlay por meio do U-Boot utilizando dois dispositivos, um display OLED e um conversor analógico digital.

Hardware utilizado

Para descrever o processo de carregamento do DTO, serão utilizados os seguintes dispositivos:

image
Figura 1 – BeagleBone Green (fonte: https://wiki.seeedstudio.com/BeagleBone_Green/)

  • BeagleBone Green: Em parceria com a Seeed Studio, a BeagleBone Green (BBG) foi desenvolvida para ser compatível com sensores da família Grove, deste modo foram adicionados dois conectores Grove e o HDMI foi removido, além do conector USB ser modificado para micro USB. As demais especificações são idênticas à BeagleBone Black (BBB);
  • Conversor Analógico Digital ADS1115: O conversor analógico digital (ADC) ADS1115 possui 4 canais, resolução de 16-bits e comunicação I2C;
  • Display OLED 0.96” SSD1306: Display OLED de 0.96” com resolução de 128×64 pixels e comunicação I2C. Possui como controlador o SSD1306;

Esquema de Ligações

Com observado, os dois dispositivos que serão utilizados com a BBG possuem comunicação I2C, desta forma, ambos os dispositivos serão conectados ao I2C-1 (pinos 17 e 18 do conector P9) da BBG. A imagem abaixo mostra o esquema de ligações, embora seja mostrada a BeagleBone Black, as ligações são a mesma para a BBG. Para que seja possível testar o ADS1115, um potenciômetro foi adicionado ao canal 0:

image
Figura 2. Esquema de Ligações

Checando os Device Drivers

A imagem que será utilizada é a Buster IoT sem interface gráfica que pode ser encontrada no site da BeagleBoard. No momento, a última imagem disponível é AM3358 Debian 10.3 2020-04-06 4GB SD IoT.

O Device Driver a ser utilizado para controlar o display OLED será o FB_SSD1307 e para controlar o ADS1115 será o TI_ADS1015. Pelo terminal da BBG, podemos checar se os drivers já estão habilitados pelo comando abaixo:

image 1
Figura 3. Checando os Device Drivers

O módulo FB_SSD1307 já está incluído built-in na imagem do Kernel, no entanto, o TI_ADS1015 foi incluído como módulo, desta forma é necessário carregá-lo. Pode ser utilizado o comando modprobe, porém ao reiniciar a placa será necessário carregá-lo novamente. Para contornar, iremos adicionar o nome do módulo ao arquivo /etc/modules para este ser carregado durante o boot:

image 4
Figura 4. Adicionando o TI_ADS1015 ao /etc/modules

Após reiniciar a placa, é possível observar se o módulo foi carregado pelo comando lsmod:

image 5
Figura 5. Checando se o módulo TI_ADS1015 foi carregado

Carregando o Device Tree Overlay

Na imagem do Debian 10.3 2020-04-06, alguns Device Tree Overlays já compilados podem ser encontrados em /lib/firmware/. No entanto, os DTOs para o SSD1306 e ADS1115 ainda não estão disponíveis na imagem, então, será necessário compilá-los a partir do repositório da BeagleBoard.

A BeagleBoard mantém os códigos-fontes dos DTO em https://github.com/beagleboard/bb.org-overlays. Em /src/arm podemos encontrar os DTO para os dispositivos que estamos trabalhando: SSD1306 e ADS1115.

Após clonar o repositório, precisamos compilar estes DTO de modo a gerar o Device Tree Blob Overlay (DTBO) de cada um. Há um Makefile que podemos utilizar para compilá-los:

Agora, precisamos copiar os DTBO para a diretório /lib/firmware/ no SDCard da BBG.

Para carregar os DTBO, é necessário adicioná-los ao arquivo uEnv.txt do U-Boot. Este arquivo define algumas configurações necessárias para que o U-Boot inicialize o Kernel Linux. Este arquivo pode ser encontrado em:

No arquivo há uma seção chamada ###Additional custom capes onde iremos adicionar os DTBOs:

image 6
Figura 6. DTBOs adicionados no uEnv.txt

Por fim, desmontar o SDCard e inserir na BBG. Durante o boot, já é possível observar os DTBOs sendo carregados pelo U-Boot:

image 7
Figura 6. DTBOs sendo carregados pelo U-Boot

Após o boot, é possível observar que o display está mostrando o console da BBG:

image 1
Figura 7. Console pelo Display OLED

Utilizando o teclado na BBG para logar no console por meio do Display OLED, podemos navegar até o diretório do dispositivo ADS1115 e ler o valor do ADC utilizando o comando watch:

image
Figura 8. Lendo o valor do ADC por meio do Display OLED

Referências

https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays

https://github.com/beagleboard/bb.org-overlays

Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H