Runtime minimalista para microcontroladores AVR em C, desenvolvido diretamente sobre registradores, sem dependência do Arduino core ou camadas de abstração.
O LLR é um ambiente de execução leve para AVR que fornece:
- Controle direto de GPIO via registradores
- Driver UART simples para comunicação serial
- Shell interativo básico
- Loop principal determinístico
A proposta é operar o mais próximo possível do hardware.
- ATmega328P
- ATmega16P
- Arduino Uno R3 (modo bare metal)
- Arduino Nano
- Controle direto do hardware
- Ausência de abstrações desnecessárias
- Comportamento previsível e determinístico
- Código próximo do metal
Interface direta para controle de pinos:
- Configuração de saída
- Escrita digital (HIGH/LOW)
- Toggle de estado
Implementado diretamente sobre:
- DDRx
- PORTx
Driver serial básico:
- Transmissão bloqueante
- Recepção bloqueante
- Comunicação via terminal serial
Sem interrupções ou buffers avançados.
Interface de comando via UART:
- Buffer fixo de entrada
- Echo de caracteres
- Suporte a backspace
- Parser simples de comandos
Prompt padrão:
user[~]$:
arduino-led→ alterna o LED onboard (PB5)write→ teste de comunicação UART
Execução baseada em loop principal:
reset
→ inicializa GPIO
→ inicializa UART
→ entra em shellLoop()
Não há:
- scheduler
- multitarefa
- RTOS
- interrupções no fluxo principal
O sistema é inteiramente baseado em polling.
- avr-gcc
- avr-libc
- avrdude
- make
makeGera:
- build/main.elf
- build/main.hex
make flashConfiguração padrão:
- MCU: ATmega328P
- Porta: /dev/ttyUSB0
- Baud: 115200
Após a gravação, conectar via serial:
screen /dev/ttyUSB0 9600ou:
minicom -D /dev/ttyUSB0 -b 9600Saída esperada:
user[~]$:
Exemplo de comandos:
arduino-led
Alterna o estado do LED onboard.
write
Retorna resposta simples via UART.
- GPIO: funcional
- UART: funcional
- Shell: funcional
- Interrupções: não implementado
- Multitarefa: não implementado
- Scheduler: não implementado
O sistema opera em um único fluxo de execução.
O projeto serviu como estudo de:
- Arquitetura de microcontroladores
- Programação em baixo nível
- Comunicação serial
- Estrutura de sistemas embarcados
Guilherme Sodré -- Em homenagem à Eric Souza (Senai-SG)