ARM-Code simulieren

8

Ich möchte ARM-Code simulieren. Zum Beispiel möchte ich Code wie folgt ausführen:

%Vor%

Und es würde 6 auf einer Software auf meinem Ubuntu ausgeben. Ist es möglich?

    
good_evening 26.01.2013, 17:54
quelle

10 Antworten

10

Keil MDK kann zur Simulation der ARM-Codes verwendet werden. Es bietet eine Simulation / Debug Perspektive, mit der der ARM-Registersatz untersucht werden kann. Speicherinhalt, etc ...

MDK-Lite-Evaluierungsversion ist kostenlos für eine maximale Code-Größe von 32 KB verfügbar.

Linux-Version von MDK ist nicht verfügbar. Aber Keil MDK funktioniert tadellos über WEIN in Ubuntu.

Keil uVision MDK Installation auf WINE:

Schritt 1: Installiere Wein auf Ubuntu

Öffnen Sie ein Terminal und geben Sie Folgendes ein:

%Vor%

Schritt 2: Herunterladen Keil MDK .

Schritt 3: Installieren Sie MDK

Klicken Sie mit der rechten Maustaste auf die ausführbare Datei MDK , und wählen Sie die Option Öffnen mit Wine Windows Program Loader .

Schritt 4: Rufen Sie Keil uVision MDK unter Ubuntu auf

Öffnen Sie ein Terminal und geben Sie Folgendes ein:

%Vor%

Schritt 5: Installieren Sie Flash Magic (optional)

Flash Magic ist ein Tool zum Herunterladen von Software für Keil Boards. Laden Sie Flash Magic Software herunter und installieren Sie es auf Wein (siehe vorherige Schritte).

Erstellen Sie eine COM1-Verbindung zum seriellen Port. Öffne ein Terminal und tippe:

%Vor%

Keil uVision MDK-Projekt erstellen und debuggen:

Schritt 1: Erstellen Sie ein Keil UVision-Projekt für das ARM7-Ziel.

Wählen Sie in der Keil UVision-Werkzeugleiste Projekt - & gt; Neues Projekt .

Navigieren Sie zu einem Speicherort, an dem Sie dieses Projekt erstellen möchten.

Geben Sie einen Projektnamen ein und klicken Sie auf Speichern .

Wählen Sie ARM - & gt; ARM7 (Little Endian) als Gerät für Target. Klicken Sie auf OK.

Schritt 2: Erstellen Sie eine Assembly-Quelldatei für das Ziel

Wählen Sie in der Keil UVision-Werkzeugleiste Datei - & gt; Neu Fügen Sie der neu erstellten Datei den folgenden Code hinzu:

%Vor%

Stellen Sie Tab-Space vor jeder Assembly-Anweisung wie oben beschrieben bereit. Speichern Sie die Datei mit der Erweiterung '. S' .

Schritt 3: Fügen Sie die Quelldatei zum Projekt hinzu

Klicken Sie im Projektfenster (auf der linken Seite von UVision) mit der rechten Maustaste auf Quellgruppe 1 und wählen Sie die Option < Hinzufügen von Dateien zur Gruppen-Quellgruppe 1 .

Wählen Sie test.s und klicken Sie auf 'Hinzufügen' . (Wählen Sie Dateityp als ASM-Quelldatei )

Schritt 4: Erstellen Sie die Quelldatei

Wählen Sie in der Keil UVision-Werkzeugleiste Projekt - & gt; Build target oder Drücken Sie F7 , um die Quelldatei zu kompilieren.

Schritt 5: Anwendung simulieren / debuggen

Wählen Sie in der Keil UVision-Werkzeugleiste Debug - & gt; Debug-Sitzung starten / beenden oder Drücken Sie Strg + F5 .

Die Debug-Perspektive wird mit einer Registeransicht auf der linken Seite, Codeansicht in der Mitte, Speicheransicht rechts unten usw. geöffnet.

Verwenden Sie die Debugging-Schlüssel, um den Code auszuführen:

Beobachten Sie die Registeransicht am Ende der Programmausführung:

Wählen Sie in der Keil UVision-Werkzeugleiste Debug - & gt; Debug-Sitzung starten / beenden oder Strg + F5 drücken, um die Debugging-Perspektive zu verlassen.

    
Praveen Felix 27.01.2013, 17:28
quelle
10

Wenn Sie es in eine tatsächliche ausführbare Datei einbauen, können Sie es mit dem QEMU ARM-Emulator ausführen.

    
Ignacio Vazquez-Abrams 26.01.2013 17:58
quelle
3

Sie könnten Arm Code über QEMU laufen lassen, das ein Emulator ist, aber ich denke nicht, dass Sie direkt auf ein anderes Stück Software ausgeben können, weil QEMU auch eine Software ist, aber Sie könnten etwas wie Shared Memory oder sogar eine Datei verwenden Zugriff auf eine Datei erfordert möglicherweise einen Mutex), um Ergebnisse vom Emulator an die Host-Software und zurück zu übergeben, auch wenn es ein wenig langsam sein könnte

    
Filippo Savi 26.01.2013 18:06
quelle
3

