Почему размер загрузчика отличается от 0,5 до 8 килобайт для разных плат?

Согласно официальной информации, размер загрузчика составляет 0,5, 2 и 8 килобайт для UNO, Pro mini и ATMega2560. Полагаю, все три загрузчика выполняют схожую работу по получению данных по последовательному порту и записи во флэш-память.

UNO и Pro mini используют одинаковые/похожие чипы ATMega168/328, но размер загрузчика составляет 0,5 и 2 КБ.

ATMega2560, по-видимому, имеет более продвинутый микроконтроллер, который, предположительно, должен использовать аналогичный или даже меньший объем памяти для выполнения той же задачи, но его размер значительно больше — 8 КБ.

Почему размеры отличаются? Небольшая разница может быть связана с разными командами разработчиков, но разница должна быть настолько большой — от 0,5 до 8 КБ.

, 👍6

Обсуждение

Разные загрузчики имеют разные возможности., @Ignacio Vazquez-Abrams


2 ответа


Лучший ответ:

6

Загрузчики Mini и Uno практически одинаковы. (Исходный код найти не удалось, но hex-файлы отличаются лишь немного).

2k связано с тем, что они не обновили mini328.upload.maximum_size в boards.txt. Вероятно, это сломает плату для пользователей, которые ещё не обновили загрузчик.

2560 использует совместимый с stk500v2 загрузчик вместо Optiboot (uno и mini), поскольку Optiboot поддерживает только адреса размером до 64 КБ. Хотя не совсем понятно, почему он такой большой.

,

Как узнать, загружена ли на платы UNO, Pro Mini/ATMega2560 последняя версия загрузчика (надеюсь, он меньше по размеру, чтобы вместить максимальное количество пользовательских программ)? Где можно взять последние версии загрузчиков для этих трёх плат? Как, если необходимо, перепрограммировать загрузчик UNO/Pro Mini/ATMega2560?, @EEd

Загрузить последнюю версию, вероятно, проще, чем проверять, какая версия установлена. Загрузчики можно найти по ссылке: https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders. Просто погуглите, как обновиться. Если получится, задайте новый вопрос здесь, на SE., @Gerben


1

Как правило, чипы предлагают четыре возможные конфигурации размера загрузчика. Например, на Atmega328 это может быть 512, 1024, 2048 или 4096 байт (обратите внимание, что размеры увеличиваются пропорционально степени 2).

Чипы с меньшим объёмом программной памяти предлагают загрузчики меньшего размера, поскольку им не нужно использовать много памяти для загрузки кода. Чипы с большим объёмом памяти (например, Atmega2560) предлагают загрузчики большего размера, например, 1 КБ, 2 КБ, 4 КБ, 8 КБ (опять же, кратно степени 2).

Uno использует 512-байтный загрузчик (Optiboot). Mega, с более сложными инструкциями (для работы с большим адресным пространством), потребовал бы загрузчиков большего размера. Кроме того, в некоторых случаях разработчики загрузчика добавляют дополнительные возможности, например, отладочную консоль.

,