Optiboot es el cargador de arranque más pequeño disponible.
Pero hay un cargador de arranque mucho más potente (con consola incorporada para pruebas de hardware, comprobación de contenido de RAM y Flash, etc.) con un protocolo de comunicaciones stk500v2 más desarrollado y robusto entre avrdude y el cargador de arranque AVR.
Lo he usado en el ATmega2560 y en el ATmega1284p. Funciona para MCU de contador de programa de 3 bytes y 2 bytes.
Tengo una versión STK500v2 Bootloader en Sourceforge .
Este gestor de arranque se basa en el gestor de arranque Peter Fleury STK500v2, actualizado por Mark Sproul. He realizado modificaciones para que sea compatible con la placa Goldilocks (un ATmega1284p).
La característica clave es utilizar el protocolo STK500v2 para cargar la imagen Flash en el Arduino. Este protocolo es más robusto y ofrece mejores capacidades de error que el protocolo avr109 . Por otro lado, el protocolo avr109 se llama "Arduino" en el mundo Arduino, porque alterna DTR (para restablecer la placa e ingresar automáticamente al gestor de arranque), y el protocolo STK500v2 se llama "Cableado" en el mundo Arduino, debido a lo mismo razón.
El gestor de arranque Fleury / Sproul STK500v2 está diseñado para funcionar con el ATmega2560 que tiene un registro de programa de 3 bytes, debido al mayor tamaño de Flash. Pero también admite placas normales de 2 bytes (todo lo demás realmente).
Para placas con mucho Flash (como Goldilocks 1284p), hay un monitor de hardware que se puede usar para consultar Flash, SRAM y hardware; puede verificar las conexiones sin código adicional y verificar el contenido real de Flash y EEPROM. Debido a que el 1284p admite 2 USART, agregué la capacidad de depurar en USART1 , para que el proceso de carga a través de USART0 no se vea afectado .