Arduino.ru
Как считать скетч с платы и сравнить с исходником ?
- Войдите на сайт для отправки комментариев
Доброго времени! Есть работающий проект на ардуинке, есть несколько версий ПО. Как узнать какой именно скетч зашит в плате, чтобы его редактировать и не наломать дров. Есть ли в среде такая функция ?
- Войдите на сайт для отправки комментариев
В ардуину прошивается не скетч, какой мы его видим в редакторе (исходный код) , а 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:

- Войдите на сайт для отправки комментариев

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

Другое
Введение
Ардуино является одной из самых популярных платформ для разработки проектов электроники и микроконтроллеров. Одним из важных элементов разработки на Ардуино является скетч — программа, которая загружается на микроконтроллер и контролирует его работу. В этой статье мы рассмотрим как можно скачать скетч из Ардуино, как его считать с платы и как прочитать скетч из платы Ардуино.

Для того, чтобы скачать скетч из Ардуино, необходимо сначала подключить плату к компьютеру с помощью USB-кабеля. Затем, необходимо открыть среду разработки Ардуино (Arduino IDE) и выбрать из меню «Инструменты» пункт «Порт» и выбрать порт, к которому подключена плата. Затем нужно нажать кнопку «Загрузить» или «Upload» и ждать завершения процесса. После этого скетч будет загружен на микроконтроллер и готов к работе .
Если вам нужно считать скетч с платы Ардуино, можно использовать функцию «Экспорт кода» или «Export» в Arduino IDE. Эта функция позволяет сохранить текущий скетч на компьютер в виде текстового файла.
Чтобы прочитать скетч из платы Ардуино, нужно использовать программу-читалку скетчей. Есть множество бесплатных и коммерческих программ, которые могут прочитать скетч из платы Ардуино, но некоторые из них могут быть несовместимы с определенными моделями плат или версиями прошивки.
Загрузка, считывание и прочтение скетча из платы Ардуино может быть достаточно простой и несложной процедурой, но в зависимости от используемого оборудования и программного обеспечения, могут возникнуть определенные трудности. В таком случае, следует обратиться к документации или справочной информации по используемой модели платы или программному обеспечению, или получить помощь сообщества разработчиков Ардуино.
Выбор ПО
Выбор программного обеспечения (ПО) для разработки и загрузки скетчей на платы Ардуино является важным шагом в процессе разработки. В зависимости от индивидуальных потребностей и уровня навыков, различные программы могут быть более или менее подходящими для разработки на Ардуино.

Основное ПО для разработки на Ардуино является Arduino IDE (Integrated Development Environment). Эта бесплатная программа предоставляет все необходимое для разработки скетчей, включая редактор кода, отладку и загрузку скетчей на платы. Она также предоставляет большое количество библиотек и примеров, которые могут быть использованы для упрощения разработки.
Также существуют другие программы для разработки на Ардуино, такие как Atmel Studio, Visual Studio Code или Eclipse, которые можно использовать для разработки скетчей для плат Ардуино. Эти программы обычно имеют более мощные функции и инструменты для разработки, но могут быть сложнее в использовании для новичков.
Кроме того, есть множество других библиотек и фреймворков для разработки на Ардуино, такие как PlatformIO, ArduinoJson или Blynk, которые могут быть использованы для упрощения и улучшения разработки.
Выбор программного обеспечения для разработки на Ардуино зависит от индивидуальных потребностей и уровня навыков разработчика. Если вы новичок в разработке на Ардуино, то можете сначала начать с Arduino IDE, а затем перейти к более мощным инструментам по мере необходимости.
USB
USB порт является одним из наиболее важных компонентов процесса загрузки скетча из Ардуино. Этот порт позволяет подключать плату к компьютеру, чтобы загружать скетч и отлаживать программу с помощью Arduino IDE.

