Skip to content

guisodre12/kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLR — Low Level Runtime (AVR)

Runtime minimalista para microcontroladores AVR em C, desenvolvido diretamente sobre registradores, sem dependência do Arduino core ou camadas de abstração.


Visão geral

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.


Hardware suportado

  • ATmega328P
  • ATmega16P
  • Arduino Uno R3 (modo bare metal)
  • Arduino Nano

Filosofia

  • Controle direto do hardware
  • Ausência de abstrações desnecessárias
  • Comportamento previsível e determinístico
  • Código próximo do metal

Funcionalidades

GPIO

Interface direta para controle de pinos:

  • Configuração de saída
  • Escrita digital (HIGH/LOW)
  • Toggle de estado

Implementado diretamente sobre:

  • DDRx
  • PORTx

UART

Driver serial básico:

  • Transmissão bloqueante
  • Recepção bloqueante
  • Comunicação via terminal serial

Sem interrupções ou buffers avançados.


Shell

Interface de comando via UART:

  • Buffer fixo de entrada
  • Echo de caracteres
  • Suporte a backspace
  • Parser simples de comandos

Prompt padrão:

user[~]$:

Comandos disponíveis

  • arduino-led → alterna o LED onboard (PB5)
  • write → teste de comunicação UART

Arquitetura

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.


Build

Dependências

  • avr-gcc
  • avr-libc
  • avrdude
  • make

Compilação

make

Gera:

  • build/main.elf
  • build/main.hex

Gravação

make flash

Configuração padrão:

  • MCU: ATmega328P
  • Porta: /dev/ttyUSB0
  • Baud: 115200

Execução

Após a gravação, conectar via serial:

screen /dev/ttyUSB0 9600

ou:

minicom -D /dev/ttyUSB0 -b 9600

Saída esperada:

user[~]$:

Uso

Exemplo de comandos:

arduino-led

Alterna o estado do LED onboard.

write

Retorna resposta simples via UART.


Estado do projeto

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


Objetivo

O projeto serviu como estudo de:

  • Arquitetura de microcontroladores
  • Programação em baixo nível
  • Comunicação serial
  • Estrutura de sistemas embarcados

Autor

Guilherme Sodré -- Em homenagem à Eric Souza (Senai-SG)


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors