Aulas — 01 a 08 de Outubro (Quarta feira a Quarta feira) - theedwilk/JoystickRaspberry-HandsOn-DevTitans GitHub Wiki
Em continuidade as atividades desenvolvidas, foi desenvolvidos dois arquivos para auxiliar na integração ao sistema.
-
nesjoy-overlay.dts — define o Device Tree Overlay, descrevendo ao sistema operacional (Linux) quais pinos GPIO estão conectados ao joystick.
-
Makefile.txt — define as regras de compilação, instalação e carregamento do módulo do kernel nesjoy_gpiod.ko, responsável por controlar o joystick via GPIO.
Esses arquivos permitem que o hardware (joystick físico) seja reconhecido pelo software do kernel Linux, criando uma interface estável e modular entre o dispositivo e o sistema.
Objetivo
O arquivo nesjoy-overlay.dts tem o propósito de mapear o joystick NESJoy na árvore de dispositivos do sistema Linux, informando:
- quais GPIOs estão sendo usados,
- o tipo de driver que controla o dispositivo,
- e as opções que podem ser personalizadas no boot via config.txt.
Esse tipo de arquivo é comum em sistemas embarcados como o Raspberry Pi, que usam Device Tree Overlays para habilitar periféricos sem recompilar o kernel.
O que foi feito
- Criado o nó nesjoy dentro de /soc, que representa o joystick conectado aos pinos GPIO.
- Definido compatible = "example,nesjoy-gpiod", informando ao kernel qual driver deve ser associado.
- Especificados os GPIOs usados para latch, clock e data — as três linhas principais do protocolo do joystick.
- Implementado suporte a overrides, permitindo alterar os pinos facilmente via arquivo config.txt, assim:
dtoverlay=nesjoy,latch_pin=5,clk_pin=6,data_pin=13
Isso evita recompilar o overlay toda vez que um pino mudar.
- Marcado o dispositivo como ativo com status = "okay".
- Definido o módulo principal: obj-m += nesjoy_gpiod.o indica ao kernel que deve compilar o arquivo-fonte nesjoy_gpiod.c como um módulo.
- Configurado o diretório do kernel: KDIR aponta para o caminho padrão dos headers do kernel.
Como funciona na prática
Quando o sistema inicia, o Linux lê o arquivo nesjoy.dtbo (gerado a partir desse .dts) e adiciona o nó nesjoy na árvore de dispositivos. O driver nesjoy_gpiod (compilado com o Makefile) então detecta automaticamente esse nó e começa a ler os sinais dos GPIOs para identificar os botões pressionados.
Histórico
| Data | Alteraçõe |
|---|---|
| 02/10 | Criado o arquivo nesjoy-overlay.dts para mapear o joystick NESJoy via GPIO. |
| 02/10 | Implementado o arquivo Makefile.txt para compilar, instalar e carregar o módulo nesjoy_gpiod.ko. |