Как читать текущую программу из Arduino?

14

Я приобрел плату Arduino с ATmega2560 , уже запрограммированную с помощью загрузчика Arduino и некоторой программы. У меня есть эскиз , но прежде чем возиться с ним, я бы хотел сделать резервную копию текущего двоичного файла, который находится в контроллере. Как и большинство Arduinos, он подключен к ПК с помощью преобразователя USB-последовательный порт, подключенного к TX0 и RX0, и не имеет интерфейса ISP .

Очевидно, в загрузчике Arduino есть код для чтения , но я понятия не имею, какой инструмент использовать для доступа к нему, поскольку в IDE Arduino нет пункта меню.

Какое программное обеспечение мне нужно, чтобы прочитать программу от Arduino?

AndreKR
источник
Нашел код для чтения в загрузчике, отредактировал вопрос.
AndreKR
это не дает ответа на ваш вопрос, но вы можете экспортировать свои скины arduino в виде файла .HEX.
уран Лис

Ответы:

1

Загрузчик Arduino является вариантом оригинального протокола STK500 (1.x) . Символ 't' (ASCII 0x74) является командой «Чтение страницы». Так что, возможно, можно вытащить программу через последовательный порт через загрузчик, используя AVRDUDE ... Но, в лучшем случае, я думаю, что потребуется некоторое время для его запуска.

vicatcu
источник
11

Я сбросил память от Дуемилленова с помощью ATMega328P с помощью следующей команды:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600
user17555
источник
1
Обратите внимание, что программист применим, вероятно, Arduino, а не STK500.
Пауло Невес
Зачем нужны четыре -v?
Питер Мортенсен
Из документации AVRDUDE, «2.1 Описание опций» : «... -v Включить подробный вывод. Дополнительные опции -v повышают уровень многословия. »
Питер Мортенсен
Это должен быть принятый ответ.
Caterpillaraoz
ДА! Про микро-загрузчик не работал на моем про микро клоне. Я сбросил флешку с работающего профессионального микро клона и сохранил на тот, который нуждался в загрузчике. Использование Arduino как ISP (линукс) - отвал: ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0; написать ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0:; проверить:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
b_laoshi
7

ЕЕ резервное копирование AVR с AVRDUDE нити ответить на ваш вопрос? Как правило, вы можете читать всю память с AVR, пока не установлен предохранитель.

Это настройка, которую я использую для ATtiny и ATmega.

На доске показано:

  • 11 = MOSI
  • 12 = MISO
  • 13 = SCLK

Обратитесь к техническому описанию контроллера, какой точный штырь использовать. В Интернете довольно много сайтов, пишущих о программировании AVR с использованием Arduino, например: http://hlt.media.mit.edu/?p=1229.

jippie
источник
Мне нужно второе Arduino для этого, верно? У меня его нет
AndreKR
1
Это метод двух Arduino, да.
Джиппи
И, хотя это немного трудно увидеть на картинке, контакты, используемые на целевой Arduino, тоже не TX0 и RX0, не так ли?
AndreKR
Нет, TX и RX не используются для ICP. Обновил ответ немного.
Джиппи
Ну, я думаю, вы пропустили весь смысл моего вопроса, возможно, потому что я дал ему неправильное название. Я перефразировал весь вопрос.
AndreKR
3

Насколько я вижу из исходного кода загрузчика Arduino , нет способа «сбросить» из него всю память. Загрузчик поддерживает режим «монитор», который позволяет вам выгружать один байт памяти за раз. Однако, согласно комментариям исходного кода "/ * функции монитора будут компилироваться только при использовании ATmega128 из-за ограничений размера загрузочного блока * /"

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

RJR
источник
Я имел в виду раздел, который начинается в строке 701 с else if(ch=='t') {.
AndreKR
Хороший вопрос - не видел этого.
RJR
2

Я думал, что есть пункт меню для этого, но я не нахожу это прямо сейчас. Если у вас есть ISP-программист, вы можете использовать AVR Studio для считывания образа памяти с микросхемы и сохранения его в HEX-файле, что позволит вам восстановить его тем же способом.

редактировать

В ответ на ваш комментарий - это просто! Вам нужно усвоить информацию на двух диаграммах, чтобы осуществить ее. Во-первых, это карта контактов Arduino / ATMega2560.

введите описание изображения здесь

Второе - это отображение заголовка ISP / AVR:

введите описание изображения здесь

Вооружившись этими двумя картинками, вы сможете увидеть, как их подключить.

  • Проведите провод от DIG50 к контакту 1 заголовка провайдера Dragon.
  • Проведите провод от VCC к контакту 2 заголовка провайдера Dragon.
  • Проведите провод от DIG52 к контакту 3 заголовка провайдера Dragon.
  • Проведите провод от DIG51 к контакту 4 заголовка провайдера Dragon.
  • Протяните провод от RESET к контакту 5 заголовка провайдера Dragon.
  • Проведите провод от GND к выводу 6 заголовка провайдера Dragon.

Имея их, вы сможете использовать AVR Studio для считывания Hex-файла с чипа - дайте мне знать, если вам нужно больше рекомендаций.

vicatcu
источник
У меня есть Дракон, но я не знаю, какие контакты на Драконе подключаются к последовательному интерфейсу Arduino.
AndreKR
@AndreKR см. Мой отредактированный ответ для получения дополнительной информации
vicatcu
Как указано в моем вопросе, я, конечно, знаю, как читать программу с использованием ISP. Я хочу знать, как это сделать с помощью последовательного интерфейса (TX0 и RX0) - так же, как программы загружаются на контроллер в мире Arduino.
AndreKR
@AndreKR Я в замешательстве ... у вас есть дракон, почему вы не хотите читать программу обычным способом - я неправильно понял ваш комментарий о том, что вы не знаете, какие контакты подключать к «последовательному интерфейсу»
vicatcu
У меня на плате нет заголовка провайдера. Тем не менее, он имеет последовательный интерфейс и загрузчик Arduino. Таким образом, программы загружаются в мир Arduino, и, очевидно, они могут быть загружены таким же образом.
AndreKR