Pregunta

Tengo un código abierto emulador Atari 2600 (Z26), y me gustaría añadir soporte para cartuchos que contienen un procesador ARM incrustado (NXP 21xx familia). La idea sería la de simular el 6507 hasta que se intenta leer o escribir un byte de memoria (que lo hará cada 841ns). Si el 6507 realiza una escritura, poner la dirección y los datos sobre algunos de los puertos de E / S del brazo y dejar que el código ARM plazo de 20 ciclos, confirman que el brazo está flotando el bus de datos, y deje que el brazo durante otros 38 ciclos. Si el 6507 lleva a cabo una lectura, puso la dirección en la ARM puertos I / O, dejar que el brazo de ejecución 38 ciclos, toma los datos de la I del ARM puerto E / S (esperemos que el software ARM tendrá puso allí), y dejar que el ARM ejecutar otros 20 ciclos.

El ARM7 parece bastante sencillo de implementar; No necesito para simular una gran cantidad de características de hardware. ¿Alguna idea?

Editar Lo que tengo en mente sería una rutina que tomaría como un parámetro de una estructura que sostiene el estado de la máquina y punteros a una rutina de acceso a la memoria. Cuando se llama, la rutina sería emular motor de instrucciones del ARM, generando apropiada lee, escribe, y recuperaciones de código. entonces yo podría escribir la rutina de acceso a la memoria a considerar las áreas apropiadas como flash (con estados de espera aproximados tosca), registros de memoria RAM, I / O Puertos, y temporizador. Algunas otras áreas serían marcados como No te-cuidado, y accesos a otras áreas serían bandera de un error y detener el emulador.

Tal vez QEMU utiliza tal cosa internamente. Dado que la emulación de ARM se integraría en un motor de emulación ya existente (que no he escrito y no comprendo plenamente - las únicas partes del Z26 he parcheado han sido la memoria de lectura / escritura de la lógica) que necesitaría algo con un relativamente pequeño tamaño.

Cualquier idea de cómo funciona el interior QEMU? Cualquier idea de lo que requeriría la licencia GPL si sólo tiene que utilizar el 2% del código en QEMU - si tendría que empaquetar el código para toda la cosa, o sólo la parte que yo uso, o qué

¿Fue útil?

Solución

Con un poco de trabajo, puede hacer que mi emulador de hacer lo que quiera. Fue escrito para ARM920, y el conjunto de instrucciones del pulgar no se hace todavía. Ni es la interfaz MMU / cache. Además, es lento debido a que es un intérprete. En el lado positivo, todo está escrito en C99.

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

No he trabajado en ella durante un tiempo (SVN El tronco es de 2 años de edad), pero si usted va a utilizar el código, voy a estar encantados de ayudarle a cabo con las características que faltan . Que es bajo licencia MIT, por lo que es lo mismo que la licencia BSD amplia.

Otros consejos

Trate QEMU .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top