Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Представьте такую ситуацию. ‘У вас есть плата от принтера (допустим китайского), которая содержит какую-то свою прошивку. И вот настал тот день и тот час, когда вы решили, что вам нужно эту прошивку поменять, по тем или иным причинам. Но вас всё ещё держит одно ‘но’. Вы боитесь всё испортить и хотите иметь возможность откатиться обратно.
Но как назло — нормальной информации в интернете по вопросу, как забэкапить прошивку особо не нагуглишь. Примерно с такой проблемой ко мне, намедни, обратился один из участников нашего сообщества. И я решил, что раз уж так, то почему бы не поведать всем о том, как же это можно сделать.
Но прежде чем писать умные мысли — всё надо проверять, чем я и занялся. Эксперименты я проводил с Arduino Mega 2560. О ней дальше я и буду писать.
Поначалу я попытался пойти привычным способом ‘влоб’, достал программатор китайский (на заглавной фотке), подключился по ISP, и скачал прошивку. Попытался её залить назад. Льётся, но верификацию не проходит. Битых несколько часов рыл интернет, чтобы понять, как же можно нормально скачать прошивку с Меги по ISP.
Как загрузить прошивку в Arduino nano подробная инструкция
Толком ничего вразумительного не нашёл, но зато понял, что прошивку можно скачать и залить обратно и без программатора. Об этом опыте я и напишу ниже. А вот о том, как скачивать прошивку не с Arduino платы, да так чтобы она потом назад заливалась я напишу как-нибудь в следующий раз, когда у меня появится плата, которую можно безбоязненно пускать и в огонь и в воду.
Ладно, к делу. Для начала нам нужна утилита Avrdude, она входит в поставку Arduino IDE и в моей версии лежала в папке ‘%appdata%Arduino15packagesarduino oolsavrdude6.0.1-arduino2in’. Открываем папку, жмём на пустом месте SHIFT + правая кнопка мыши, а в меню выбираем ‘Открыть окно команд’. Теперь приведу простую команду, которая проверяет, что контроллер читается.
avrdude.exe -p atmega2560 -c wiring -P COM5
Если всё в порядке, то вы должны увидеть примерно такой текст (см. скриншот).
-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.
10 полезных фишек Arduino IDE
Новые атрибуты команды:
-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
Проверяем, что всё хорошо — смотрим на скриншот.
Новые атрибуты команды:
-D — запрещает автоматическую очистку памяти микроконтроллера перед прошиванием.
-Uflash:w:’printer_firmware’.hex:i — указывает на то, что нужно записать в память данные из файла ‘printer_firmware.hex’.
Дальше я подключил свою Arduino Mega 2560 назад к рампам и проверил, что прошивка работает корректно. Как видите эксперимент хоть и частично, но удался. Так что и я и вы теперь знаете, как можно забэкапить прошивку из ATmega2560, что установлена на Arduino Mega2560.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Источник: 3dtoday.ru
Как вытащить программу из ардуино
Начиная с версии 0018, в Arduino IDE нет возможности сохранять .hex файл в папку с скетчем. Но не стоит отчаиваться — выход естественно есть)
Запускаем нашу Arduino IDE, и открываем наш «любимый» скетч, нажимаем Verify:
Дальше, открываем проводник и пишем там %temp% и нажимаем Enter:
Находим там папки с именами buildXXXXXXXXXXXXXXX.tmp:
В каждой из этих папок будет куча файлов, нас интересует файл Blink.cpp.hex — это и есть наш скомпилированный Blink, который можно заливать на микросхему (или, скормить Proteus-у ))))
Примечание
Когда вы производите изменения с исходным текстом скетча, то папка buildXXXXXXXXX.tmp очищается автоматически, и вам надо заного нажать Verify, чтобы в ней появились файлы. На самом деле, даже удобно, если сделали изменения, но не сохранили — протеус, к примеру, начинает сразу кричать вопить, мол, файла то нету, куда файл дели)
Комментарий от RA3TOX
Для записи я использую программатор USBASP и программу AVRDUDE_PROG v.3.3.
Для микропроцессора с кварцем на 16 МГц фьюзы выставляются следующим образом:
Можно скомпилировать скетч для работы микропроцессора с внутренней синхронизацией (без кварцевого резонатора). Данные для этого проекта можно взять здесь: ArduinoToBreadboard.
Для микропроцессора без кварцевого резонатора фьюзы выставляются так:
Источник: rfanat.ru
Выгрузка hex из Arduino IDE. Как?
Как можно «попросить» Arduino IDE при компиляции скетча делать копию файла hex в левую папку?
В папке hardwarearduinoavr нашел файлик platform.txt, где указываются опции компилятора и линковщика, но не нашел, куда бы пихнуть строчку типа ‘cp /.hex /куда_надо_мне/flash.hex’.
Может, подскажет кто?
- Вопрос задан более трёх лет назад
- 6712 просмотров
Комментировать
Решения вопроса 1
Ковыряю нековыряемое
Все, нашел решение:)
В том же файле, можно изменить строку подсчета размера файла. К этому моменту hex уже готов.
## Compute size recipe.size.pattern=»C:WindowsSystem32cmd» /c copy «.hex» «E:firmware.hex» «» -A «/.elf»
И теперь, при нажатии «Проверить» прошивка выгружается сама, куда надо:)
Источник: qna.habr.com