Как считать скетч с платы и сравнить с исходником ?

Kazanova
Offline
Зарегистрирован: 29.01.2015

Доброго времени! Есть работающий проект на ардуинке, есть несколько версий ПО. Как узнать какой именно скетч зашит в плате, чтобы его редактировать и не наломать дров. Есть ли в среде такая функция ? 

Спасибо!

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В ардуину прошивается не скетч, какой мы его видим в редакторе (исходный код), а hex в машинных кодах (после процесса компиляции). Считать этот hex можно, но исходный код Вы не получите.

axill
Offline
Зарегистрирован: 05.09.2011

сравнить машинные коды. если в руках есть исходник один в один такой же, что прошит в ардуину (и скомпилированный с теми же параметрами) то HEX должны совпасть до байта

Kazanova
Offline
Зарегистрирован: 29.01.2015

Задачи поднять скетч из хекса нет. Как средствами ардуино выкачать хекс из платы и сравнить с хексом от имеющихся скетчей ?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Для этого нужен программатор. Например дешёвый китайский USBasp или другая ардуина со скетчем ArduinoISP (эмулятор программатора). Через графический интерфейс самой среды Arduino IDE нет такой возможности. Нужно либо вручную запускать консольную утилиту Avrdude с параметрами (которую автоматически запускает Arduino IDE после компиляции), что-то типа: avrdude -C avrdude.conf -c arduino -P com3 -b 57600 -p m328p -U flash:v:"C:\test.hex":a -q , где test.hex - хекс, с которым сравниваем то, что записано в памяти МК. Считать и сохранить прошивку можно примерно так: avrdude -C avrdude.conf -c arduino -P com3 -b 57600 -p m328p -U flash:r:"C:\save.hex":i -q (можете потом хоть вручную байты сверять).

Либо воспользоваться графической оболочкой для Avrdude, например SinaProg:

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

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

keefa
Offline
Зарегистрирован: 19.06.2015

NeiroN пишет:

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

Да ты просто Человечище!!! Взял на заметку.