Optiboot é o menor gerenciador de inicialização disponível.
Porém, existe um gerenciador de inicialização muito mais poderoso (com console embutido para teste de hardware, verificação de conteúdo de RAM e Flash etc.) com um protocolo de comunicação stk500v2 mais desenvolvido e robusto entre o avrdude e o gerenciador de inicialização AVR.
Eu usei no ATmega2560 e no ATmega1284p. Ele funciona para o contador de programas de 3 e 2 bytes do MCU.
Eu tenho uma versão do STK500v2 Bootloader no Sourceforge .
Este gerenciador de inicialização é baseado no gerenciador de inicialização Peter Fleury STK500v2, atualizado por Mark Sproul. Fiz edições para apoiá-lo na placa Goldilocks (um ATmega1284p).
O principal recurso é usar o protocolo STK500v2 para carregar a imagem do Flash no Arduino. Este protocolo é mais robusto e oferece melhores recursos de erro do que o protocolo avr109 . Além disso, o protocolo avr109 é chamado de "Arduino" no mundo do Arduino, porque alterna o DTR (para redefinir a placa e entrar automaticamente no gerenciador de inicialização), e o protocolo STK500v2 é chamado de "Wiring" no mundo do Arduino, devido ao mesmo razão.
O carregador de inicialização Fleury / Sproul STK500v2 foi projetado para funcionar com o ATmega2560, que possui um registro de programa de 3 bytes, devido ao tamanho maior do Flash. Mas também suporta placas normais de 2 bytes (na verdade, tudo o mais).
Para placas com bastante Flash (como o Goldilocks 1284p), existe um monitor de hardware que pode ser usado para consultar Flash, SRAM e hardware; você pode verificar as conexões sem código adicional e o conteúdo real do Flash e da EEPROM. Como o 1284p suporta 2 USART, eu adicionei a capacidade de depuração no USART1 , para que o processo de upload via USART0 não seja perturbado.