Как считать скетч с платы и сравнить с исходником ?
- Войдите на сайт для отправки комментариев
Втр, 24/05/2016 - 21:27
Доброго времени! Есть работающий проект на ардуинке, есть несколько версий ПО. Как узнать какой именно скетч зашит в плате, чтобы его редактировать и не наломать дров. Есть ли в среде такая функция ?
Спасибо!
В ардуину прошивается не скетч, какой мы его видим в редакторе (исходный код), а hex в машинных кодах (после процесса компиляции). Считать этот hex можно, но исходный код Вы не получите.
сравнить машинные коды. если в руках есть исходник один в один такой же, что прошит в ардуину (и скомпилированный с теми же параметрами) то HEX должны совпасть до байта
Задачи поднять скетч из хекса нет. Как средствами ардуино выкачать хекс из платы и сравнить с хексом от имеющихся скетчей ?
Для этого нужен программатор. Например дешёвый китайский 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:
Вообще нормальные люди для этого придумали писать версию в коде, чтобы ее можно было увидеть при загрузке в последовательном порте например.
Вообще нормальные люди для этого придумали писать версию в коде, чтобы ее можно было увидеть при загрузке в последовательном порте например.
Да ты просто Человечище!!! Взял на заметку.