Optiboot - это самый маленький из доступных загрузчиков.
Но есть гораздо более мощный (со встроенной консолью для тестирования оборудования, проверки ОЗУ и флэш-содержимого и т. Д.) Загрузчик с более развитым и надежным протоколом связи stk500v2 между avrdude и загрузчиком AVR.
Я использовал его на ATmega2560 и ATmega1284p. Работает как для 3-х байтового, так и для 2-х байтового счетчика программ MCU.
У меня есть версия загрузчика STK500v2 на Sourceforge .
Этот загрузчик основан на загрузчике Peter Fleury STK500v2, обновленном Марком Спроулом. Я внес изменения, чтобы он поддерживал плату Goldilocks (ATmega1284p).
Ключевой особенностью является использование протокола STK500v2 для загрузки изображения Flash в Arduino. Этот протокол является более надежным и дает лучшие возможности по ошибкам, чем протокол avr109 . Кроме того, протокол avr109 называется «Arduino» в мире Arduino, потому что он переключает DTR (для сброса платы и автоматического входа в загрузчик), а протокол STK500v2 называется «Wiring» в мире Arduino из-за того же причина.
Загрузчик Fleury / Sproul STK500v2 предназначен для работы с ATmega2560, который имеет 3-байтовый программный регистр из-за большего размера Flash. Но он также поддерживает нормальные 2-байтовые платы (все остальное на самом деле).
Для плат с большим количеством Flash (например, Goldilocks 1284p) существует аппаратный монитор, который можно использовать для запроса Flash, SRAM и аппаратного обеспечения; Вы можете проверять соединения без дополнительного кода и проверять фактическое содержимое Flash и EEPROM. Поскольку 1284p поддерживает 2 USART, я добавил возможность отладки на USART1 , чтобы процесс загрузки через USART0 не нарушался.