Как вытащить программу из ардуино

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

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

Представьте такую ситуацию. ‘У вас есть плата от принтера (допустим китайского), которая содержит какую-то свою прошивку. И вот настал тот день и тот час, когда вы решили, что вам нужно эту прошивку поменять, по тем или иным причинам. Но вас всё ещё держит одно ‘но’. Вы боитесь всё испортить и хотите иметь возможность откатиться обратно.

Но как назло — нормальной информации в интернете по вопросу, как забэкапить прошивку особо не нагуглишь. Примерно с такой проблемой ко мне, намедни, обратился один из участников нашего сообщества. И я решил, что раз уж так, то почему бы не поведать всем о том, как же это можно сделать.

Но прежде чем писать умные мысли — всё надо проверять, чем я и занялся. Эксперименты я проводил с 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

Если всё в порядке, то вы должны увидеть примерно такой текст (см. скриншот).

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.

10 полезных фишек Arduino IDE

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.

Читайте также:
Как сделать загрузочный диск с программами и меню

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

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

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

Источник: 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru