Question

J'ai un open-source émulateur Atari 2600 (Z26), et je voudrais ajouter le support pour les cartouches contenant un processeur ARM intégré (NXP 21xx famille). L'idée serait de simuler le 6507 jusqu'à ce qu'il essaie de lire ou d'écrire un octet de mémoire (ce qu'il fera tous les 841ns). Si les 6507 effectue une écriture, mettre l'adresse et des données sur certains des ports d'E / S du bras et laisser le code ARM course de 20 cycles, vérifiez que l'ARM flotte son bus de données, et laisser le ARM pendant 38 cycles. Si les 6507 effectue une lecture, mettez l'adresse sur les ports E / S ARM, laissez les cycles de course ARM 38, saisir les données provenant du port d'entrée / sortie de l'ARM (espérons-le logiciel ARM aura mis là), et que la ARM exécuter un autre 20 cycles.

Le ARM7 semble assez simple à mettre en œuvre; Je ne ai pas besoin de simuler beaucoup de fonctionnalités matérielles. Toute pensée?

Modifier Ce que je pense à serait une routine qui prendrait comme paramètre une structure tenant l'état de la machine et des pointeurs vers une routine d'accès mémoire. Lorsqu'elle est appelée, la routine imiterait le moteur d'instructions de l'ARM, la génération lit approprié, écrit et récupérations de code. Je pourrais alors écrire la routine d'accès mémoire à considérer les zones appropriées flash (avec des états d'attente grossièrement approchées), RAM, ports E / S, et les registres de la minuterie. D'autres domaines seront marqués comme ne pas les soins et les accès à d'autres zones signalerais une erreur et arrêter l'émulateur.

Peut-être QEMU utilise chose un interne. Depuis l'émulation ARM serait intégré dans un moteur d'émulation déjà existant (que je n'ai pas écrit et ne comprennent pas entièrement - les seules parties de Z26 j'ai patché ont été la mémoire de lecture / logique d'écriture) je aurais besoin quelque chose avec une assez faible encombrement.

Toute idée de comment fonctionne QEMU l'intérieur? Toute idée de ce que la licence GPL, il faudrait, si je viens d'utiliser 2% du code dans QEMU - si je dois regrouper le code pour le tout, ou tout simplement la partie que je l'utilise, ou ce que

Était-ce utile?

La solution

Avec un peu de travail, vous pouvez faire mon émulateur faire ce que vous voulez. Il a été écrit pour ARM920, et le jeu d'instructions du pouce ne se fait pas encore. Ni est l'interface MMU / cache. Aussi, il est lent, car il est un interprète. Sur le côté, il est tout écrit en C99.

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

Je n'ai pas travaillé pendant un certain temps (Le tronc svn est de 2 ans), mais si vous allez utiliser le code, Je serai heureux de vous aider avec les fonctionnalités manquantes . Il est distribué sous licence MIT, il est donc la même chose que la licence BSD large.

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top