Dieser Artikel gibt eine schrittweise Einführung in die Verwendung von QEMU zur Simulation von Baremetal ARM-Code: Ссылка

Natürlich müssen Sie sich nicht um das C-Zeug kümmern und können Ihre Assembly direkt in das Startup platzieren.

    
junix 29.01.2013 06:38
quelle
2

Ich denke, was Sie suchen, ist ein Weg zu printf der Wert, der von einer ARM Assembly-Funktion aus einem C-Programm zurückgegeben wird. Dazu können Sie den Befehlszeilensimulator arm-elf-run verwenden, der mit der Toolchain arm-elf-gcc verfügbar ist. Sie können die Toolchain von Ссылка . (Entpacke das Archiv einfach in einen Ordner und füge optional <path>/gunarm-4.0.2/bin/ an die PATH Variable deines Systems an)

Zunächst müssen Sie Ihren ARM-Code in einer Assembly-Funktion in einer Assembly-Datei (.s) anordnen, sagen wir myasm.s . Jetzt müssen Sie einen Testcode in C ( test.c , zum Beispiel) schreiben, um die Assembly-Funktion aufzurufen und den zurückgegebenen Wert mit unserem bekannten printf() zu drucken. Sie können den Quellcode unten finden:

myasm.s:

%Vor%

test.c:

%Vor%

Sobald die beiden Dateien fertig sind, können Sie sie mit arm-elf-gcc

in eine ARM-Binärdatei einbauen %Vor%

Und dann führe die Binärdatei mit arm-elf-run

aus %Vor%

Dies wird ein retval = 6 auf Ihrem Ubuntu-Terminal ausgeben:)

    
nav 04.02.2013 11:57
quelle
1

Sie können den Code in diesem Git-Repository als Ausgangspunkt verwenden:

Ссылка

Wie andere bereits erwähnt haben, müssen Sie zuerst QEMU installieren, um die ARM-Hardware zu emulieren, und Sie müssen eine Möglichkeit haben, Ihren Code zu kompilieren (ich empfehle die CodeSourcery Lite Edition Toolchain ). Bearbeiten Sie dann den Eintrag TOOLROOT in der Datei Makefile.common , um auf den Installationsort Ihrer Toolchain zu zeigen, und führen Sie einfach den Befehl make test aus, nachdem Sie Ihren Assemblercode geschrieben und in Ihre C-Testdatei exportiert haben.

Der Code in diesem Repository enthält eine Reihe von Beispielen, die Sie an Ihre eigenen Zwecke anpassen können. Mit den C-Testdateien können Sie Ihren Assemblercode aufrufen und die Ergebnisse in Ubuntu an Ihr Terminal ausgeben. :)

    
tcdowney 26.01.2013 20:54
quelle
1

Ich benutze immer eine kleine qemu ARM VM, um ARM-Programme zu testen.

Sie können es von debian herunterladen und dann mit: ( mehr infos )

%Vor%

Da es ein Vollarmsystem simuliert, können Sie die Programme darauf schreiben (z. B. mit vim + gcc) und sie dann dort testen.

    
BeniBela 04.02.2013 16:03
quelle
0

Installieren Sie qemu, kompilieren Sie es für den Arm und verwenden Sie dann

%Vor%

auf Ihrem Terminal

    
Santosh 29.01.2013 06:55
quelle
0

Ich bin mir nicht sicher, warum noch niemand es erwähnt hat, aber Sie können eine "echte" und erschwingliche Armplattform zum Experimentieren mit Himbeere pi .

Es kommt standardmäßig nicht mit Ubuntu, nach meinem Wissen kommt es mit einem Debian-Remix namens Raspbian (kann aber auch laufen) Fedora, Arch oder Debian) .

Wenn es um die Unterstützung dieser Plattform geht, gibt es Bücher dafür und es hat sogar eine eigene Stack Exchange Subcommunity .

    
NlightNFotis 04.02.2013 13:39
quelle
0

Wenn Sie vorhaben, einen ARM-Emulator in C zu schreiben, können Sie den Code in diesem Repository als Ausgangspunkt verwenden. Ссылка Es hat eine Pipeline der Größe 4. Datenverarbeitungsbefehle sind implementiert und es behandelt die Überlauf- und Übertragsflags. Branch und Interrupts sind ebenfalls implementiert. Er akzeptiert eine Assembleranweisung als Eingabe und simuliert den endgültigen Speicherzustand nach Beendigung der Anweisung. Es gibt einige Beispieleingaben, die als Code-Kommentare hinzugefügt wurden. Lesen Sie mehr unter Ссылка

    
omufeed 22.09.2014 23:09
quelle

Tags und Links