Как считать программу с ардуино

Содержание
Читайте также:
Как сканировать в один файл несколько страниц программа

Ситуация такова: закоммитил скетч в ардуино и радовался жизни, но пришла беда в виде сломанного жестака. Сейчас потребовалось добавить пару датчиков, а скетч не восстановил. Можно ли как нибудь скачать с ардуино его обратно в виде кода?

28 мая, 2011

0 комментариев на «“Как считать скетч с ардуино?”»

разве что в виде ассемблерного

В принципе, в виде машинного кода слить прошивку МК можно — с помощью ISP-программатора. Дальше нужен дизассемлер, который позволит посмотреть код прошивки.
Не уверен, что написать код заново будет намного сложнее

Да, похоже придется писать заново. На ассемблер уйдет больше времени.
Serega0209 :

когда купил ардуину, написал первый скетч и залил его в дуину, тут же возник первый вопрос — «а кде кнопка скачать с ардуины?». почему разработчики до этого не додумались?

Romiks :
скачать то можно, только это будет уже не C/C++ а машинный код
universeroot :

Было бы неплохо сделать дизассемблер для arduino с конвертацией в C.

ПРОСОФТ: Как посмотреть ассемблерный код Arduino скетча — objdump


Только не понятно как загрузить простым способом данные с arduino. Интересно, работал ли бы такой код в arduino: int size; void loop()
Main:
… code…
… code…
Here:
size = Here — Main; for(int i = 0; i < size; i++)
Serial.print(Main + i);
>
> Тут немного псевдокода, но суть том чтобы послать свои внутренности на serial port.

Чтение данных из последовательного порта. Урок 6. Ардуино

Чтение данных из последовательного порта

Привет! Сегодня еще один урок. Мы уже рассмотрели много разных ситуаций работы с ардуино. И в одном из предыдущих уроков научились записывать данные из программы в последовательный порт, чтобы следить за выполнением программы. Теперь рассмотрим чтение данных из последовательного порта, чтобы управлять программой и схемой с его помощью.

Отдельное питание сервопривода

Зачем это может понадобиться? Конечно, для управления вашим устройством через компьютер или любое другое подключенное устройство ввода, которое поддерживает передачу данных через COM порт.

Статью про запись данных в последовательный порт для отладки программы, вы можете найти по ссылке ниже. Пожалуйста, посмотрите ее, если пропустили или уже забыли о чем речь.

В этой статье рассмотрим методы объекта Serial, их использование и примеры кода для реализации программ. Также соберем простую схему с сервоприводом и будем управлять ей с помощью монитора последовательного порта в ардуино ide.

Как загрузить прошивку в Arduino nano подробная инструкция

Как считать прошивку Arduino через UART

Для того, чтобы считать прошивку, дамп из Arduino через UART TTL, собственно, для этого нужен преобразователь usb — uart ( CP2102 Orange Pi Zero ) .Как подключить и узнать порт написано здесь:

Далее скачиваем консольную программу avrdude:

Зачастую при попытке считать прошивку с Ардуино появляются ошибки:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x12

Это связано со скоростью передачи данных, скорость передачи данных необходимо снизить до 19200 бод.

Исправили скорость до 19200 бод, появляется ошибка, вроде:

avrdude: Device signature = 0x1e9406 (probably m168)
avrdude: Expected signature for ATmega168P is 1E 94 0B

Это связано с тем, что в выбранный микроконтроллер прошит загрузчик Arduino и сигнатура чипа не совпадает.Чтобы это обойти необходимо использовать флаг -F , который отменяет проверку сигнатуры чипа.

Итого, чтобы считать прошивку, необходимо выполнить:

1.Распаковать архив avrdude

avrdude -F -p m168p -c arduino -b 19200 -P COM7 -v -U flash:r:flash.hex:i

и переименовать его в read_firm.bat

-F — не проверять сигнатуруподпись чипа

-p m168p — конкретный микроконтроллер, в наше случает ATMEGA168

-c arduino — выбор программатора, программатор arduino, представляет из себя протокол STK500v1

-b 19200 — выбор скорости передачи данных, в бодах

-P COM7 — выбор порта на котором сидит UART, у вас будет свой порт

-v Вывести подробную информацию

-U flash:r:flash.hex:r — U — команда программирования, здесь flash — означает выбрать память из flash(еще может быть eeprom, фьюзы и т.д.).Буква r — означает прочитать флэш память(сокращение от read), «flash.hex» — имя файла, который создастся при чтении памяти flash.i — означает записать файл в формате Intel HEX, а r(не путать с командой чтения) записать файл в формате дампа, то есть так, как прочитано.

3.Запустить файл read_firm.bat, после чего пойдет процесс считывания содержимого flash-памяти.Файл сохранится рядом с программой avrdude с именем flash.hex.

ОЦЕНИТЕ ДАННУЮ ПУБЛИКАЦИЮ:

Средний рейтинг / 5. Количество оценок:

Мы сожалеем, что эта публикация Вас не устроила.

Напишите, пожалуйста, что Вам конкретно не понравилось, как можно улучшить статью?(оценка будет засчитана только при наличии отзыва)

Источник: lampcore.ru

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