Этот ответ не дает прямого ответа на вопрос, но все равно приведет к тому же конечному результату.
В Arduino IDE используются временные каталоги для хранения файлов сборки, включая исходный эскиз, а также HEX и промежуточные файлы.
На Mac они по умолчанию находятся в папках / var /, а на компьютере с Windows они находятся в ... \ Local Settings \ Temp \ (что в зависимости от версии Windows может находиться в нескольких местах).
Я обнаружил, что особенно в Windows эти файлы сборки не удаляются при закрытии эскиза или IDE, поэтому они могут существовать на вашем компьютере гораздо дольше, чем вы думаете.
Кроме того, по умолчанию Crashplan, Backblaze и Time Machine выполняют резервное копирование этих расположений, поэтому даже если они были удалены, они все равно могут находиться в резервной копии.
Преимущество здесь в том, что вы будете восстанавливать код C, а не ASM.
Вы можете скачать шестнадцатеричный дамп файла, но нет простого способа получить весь код C ++ и комментарии. Если вы понимаете сборку, вы можете пересоздать программу, но это займет некоторое время. Для некоторых устройств доступны дизассемблеры, я не знаю насчет arduino.
Я думаю, что есть другой способ сделать это, не извлекая код из платы Arduino. Поменяйте дату создания эскиза и найдите его в C: \ Users \ User \ AppData \ Local \ Temp \ (например: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Вы можете найти свой несохраненный код, если он не был удален какой-либо «программой освобождения места». Удачи!
Как видите, не особенно полезно для воспроизведения того, что сделал ваш эскиз. Вероятно, будет один из двух сценариев:
Ваш эскиз был коротким, и в этом случае вы могли бы после нескольких недель работы превратить ассемблерный код обратно в C
Ваш эскиз был длинным, и в этом случае было бы практически невозможно превратить его в C
В случае с «коротким наброском» лучше переписать с нуля. Это было бы быстрее, почти наверняка. В случае "длинного наброска" - это просто не стоит. Ни одно из имен переменных не сохраняется, и то, как компилятор оптимизирует код, даже структуру кода будет трудно определить.
Ответы:
Это должно быть возможно, пока бит безопасности не установлен. Этот вопрос был задан на EE некоторое время назад.
Можно ли извлечь код с платы Arduino?
Но вы не получите код Arduino, который вы написали обратно. Код скомпилирован в сборку, и вам придется преобразовать его обратно в C самостоятельно.
источник
Этот ответ не дает прямого ответа на вопрос, но все равно приведет к тому же конечному результату.
В Arduino IDE используются временные каталоги для хранения файлов сборки, включая исходный эскиз, а также HEX и промежуточные файлы.
На Mac они по умолчанию находятся в папках / var /, а на компьютере с Windows они находятся в ... \ Local Settings \ Temp \ (что в зависимости от версии Windows может находиться в нескольких местах).
Я обнаружил, что особенно в Windows эти файлы сборки не удаляются при закрытии эскиза или IDE, поэтому они могут существовать на вашем компьютере гораздо дольше, чем вы думаете.
Кроме того, по умолчанию Crashplan, Backblaze и Time Machine выполняют резервное копирование этих расположений, поэтому даже если они были удалены, они все равно могут находиться в резервной копии.
Преимущество здесь в том, что вы будете восстанавливать код C, а не ASM.
источник
/tmp/
каталогах на Linux (и даже Mac). cf arduino.cc/en/Hacking/BuildProcessВы можете скачать шестнадцатеричный дамп файла, но нет простого способа получить весь код C ++ и комментарии. Если вы понимаете сборку, вы можете пересоздать программу, но это займет некоторое время. Для некоторых устройств доступны дизассемблеры, я не знаю насчет arduino.
источник
atmega disassembler
).Я думаю, что есть другой способ сделать это, не извлекая код из платы Arduino. Поменяйте дату создания эскиза и найдите его в C: \ Users \ User \ AppData \ Local \ Temp \ (например: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Вы можете найти свой несохраненный код, если он не был удален какой-либо «программой освобождения места». Удачи!
источник
Если ваша цель не состоит в том, чтобы просто скопировать идентичный код на другое устройство, простой ответ: нет
Как было указано в других ответах, вы можете превратить шестнадцатеричный код на устройстве обратно в код ассемблера.
Например (когда вы скопировали код с устройства обратно на диск):
Запустите на одном из файлов загрузчика я получаю эти результаты (частично):
Как видите, не особенно полезно для воспроизведения того, что сделал ваш эскиз. Вероятно, будет один из двух сценариев:
В случае с «коротким наброском» лучше переписать с нуля. Это было бы быстрее, почти наверняка. В случае "длинного наброска" - это просто не стоит. Ни одно из имен переменных не сохраняется, и то, как компилятор оптимизирует код, даже структуру кода будет трудно определить.
источник