Frage

Ich habe ein Open-Source-Atari 2600 Emulator (Z26), und ich möchte Unterstützung für Patronen hinzufügen einen integrierten ARM-Prozessor (NXP 21xx-Familie) enthalten. Die Idee wäre, die 6507 zu simulieren, bis er versucht, ein Byte Speicher zu lesen oder schreiben (was es wird alle 841ns tun). Wenn die 6507 führt eine Schreib, legten Sie die Adresse und die Daten auf einige des I / O-Ports der ARM und die ARM-Code läuft 20 Zyklen lassen, bestätigen, dass die ARM seinen Datenbus schwimmt, und lassen Sie den ARM-Lauf für weitere 38 Zyklen. Wenn die 6507 führt eine Lese, legen Sie die Adresse auf der I ARM / O-Ports, lassen Sie die ARM-Lauf 38 Zyklen, die Daten aus dem I ARM greifen / O-Port (hoffentlich wird die ARM-Software haben sie setzen dort), und lassen Sie die ARM laufen weitere 20 Zyklen.

Die ARM7 scheint ziemlich einfach zu implementieren; Ich habe nicht eine ganze Reihe von Hardware-Funktionen simulieren müssen. Irgendwelche Gedanken?

Bearbeiten Was ich im Sinne habe, wäre eine Routine, die als Parameter eine Struktur hält den Maschinenzustand und Zeiger auf eine Speicherzugriffsroutine nehmen würde. Wenn sie aufgerufen wird, würde die Routine die Anweisung Motors ARM emulieren, entsprechende Erzeugung liest, schreibt und Code abruft. Ich konnte dann die Speicherzugriffsroutine schreibt geeignete Bereiche wie Flash zu betrachten (mit grob angenähert Wartezuständen), RAM, I / O-Ports und Timer-Register. Einige andere Bereiche als unbeacht markiert werden würde, und Zugriffe auf alle anderen Bereiche moniert einen Fehler und den Emulator zu stoppen.

Vielleicht nutzt QEMU so etwas intern. Da die ARM-Emulation in eine bereits vorhandene Emulation Engine integriert werden würde (was ich nicht schreiben und nicht vollständig verstehen - die einzigen Teile Z26 Ich habe die Erinnerung gewesen geflickt Lese- / Schreiblogik) Ich müsste etwas mit einem ziemlich geringen Platzbedarf.

Jede Idee, wie QEMU innen funktioniert? Jede Idee, was die GPL-Lizenz erfordern würde, wenn ich nur 2% des in QEMU-Code verwenden - ob ich würde den Code für die ganze Sache zu bündeln, oder einfach nur den Teil, dass ich benutze, oder was

War es hilfreich?

Lösung

Mit etwas Arbeit können Sie meinen Emulator tun, was Sie wollen. Es wurde für ARM920 geschrieben, und der Thumb-Befehlssatz ist noch nicht fertig. Weder ist die MMU / Cache-Schnittstelle. Außerdem ist es langsam, weil es ein Dolmetscher ist. Auf der positiven Seite, es ist alles in C99 geschrieben.

http://code.google.com/p/gp2xemu/

Ich habe auf sie eine Zeit lang nicht gearbeitet (SVN-Stamm ist 2 Jahre alt), aber wenn du gehst, um den Code zu verwenden, Ich bin froh, Ihnen zu helfen, mit den fehlenden Features . Es ist unter MIT lizenziert, so dass es genau das gleiche wie die breiten BSD-Lizenz ist.

Andere Tipps

Versuchen Sie QEMU .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top