Як прочитати поточну програму з Arduino?


14

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

Мабуть, у завантажувальному пристрої Arduino є код для читання , але я не маю уявлення, який інструмент використовувати для доступу до нього, оскільки в ID ID Arduino немає пункту меню.

Яке програмне забезпечення мені потрібно для читання програми від Arduino?


Знайдений код для читання у завантажувачі, відредаговане запитання.
AndreKR

цей дозвіл не задається вашим питанням, але ви можете експортувати свої ардуїнові скелети як файл .HEX.
урановий ліс

Відповіді:


1

Завантажувач Arduino - це варіант оригінального протоколу STK500 (1.x) . Символ 't' (ASCII 0x74) - це команда "Прочитати сторінку". Тому, можливо, можна витягнути програму через послідовний порт через завантажувач за допомогою AVRDUDE ... Але в кращому випадку я вважаю, що для її витягування знадобиться деякий фантазійний час.


11

Я скинув пам'ять від Duemillenova за допомогою ATMega328P із наступною командою:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600

1
Зверніть увагу, що застосований програміст, ймовірно, arduino, а не stk500.
Пауло Невес

Для чого потрібні чотири -vs?
Пітер Мортенсен

З документації 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


Мені потрібен другий ардуїно для цього, правда? У мене її немає.
AndreKR

1
Це два способи Ардуїно, так.
jippie

І хоча на малюнку це трохи важко помітити, штифти, які використовуються на цільовому Arduino, теж не TX0, а RX0, чи не так?
AndreKR

Ні, TX і RX не використовуються для ICP. Відповідь трохи оновив.
джиппі

Ну, я думаю, ви пропустили всю точку мого питання, напевно, тому, що я дав йому погану назву. Я перефразував ціле запитання.
AndreKR

3

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

Я вважаю, що вам не пощастило, якщо ви не хочете користуватися провайдером, змінити завантажувач або завантажити ескіз, щоб це зробити.


Я мав на увазі розділ, який починається у рядку 701 с else if(ch=='t') {.
AndreKR

Гарний момент - цього не бачив.
RJR

2

Я думав, що для цього є варіант меню, але зараз я його не знаходжу. Якщо у вас є програміст ISP, ви можете використовувати AVR Studio для зчитування зображення пам'яті з мікросхеми та збереження його у файлі HEX, що дозволить відновити його тими самими засобами.

Редагувати

У відповідь на ваш коментар - це просто! Потрібно засвоїти дві діаграми, варті інформації, щоб витягнути її. Перший - зіставлення штифтів Arduino / ATMega2560.

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

Друге - картографування заголовка провайдера / AVR Pin:

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

Озброївшись цими двома фотографіями, ви маєте змогу побачити, як це зробити.

  • Проведіть провід від DIG50 до штифта 1 заголовка провайдера ISP
  • Проведіть провід від VCC до штифта 2 заголовка провайдера ISP
  • Проведіть провід від DIG52 до штифта 3 заголовка провайдера ISP
  • Проведіть провід від DIG51 до штифта 4 заголовка провайдера ISP
  • Проведіть провід від RESET до заглушки 5 заголовка провайдера ISP 5
  • Проведіть провід від GND до штифта 6 заголовка провайдера ISP

Якщо вони є, ви можете мати можливість використовувати AVR Studio для читання шістнадцяткового файлу з чіпа - повідомте мене, якщо вам потрібні додаткові вказівки.


У мене є Дракон, але я не знаю, які шпильки на Дракона підключити до послідовного інтерфейсу Arduino.
AndreKR

@AndreKR дивіться мою відредаговану відповідь для отримання додаткової інформації
vicatcu

Як зазначено в моєму запитанні, я, звичайно, знаю, як читати програму за допомогою ISP. Я хочу знати, як це зробити за допомогою послідовного інтерфейсу (TX0 та RX0) - так само, як програми завантажуються в контролер у світі Arduino.
AndreKR

@AndreKR Я розгублений ... у вас є дракон, чому б ви не хотіли читати програму звичайним чином - я неправильно зрозумів ваш коментар про те, що не знаю, які штифти підключити до "послідовного інтерфейсу"
vicatcu

На друкованій платі у мене немає заголовка провайдера. Однак він має послідовний інтерфейс і завантажувач Arduino. Таким чином програми завантажуються у світ Arduino, і, мабуть, їх можна завантажити так само.
AndreKR
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.