Domanda

Ho un open-source emulatore Atari 2600 (Z26), e vorrei aggiungere il supporto per le cartucce che contengono un processore ARM integrato (NXP 21xx famiglia). L'idea sarebbe quella di simulare il 6507 fino a quando non tenta di leggere o scrivere un byte di memoria (che farà ogni 841ns). Se i 6507 esegue una scrittura, inserire l'indirizzo e dati su alcune delle porte di I / O della ARM e far eseguire codice ARM 20 cicli, confermano che il braccio è mobile suo bus dati, e lasciar funzionare ARM per altri 38 cicli. Se i 6507 esegue una lettura, mettere l'indirizzo sulla ARM porte I / O, far funzionare l'ARM 38 cicli, afferrare i dati da I della ARM porta I / O (si spera il software ARM avrà messo lì), e lasciare che il ARM eseguire un altro 20 cicli.

L'ARM7 sembra abbastanza semplice da implementare; Non ho bisogno di simulare un sacco di caratteristiche hardware. Ogni pensiero?

Modifica Quello che ho in mente sarebbe una routine che avrebbe preso come parametro una struct tenendo lo stato della macchina e dei riferimenti a una routine di accesso alla memoria. Quando viene chiamato, la routine potrebbe emulare il motore di istruzioni della ARM, generando appropriata legge, scrive, e recupera codice. Potrei quindi scrivere la routine di accesso alla memoria di considerare aree appropriate come flash (con circa-approssimati stati di attesa), registri RAM, porte di I / O e timer. Alcuni altri settori sarebbero stati contrassegnati come non fare-cura, e accessi a tutte le altre zone sarebbe bandiera un errore e fermare l'emulatore.

Forse QEMU utilizza internamente cosa del genere a. Dal momento che l'emulazione ARM sarebbe essere integrato in un motore di emulazione già esistente (che non ho scritto e non comprendere appieno - le uniche parti del Z26 ho rattoppate essere stata la memoria di lettura / scrittura logica) avrei bisogno qualcosa con un abbastanza piccolo ingombro.

Qualsiasi idea di come QEMU funziona dentro? Qualche idea di cosa la licenza GPL richiederebbe se mi basta usare 2% del codice in QEMU -? Se avrei dovuto riunire il codice per il tutto, o solo la parte che uso, o quello che

È stato utile?

Soluzione

Con un po 'di lavoro, è possibile fare il mio emulatore fare quello che vuoi. È stato scritto per ARM920, e il set di istruzioni Thumb non è ancora finito. Né è l'interfaccia MMU / cache. Inoltre, è lento perché è un interprete. Sul lato positivo, è tutto scritto in C99.

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

Non ho lavorato su di esso per un po '(Il tronco svn è di 2 anni), ma se avete intenzione di utilizzare il codice, sarò felice di aiutarvi con le funzionalità mancanti . Si è sotto licenza MIT, quindi è solo la stessa della licenza BSD ampia.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top