Unix sur la GameBoy Advance
Gbaunix est un UNIX de 5ème génération qui tourne sur la GBA. En fait gbaunix utilise SIMH,
un émulateur PDP-11 écrit en C tout naturellement. Bien que la Gameboy Advance ait des outils disponibles gratuitement sur le net pour développer en C, le portage de SIMH a été
relativement compliqué.
En effet :
- La GBA n'ayant pas de clavier, il a fallu utiliser une image de ROM et un Flash Link
- L'affichage de la GBA n'est pas un écran 80 colonnes
Avant de parler plus précisément de l'émulateur, parlons un peu de la Gameboy Advance
Une GBA c'est deux processeurs :
un processeur RISC ARM 32-bit à 16.78 MHz
un processeur CISC Z80 8-bit à 4.2 MHz ou 8.4 MHz pour assurer la
compatibilité avec les anciennes Gameboy monochrome ou couleur.
Le processeur qui nous intéresse c'est le processeur ARM de la GBA. ARM c'est une marque
leader dans le milieu des processeurs RISC. 783 millions de systèmes basés sur des processeurs ARM ont été vendus en 2003, ce qui est peu connu et la part de marché
d'ARM est de 75% de ce gateau...
On parle souvent d'INTEL et du monde PC mais peu des processeurs ARM.
Un petit cours d'histoire,normal c'est la rentrée ;-)
Le premier processeur ARM a été développé dans les années 80 chez "Acorn Computers
Limited (Cambridge, U.K.). A cet époque, ARM voulait dire "Acorn RISC Machine". La première
version du processeur ARM (v1) a été utilisée dans un ordinateur familial BBC Acorn
sur laquelle je fantasmais lorsque j'étais plus jeune. Dans les années 90, Apple s'associe avec Acorn pour fonder une nouvelle entité appellée
Advanced
RISC
Machines Limited, c'est
maintenant la société "ARM".

Le premier processeur était l'ARM6. Un processseur ARM6 à 20 a été utilisé dans le Newton
d'Apple.
Le processeur 32bit de la Gameboy Advance est un ARM7TDMI avec certaines fonctions ARM
en moins, c'est le processeur RISC le plus répandu.Son architecture est ancienne, il n'a
aucun cache ni aucune gestion de la mémoire.
Unix sur une rom GBA
La rom gba unix que vous trouverez est une compilation d'un exécutable : l'émulateur PDP11
et d'une image d'un disque UNIX. On pourra l'utiliser telle quelle ou y ajouter des
programmes par la suite.
L'émulateur contient le noyau SIMH. Des modifications minimes ont été appportées à SIMH
pour que les spécificités de la GBA soitent prises en comptes sans trop de problèmes.
En fait on peut voir cela comme une couche logicielle séparée à la quelle SIMH s'addresse.
Cette couche a deux principales composantes.
Affichage : gbaunix donne l'illusion d'un terminal texte à SIMH. Toute la sortie
TTY est redirigée vers des routines propres à la GBA qui formattent l'affichage et l'envoie
au "framebuffer" de la GBA.
Saisie : Gbaunix n'a pas de solution de saisie, évidemment on n'a pas de clavier...
mais on peut simplement lancer les commandes UNIX shell et ensuite il faut compiler tout cela
et le mettre dans la ROM GBA.
File System : En raison de la taille de l'image du disque UNIX (2.5 MB), GBA UNIX se sert
d'un disque virtuel en RAM pour travailler.
Conclusion
Pour développer ils se sont servi d'un émulateur GBA tout naturellement et c'est la-dessus
que ça tourne. Mauvaise nouvelle! Aujourd'hui GBAUNIX n'est pas optimisé puisque la GBA émule un PDP-11.
Attention! la ROM GBA est très très lente sur une Gameboy Advance, elle mets 2 minutes
pour se lancer! Il s'agit d'un début et le projet va continuer en passant par la création d'un noyau avec un code non émulé.
Aujourdh'ui c'est vrai il s'agit plus d'une beta, et peut utilisable sans clavier...Les créateurs parlent même d'un mini émulateur MACINTOSH sur Gameboy Advance!
Néanmoins cela prouve que la petite Gameboy Advance en a dans le ventre et que les divers
FLASH LINKERS ne servent pas qu'à copier des ROMS GBA!