Wie kann ich eine Assemblersprache Auflistung meiner Arduino Skizzen auf Windows bekommen?

StackOverflow https://stackoverflow.com/questions/919781

  •  06-09-2019
  •  | 
  •  

Frage

Ich möchte in der Lage sein, eine Assemblersprache Auflistung meiner Arduino Skizzen zu sehen. Wie kann ich erreichen das?

Update:. Ich bin der Arduino Software auf einem Windows-Rechner läuft

War es hilfreich?

Lösung

Eine Möglichkeit, dies zu tun, ist avr-objdump auf der .elf Datei vom Build erstellt wird. Zum Beispiel auf OS X kann ich dies tun:

$ cd ~/arduino-0015/examples/Digital/Blink/applet
$ avr-objdump -d Blink.elf

(Ihr Weg auf Windows verschieden sein können, offensichtlich.) Dies erzeugt eine Zerlegung des Codes, von denen ein Teil in etwa so aussehen:

0000013a <main>:
 13a:   0e 94 3e 01     call    0x27c <init>
 13e:   0e 94 97 00     call    0x12e <setup>
 142:   0e 94 80 00     call    0x100 <loop>
 146:   fd cf           rjmp    .-6             ; 0x142 <main+0x8>

Andere Tipps

Wenn Sie Linux verwenden, können Sie dieses Tutorial folgen, wie für die Arduino kompilieren ohne die IDE .

Wenn Sie das tun, können Sie eine Assembly Auflistung erhalten von gcc mit der Option es ausgeführt wird.

Die folgenden (Hacky) Schritte Assemblersprache Inserate von Arduino Skizzen und zugehörige Bibliotheken unter Windows bieten:

  1. Download (und benennen) die Arduino Windows-Kommandozeile Batch-Dateien in das Verzeichnis enthält die Skizze (die .pde Datei)
  2. Stellen Sie die erforderlichen Umgebungsvariablen wie in der oben verlinkten Seite angegeben
  3. Fügen Sie -S zum abuild_gcc_opts Variable in abuild.bat (Linie 158)
  4. Ausführen abuild -r -c <pde_filename>
  5. Erwarten Sie die folgenden Warnungen und Fehler zu erhalten, die Sie ignorieren können:

    ... warning: #warning "This file has been moved to <util/delay.h>."

    .\obj\<pde_filename>.cpp.o: file format not recognized: treating as linker script

    .\obj\<pde_filename>.cpp.o:1: syntax error

Die Assemblersprache Listings in den .o Dateien im erstellten obj Verzeichnis. Zum Beispiel der Auflistung für die Skizze selbst in obj\<pde_filename>.cpp.o ist

Die SIE (nicht n) Flagge des C-Code zeigen, wie well.Also als Misch Angebot wissen:

Linux: (.arduino / Preferences.txt: delete_target_folder = false)

$ cd /tmp/buildxxxx.tmp
$ avr-objdump -dS Blink.cpp.elf

int main(void)
{
    init();
 2f4:   8a df           rcall   .-236       ; 0x20a <init>
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top