Можно ли извлечь шестнадцатеричный файл через UART из Arduino?

Сейчас я занимаюсь своим 3D-принтером, у которого есть мега Arduino в качестве мозга. Мне нужно обновить прошивку Marlin, но в случае ошибки я хочу создать резервную копию прошивки. И поскольку он собран с использованием экрана сверху, не имеет доступа к интерфейсу ICSP. И мне было любопытно, можете ли вы извлечь всю вспышку и EEPROM через USB (UART). Если да, то какое программное обеспечение следует использовать для этого.

2 голоса | спросил Coder_fox 4 FebruaryEurope/MoscowbSun, 04 Feb 2018 12:52:51 +0300000000pmSun, 04 Feb 2018 12:52:51 +030018 2018, 12:52:51

2 ответа


3

AVRDUDE, который используется IDE для отправки содержимого файла HEX с вашего компьютера, в качестве функции, позволяющей ему вернуть данные вспышки, чтобы сравнить и увидеть, верны ли данные.

Для UNO try:

avrdude -patmega328p -carduino -P/dev/cu.usbmodemFD121 -b115200 -U flash:r:"flash.bin":r 

Я думаю, что было бы не очень сложно изменить это для Mega.

Он отлично работает. Я много использую для дебюта моего «Android Updater», который позволяет пользователю моей доски обновлять сам код.

PS: Просто для информации вы не вернете HEX-файл, как во вспышке, у вас есть только несколько «штук» файла HEX.

ответил Peter 4 FebruaryEurope/MoscowbSun, 04 Feb 2018 23:48:06 +0300000000pmSun, 04 Feb 2018 23:48:06 +030018 2018, 23:48:06
0

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


Да , вы можете прочитать флэш-память с помощью интерфейса USB, как отметил Крис Стреттон, и Питер упомянул в своем ответе.

Загрузочный загрузчик включает «проверку», что означает, что он может использоваться для чтения флэш-памяти. Если вы подключите USB-кабель к вашему Atmega2560, вы можете прочитать флэш-память с помощью команды, подобной этой:

 /usr/local/bin/arduino-1.6.9/hardware/tools/avr/bin/avrdude  `# where avrdude is`  \
-patmega2560     `# chip type: atmega2560` \
-cstk500v2       `# protocol: stk500 v2` \
-P/dev/ttyACM2   `# what serial (hardware) port the board appears on` \
-b115200         `# baud rate` \
-U flash:r:"flash.hex":i   `# save flash as "flash.hex", in Intel format` \
-C /usr/local/bin/arduino-1.6.9/hardware/tools/avr/etc/avrdude.conf  # config file for avrdude

Это было сделано в Linux, с командой в формате «bash», что означает, что комментарии выглядят немного странно, так как я должен был сделать это, чтобы комментировать каждую строку.

Я добавил комментарии к каждой строке, чтобы показать, что означает каждый параметр.

Если у вас есть avrdude в вашем пути или находятся в каталоге, где он установлен, краткой формой команды будет:

avrdude -patmega2560 -cstk500v2 -P/dev/ttyACM2 -b115200 -U flash:r:"flash.hex":i -C avrdude.conf

Вам, вероятно, придется (почти наверняка) изменить путь туда, где avrdude есть, и где находится файл конфигурации avrdude. Вам также нужно будет узнать последовательный порт, на котором находится плата, которую вы можете узнать из IDE Arduino (меню порта покажет вам возможности).


Как советует Крис Страттон, сделайте это несколько раз (измените имя файла, конечно) и сравните файлы (например, используя «diff»). Если они все одинаковые, вы можете быть достаточно уверенны в том, что у вас есть хорошие копии.

ответил Nick Gammon 5 FebruaryEurope/MoscowbMon, 05 Feb 2018 04:04:03 +0300000000amMon, 05 Feb 2018 04:04:03 +030018 2018, 04:04:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132