Laden...

Eine CPU emulieren - Wie aufwändig/Was müsste ich Wissen? (einen Lego NXT Emulator schreiben)

Erstellt von markus111 vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.076 Views
markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren
Eine CPU emulieren - Wie aufwändig/Was müsste ich Wissen? (einen Lego NXT Emulator schreiben)

Hallo Community,

aus purem Interesse frag ich mal: Wie aufwendig wäre es, einen Emulator für eine AT91SAM7S256-CPU bzw. einen ganzen Lego NXT zu machen? Und was müsste ich Wissen?

Ich bin erst fast 14, also kann ich mir Vorstellen das ich sowas nicht hinbekommen würde, die Frage ist aus purem Interesse...

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
309 Beiträge seit 2007
vor 14 Jahren

Das lässt sich sicher realisieren, wie die ganzen anderen Emulatoren, die es gibt.

  • Gameboy-Emulator
  • Atari-Emulator
  • C64-Emulator
  • ...

Das erste, was du brauchst sind die Unterlagen über den Aufbau und die Befehlsstruktur des Prozessors (Befehlssatz, Aufbau, Register, ...), sowie der Peripherie die vorhanden ist (Register und Bedeutungen der einzelnen Bits)

mfg Hajoseb

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France

1.346 Beiträge seit 2008
vor 14 Jahren

Außerdem solltest du zuerst Assembler lernen, um überhaupt zu verstehen, wie ein Prozessor funktioniert, sonst kannst du das imho vergessen. Du musst wissen was es für Register gibt, welche Befehler, welche Interupts, etc. Diese musst du alle nachbilden.

Gruß pdelvo

309 Beiträge seit 2007
vor 14 Jahren

Für den Anfang ...

AT91SAM7S256

mfg Hajoseb

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France

M
1.439 Beiträge seit 2005
vor 14 Jahren

Vergiss es wieder, selbst wenn du es schaffst die ARMv4T Architektur zu emulieren - was sicher nicht einfach wird, da mehrere Interrupts, zwei Befehlssätze, Coprozessor Interface, ... - so musst du, um mehr als nur simple Zähl-Schleifen zu emulieren, die Peripherals (Interrupt Controller, Power Controller, Timer, Serielle Interfaces, USB, ADC, ...) ebenfalls nachbilden.
Und selbst wenn du das alles schaffst, so musst du dir noch was einfallen lassen um die externe Hardware(Motoren, Sensoren, ...) mit deinem Emulator zu verbinden/steuern.

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren

Hallo,

mir war schon vorher aufgefallen, das der AT91SAM7S ein relativ komplexer Prozessor ist. 8o
Wenn ich mal versuchen sollte, eine zu emulieren, sollte ich mir mal eine ganz simple raussuchen. 😉

Außerdem solltest du zuerst Assembler lernen, um überhaupt zu verstehen, wie ein Prozessor funktioniert, sonst kannst du das imho vergessen. Du musst wissen was es für Register gibt, welche Befehler, welche Interupts, etc. Diese musst du alle nachbilden.

Hab ich mir auch gedacht... 😁

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
M
1.439 Beiträge seit 2005
vor 14 Jahren

Hallo,

Allein das User Manual vom AT91SAM7S und das ARM Architecture Reference Manual haben zusammen knapp 2000 Seiten, also nichts was man mal so nebenbei macht.
Du kannst ja mit dem Z80 (Sega, GameBoy) anfangen ist sicher einfacher.

309 Beiträge seit 2007
vor 14 Jahren

Hab da eine Idee ...

Wie funktioniert denn dein Lego NXT ???

Wie wäre es denn, die Befehle und Funktionen des Lego NXT zu emulieren, OHNE den Prozessor selber zu emulieren.

Ich kann mir nicht vorstellen, das Lego NXT in Assembler programmiert wird, sondern doch wohl eher mit diversen Befehlen, oder?

mfg Hajoseb

Siehe im unteren Bereich

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France

5.742 Beiträge seit 2007
vor 14 Jahren

Ich kann mir nicht vorstellen, das Lego NXT in Assembler programmiert wird, sondern doch wohl eher mit diversen Befehlen, oder?

Na ja - normalerweise wird der nicht in Assembler programmiert.
Sehr populär ist eine Drag&Drop-"Programmiersprache" (Mindstorms NXT - so heißt zumindest die "Entwicklungsumgebung").
Das Dateiformat, in dem die speichert ist aber vermutlich proprietär und nicht dokumentiert.

Daneben existieren noch ein paar weitere Compiler, u.A. auch für eine C Variante.

Letztendlich wird jedoch immer eine kompilierte Datei erzeugt.

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren

Ich verwende auf meinen NXTs das RTOS nxtOSEK.
Ich wüsste jetzt überhaupt nicht wie man es dann emulieren solle....

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
2.891 Beiträge seit 2004
vor 14 Jahren

Sehr populär ist eine Drag&Drop-"Programmiersprache" (Mindstorms NXT - so heißt zumindest die "Entwicklungsumgebung").

Das Ganze ist ein LabView-Derivat.