Кремень КБ1 Реклама
Кремень КМ1 Реклама

Avrdude. Как скачать, забэкапить и залить заново прошивку

CraVeg
Идет загрузка
Загрузка
30.04.2016
78350
55
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

82
Представьте такую ситуацию. 'У вас есть плата от принтера (допустим китайского), которая содержит какую-то свою прошивку. И вот настал тот день и тот час, когда вы решили, что вам нужно эту прошивку поменять, по тем или иным причинам. Но вас всё ещё держит одно 'но'. Вы боитесь всё испортить и хотите иметь возможность откатиться обратно. Но как назло - нормальной информации в интернете по вопросу, как забэкапить прошивку особо не нагуглишь. Примерно с такой проблемой ко мне, намедни, обратился один из участников нашего сообщества. И я решил, что раз уж так, то почему бы не поведать всем о том, как же это можно сделать.
Avrdude. Как скачать, забэкапить и залить заново прошивку
Но прежде чем писать умные мысли - всё надо проверять, чем я и занялся. Эксперименты я проводил с Arduino Mega 2560. О ней дальше я и буду писать.

Поначалу я попытался пойти привычным способом 'влоб', достал программатор китайский (на заглавной фотке), подключился по ISP, и скачал прошивку. Попытался её залить назад... Льётся, но верификацию не проходит. Битых несколько часов рыл интернет, чтобы понять, как же можно нормально скачать прошивку с Меги по ISP. Толком ничего вразумительного не нашёл, но зато понял, что прошивку можно скачать и залить обратно и без программатора. Об этом опыте я и напишу ниже. А вот о том, как скачивать прошивку не с Arduino платы, да так чтобы она потом назад заливалась я напишу как-нибудь в следующий раз, когда у меня появится плата, которую можно безбоязненно пускать и в огонь и в воду.

Ладно, к делу. Для начала нам нужна утилита Avrdude, она входит в поставку Arduino IDE и в моей версии лежала в папке '%appdata%Arduino15packagesarduino oolsavrdude6.0.1-arduino2in'. Открываем папку, жмём на пустом месте SHIFT + правая кнопка мыши, а в меню выбираем 'Открыть окно команд'. Теперь приведу простую команду, которая проверяет, что контроллер читается.
avrdude.exe -p atmega2560 -c wiring -P COM5
Если всё в порядке, то вы должны увидеть примерно такой текст (см. скриншот).
Avrdude. Как скачать, забэкапить и залить заново прошивку
Атрибуты команды:

-p atmega2560 - установка типа контроллера.

-c wiring - установка программатора. Это внутренний программатор в плате Arduino Mega 2560. Может я и не правильно выразился, но тот же атрибут использует IDE, когда заливает скомпилированный скетч.

-P COM5 - настройка порта, в который воткнут USB шнурок от Arduin'ы. Подглядеть можно из IDE.

Дальше - скачаем '.hex' файл с прошивкой из контроллера. Для этого воспользуемся командой:
avrdude.exe -p atmega2560 -c wiring -PCOM5 -b115200 -Uflash:r:'printer_firmware'.hex:i
Если всё хорошо, ориентируемся на скриншот, прошивка сохраниться в файле 'printer_firmware.hex' рядом с avrdude.exe.
Avrdude. Как скачать, забэкапить и залить заново прошивку
Новые атрибуты команды:

-b115200 - скорость порта для программатора.

Uflash:r:'printer_firmware'.hex:i - указание считать прошивку в файл 'printer_firmware.hex'.

Считать считали, теперь её можно бэкапить, но вот как её восстановить потом? Да тоже ничего сложного, команда не будет сильно отличаться от чтения.

avrdude.exe -p atmega2560 -c wiring -PCOM5 -b115200 -D -Uflash:w:'printer_firmware'.hex:i

Проверяем, что всё хорошо - смотрим на скриншот.

Avrdude. Как скачать, забэкапить и залить заново прошивку
Новые атрибуты команды:

-D - запрещает автоматическую очистку памяти микроконтроллера перед прошиванием.

-Uflash:w:'printer_firmware'.hex:i - указывает на то, что нужно записать в память данные из файла 'printer_firmware.hex'.

Дальше я подключил свою Arduino Mega 2560 назад к рампам и проверил, что прошивка работает корректно. Как видите эксперимент хоть и частично, но удался. Так что и я и вы теперь знаете, как можно забэкапить прошивку из ATmega2560, что установлена на Arduino Mega2560.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

82
Комментарии к статье