Gibt es eine Möglichkeit, eine Skizze von einem Arduino herunterzuladen?
44
Ich habe eine Skizze gemacht, aber dann habe ich sie verloren. Ich habe es jedoch auf das Arduino hochgeladen, bevor ich es verloren habe. Kann ich es auf irgendeine Weise zurückbekommen?
Sie erhalten jedoch nicht den Arduino-Code, den Sie zurückgeschrieben haben. Der Code wird in Assembler kompiliert, und Sie müssen ihn selbst zurück in C konvertieren.
Diese Antwort beantwortet die Frage nicht direkt, führt jedoch zu demselben Endergebnis.
Die Arduino IDE verwendet temporäre Verzeichnisse zum Speichern von Build-Dateien, einschließlich der ursprünglichen Skizze sowie der HEX- und Zwischendateien.
Auf einem Mac befinden sich diese standardmäßig in / var / und auf einem Windows-Computer in… \ Local Settings \ Temp \ (je nach Windows-Version an mehreren Stellen).
Ich habe festgestellt, dass diese Build-Dateien vor allem in Windows nicht gelöscht werden, wenn Sie die Skizze oder die IDE schließen, sodass sie möglicherweise viel länger auf Ihrem Computer vorhanden sind, als Sie denken.
Standardmäßig sichern Crashplan, Backblaze und Time Machine diese Speicherorte. Selbst wenn sie gelöscht wurden, befinden sie sich möglicherweise noch in einer Sicherung.
Der Vorteil hierbei ist, dass Sie C-Code und nicht ASM wiederherstellen.
Kommentarecho von der akzeptierten Antwort : Rücklesen des
unformatierten
5
Sie können den Hex-Dump der Datei herunterladen, aber es gibt keine einfache Möglichkeit, den gesamten C ++ - Code und die Kommentare abzurufen. Wenn Sie Assembler verstehen, können Sie das Programm neu erstellen, aber das würde eine Weile dauern. Es gibt Dissembler für einige Geräte, ich weiß nicht über Arduino.
Ich denke, es gibt einen anderen Weg, dies zu tun, ohne den Code aus dem Arduino-Board zu extrahieren. Merken Sie sich das Datum, an dem Sie die Skizze erstellt haben, und suchen Sie danach in C: \ Users \ User \ AppData \ Local \ Temp \ (Beispiel: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Sie könnten Ihren ungespeicherten Code finden, es sei denn, er wurde von einem "Freispeicherprogramm" gelöscht. Viel Glück!
Wie Sie sehen, nicht besonders hilfreich für die Reproduktion Ihrer Skizze. Es gibt wahrscheinlich eines von zwei Szenarien:
Ihre Skizze war kurz. In diesem Fall könnten Sie nach wochenlanger Arbeit den Assembler-Code wieder in C umwandeln
Ihre Skizze war lang. In diesem Fall wäre es praktisch unmöglich, sie wieder in C umzuwandeln
Im Fall einer "kurzen Skizze" ist es besser, wenn Sie nur von Grund auf neu schreiben. Das wäre mit ziemlicher Sicherheit schneller. Im Fall der "langen Skizze" ist es das einfach nicht wert. Keiner der Variablennamen bleibt erhalten, und die Art und Weise, wie der Compiler den Code optimiert, ist schwer zu bestimmen, auch die Struktur des Codes.
Antworten:
Dies sollte möglich sein, solange das Sicherheitsbit nicht gesetzt ist. Diese Frage wurde EE vor einiger Zeit gestellt.
Ist es möglich, Code von einem Arduino-Board zu extrahieren?
Sie erhalten jedoch nicht den Arduino-Code, den Sie zurückgeschrieben haben. Der Code wird in Assembler kompiliert, und Sie müssen ihn selbst zurück in C konvertieren.
quelle
Diese Antwort beantwortet die Frage nicht direkt, führt jedoch zu demselben Endergebnis.
Die Arduino IDE verwendet temporäre Verzeichnisse zum Speichern von Build-Dateien, einschließlich der ursprünglichen Skizze sowie der HEX- und Zwischendateien.
Auf einem Mac befinden sich diese standardmäßig in / var / und auf einem Windows-Computer in… \ Local Settings \ Temp \ (je nach Windows-Version an mehreren Stellen).
Ich habe festgestellt, dass diese Build-Dateien vor allem in Windows nicht gelöscht werden, wenn Sie die Skizze oder die IDE schließen, sodass sie möglicherweise viel länger auf Ihrem Computer vorhanden sind, als Sie denken.
Standardmäßig sichern Crashplan, Backblaze und Time Machine diese Speicherorte. Selbst wenn sie gelöscht wurden, befinden sie sich möglicherweise noch in einer Sicherung.
Der Vorteil hierbei ist, dass Sie C-Code und nicht ASM wiederherstellen.
quelle
/tmp/
Verzeichnissen unter Linux (und sogar unter Mac). cf arduino.cc/en/Hacking/BuildProcessSie können den Hex-Dump der Datei herunterladen, aber es gibt keine einfache Möglichkeit, den gesamten C ++ - Code und die Kommentare abzurufen. Wenn Sie Assembler verstehen, können Sie das Programm neu erstellen, aber das würde eine Weile dauern. Es gibt Dissembler für einige Geräte, ich weiß nicht über Arduino.
quelle
atmega disassembler
).Ich denke, es gibt einen anderen Weg, dies zu tun, ohne den Code aus dem Arduino-Board zu extrahieren. Merken Sie sich das Datum, an dem Sie die Skizze erstellt haben, und suchen Sie danach in C: \ Users \ User \ AppData \ Local \ Temp \ (Beispiel: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Sie könnten Ihren ungespeicherten Code finden, es sei denn, er wurde von einem "Freispeicherprogramm" gelöscht. Viel Glück!
quelle
Wenn Sie nicht einfach den identischen Code auf ein anderes Gerät kopieren möchten, lautet die einfache Antwort: Nein
Wie bereits in anderen Antworten erwähnt, können Sie den Hex-Code auf dem Gerät wieder in Assembler-Code umwandeln.
Zum Beispiel (nachdem Sie den Code vom Gerät zurück auf Ihre Festplatte kopiert haben):
Führen Sie eine der Bootloader-Dateien aus. Ich erhalte die folgenden Ergebnisse (teilweise):
Wie Sie sehen, nicht besonders hilfreich für die Reproduktion Ihrer Skizze. Es gibt wahrscheinlich eines von zwei Szenarien:
Im Fall einer "kurzen Skizze" ist es besser, wenn Sie nur von Grund auf neu schreiben. Das wäre mit ziemlicher Sicherheit schneller. Im Fall der "langen Skizze" ist es das einfach nicht wert. Keiner der Variablennamen bleibt erhalten, und die Art und Weise, wie der Compiler den Code optimiert, ist schwer zu bestimmen, auch die Struktur des Codes.
quelle