Wie kann ich eine Assemblersprache Auflistung meiner Arduino Skizzen auf Windows bekommen?
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
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:
- Download (und benennen) die Arduino Windows-Kommandozeile Batch-Dateien in das Verzeichnis enthält die Skizze (die
.pde
Datei) - Stellen Sie die erforderlichen Umgebungsvariablen wie in der oben verlinkten Seite angegeben
- Fügen Sie
-S
zumabuild_gcc_opts
Variable inabuild.bat
(Linie 158) - Ausführen
abuild -r -c <pde_filename>
-
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>
...