Для начала необходимо подключить плату к компьютеру с помощью USB кабеля. Затем необходимо открыть Arduino IDE и выбрать правильный последовательный порт, который используется для подключения платы. Это может быть найдено в меню «Серийный порт» в Arduino IDE.
После выбора правильного порта, необходимо убедиться, что правильная плата была выбрана в меню «Плата». Это может быть найдено в меню «Инструменты».

После этого, можно начинать загружать скетч, используя кнопку «Загрузить» в Arduino IDE. Это может занять некоторое время в зависимости от размера скетча. Важно следить за индикаторами процесса загрузки и проверять наличие ошибок после загрузки.
Важно отметить, что необходимо иметь последнюю версию Arduino IDE и драйвера USB установленными на компьютере, чтобы избежать проблем с подключением и загрузкой скетча.
Инструкция
Инструкция по загрузке скетча из Ардуино является важным шагом в процессе разработки. Это поможет вам правильно и безопасно загрузить скетч на плату Ардуино, а также поможет избежать ошибок и проблем в процессе разработки.
- Подключите плату Ардуино к компьютеру через USB кабель.
- Запустите Arduino IDE на компьютере.
- Выберите правильную модель платы и порт в меню «Настройки» в Arduino IDE.
- Откройте скетч, который вы хотите загрузить, в Arduino IDE.
- Нажмите кнопку «Загрузить», чтобы начать загрузку скетча на плату Ардуино.
- Дождитесь завершения загрузки и проверьте, что скетч был успешно загружен и работает на плате Ардуино.
Важно отметить, что перед загрузкой скетча необходимо проверить настройки и конфигурацию платы и компьютера, чтобы убедиться, что они соответствуют необходимым требованиям. Также необходимо иметь в виду, что некоторые скетчи могут иметь специфические требования или библиотеки, которые необходимо установить и подключить до загрузки скетча. Некоторые скетчи также могут требовать дополнительные компоненты или железо для работы.
Важно также следить за обновлениями программного обеспечения и библиотек, а также обращаться к сообществу пользователей и разработчиков Ардуино за помощью и советом, если возникают какие-то проблемы или трудности.
В целом, инструкция по загрузке скетча из Ардуино поможет гарантировать безопасность и эффективность в процессе разработки и использования скетчей на платах Ардуино.
Заключение
Загрузка скетчей из Ардуино является важным шагом в процессе разработки и использования плат Ардуино. Это позволяет загружать и обновлять программное обеспечение на плате, что в свою очередь позволяет реализовывать различные проекты и функции.
Для загрузки скетчей используется USB порт и Arduino IDE. При подключении платы к компьютеру по USB, компьютер распознает ее как виртуальный последовательный порт, позволяя загружать скетч и отлаживать программу с помощью Arduino IDE.
Важно следовать инструкции и проверять настройки перед загрузкой скетча, чтобы избежать ошибок и проблем. Также необходимо следить за обновлениями и обращаться за помощью к сообществу, если возникают трудности.
В заключение можно сказать, что загрузка скетчей из Ардуино процесс не сложный, но он требует некоторой подготовки и внимательности. Следуя инструкциям и обращаясь за помощью к сообществу пользователей и разработчиков Ардуино, вы сможете легко загружать скетчи и реализовывать свои идеи на платах Ардуино.
Is there any way to download a sketch from an Arduino?
I made a sketch, but then I lost it. However, I uploaded it to the Arduino before losing it. Is there any way I can get it back?
7 Answers 7
It should be possible as long as the security bit isn’t set. This question was asked on EE a while back.
But you won’t get the Arduino code you wrote back. The code is compiled into assembly and you’ll have to convert that back to C yourself.
This answer doesn’t directly answer the question, but still will result in the same end result.
The Arduino IDE uses temporary directories to store build files, including the original sketch as well as the HEX and intermediate files.
On a Mac, these are in /var/folders by default, and on a Windows machine they are in …\Local Settings\Temp\ (which depending on the version of Windows could be in several places).
I’ve found that especially in Windows, these build files don’t get deleted when you close the sketch or IDE, so they may exist on your machine for far longer than you would think.
Also, by default, Crashplan, Backblaze and Time Machine back-up these locations, so even if they have been deleted, they may still be in a backup.
The advantage here is that you will recover C code rather than ASM.
![]()
You can download the hex dump of the file, but there is no easy way to get all the C++ code and comments. If you can understand assembly, you could recreate the program, but that would take a while. There are dissasemblers available for some devices, i don’t know about arduino.
![]()
I think there is another way to do this, without extracting the code from the Arduino board. Remenber the date you create the sketch, and look for it in C:\Users\User\AppData\Local\Temp\ (For example : C:\Users\User\AppData\Local\Temp\untitled4390292704786567977.tmp\sketch_jan19a ). You could find your unsaved code unless it was deleted by some «freeing space program». Good luck!
Unless your objective is to simply copy the identical code to another device, the simple answer is: no
As has been pointed out in other answers, you can turn the hex code on the device back into assembler code.
For example (once you have copied the code from the device back onto your disk):
Run on one of the bootloader files I get these results (in part):
As you can see, not particularly helpful for reproducing what your sketch did. There are likely to be one of two scenarios:
- Your sketch was short, in which case you might, after weeks of work, turn the assembler code back into C
- Your sketch was long, in which case it would be virtually impossible to turn it back into C
In the «short sketch» case, you are better off just rewriting from scratch. That would be faster, almost certainly. In the «long sketch» case — it just isn’t worth it. None of the variable names are preserved, and the way the compiler optimizes code, even the structure of the code would be hard to determine.
Download:
Upload:
Use w (write) instead of r (read) for the -U option.
Example:
Download UNO v3 (ATmega328) flash ROM (bootloader) given port /dev/ttyACM0 as Intel HEX:
If used directly from from the arduino IDE archive also add:
Another approach might be to treat the program onboard the Arduino as a black-box exercise. That is, run the program and take careful notes of what happens (via Serial Monitor or whatever). If, in fact there is any output that you can observe, make it a task to create your own new code to emulate what the program DOES. This won’t be productive unless the original programmer liberally included Serial.print() statements throughout the code, something I STRONGLY RECOMMEND as a programming habit to develop. Doing so, facilitates just the exercise I am suggesting. (Ask me why I developed that habit for everything I have coded for the past 30 years.)
Unfortunately, most people sprinkle a few comments here and there, which is helpful 5 years later if you have the source code. Personally, I comment EVERY LINE of source code. But comments in the source don’t help later in this sort of situation, as the compiler doesn’t put them in the machine code it generates. (Perhaps that might be a valuable option for the compiler. Yes, it takes bytes, but how valuable might it be years later for an important project?)
My two cents worth, which probably is worth the price the reader of this post paid to see it!
Есть ли способ скачать скетч из Arduino?
Я сделал эскиз, но потом потерял его. Тем не менее, я загрузил его в Arduino, прежде чем потерять его. Можно ли как-нибудь вернуть его обратно?
Это должно быть возможно, пока бит безопасности не установлен. Этот вопрос был задан на EE некоторое время назад.
Но вы не получите код Arduino, который вы написали обратно. Код скомпилирован в сборку, и вам придется преобразовать его обратно в C самостоятельно.
Этот ответ не дает прямого ответа на вопрос, но все равно приведет к тому же конечному результату.
В Arduino IDE используются временные каталоги для хранения файлов сборки, включая исходный эскиз, а также HEX и промежуточные файлы.
На Mac они по умолчанию находятся в папках / var /, а на компьютере с Windows они находятся в . \ Local Settings \ Temp \ (что в зависимости от версии Windows может находиться в нескольких местах).
Я обнаружил, что особенно в Windows эти файлы сборки не удаляются при закрытии эскиза или IDE, поэтому они могут существовать на вашем компьютере гораздо дольше, чем вы думаете.
Кроме того, по умолчанию Crashplan, Backblaze и Time Machine выполняют резервное копирование этих расположений, поэтому даже если они были удалены, они все равно могут находиться в резервной копии.
