Ситуация такова: закоммитил скетч в ардуино и радовался жизни, но пришла беда в виде сломанного жестака. Сейчас потребовалось добавить пару датчиков, а скетч не восстановил. Можно ли как нибудь скачать с ардуино его обратно в виде кода?
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.
Источник: robocraft.ru
Чтение данных из последовательного порта. Урок 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