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.

  1. nesjoy-overlay.dts — define o Device Tree Overlay, descrevendo ao sistema operacional (Linux) quais pinos GPIO estão conectados ao joystick.

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