Linux fonctionne sur la console de jeux Atari Jaguar

Après le portage de Linux sur Sega MegaDrive, la possibilité de lancer le noyau Linux avec un ensemble d'outils Busybox sur la console de jeu Atari Jaguar, sortie en 1993, a été réalisée. La console était équipée d'un CPU Motorola 68000, livrée avec 2 Mo de RAM et pouvait utiliser des cartouches comme support de stockage, avec une capacité allant jusqu'à 6 Mo. L'appareil était doté de deux coprocesseurs : Tom (GPU avec une architecture RISC 32 bits + processeur vidéo 64 bits + processeur 64 bits pour les opérations logiques) et Jerry (DSP avec une architecture RISC 32 bits pour le traitement du son).

De la même manière que le port pour Sega MegaDrive pour exécuter le noyau Linux sur le CPU Motorola 68000, qui ne dispose pas de module matériel de gestion de la mémoire (MMU), le noyau standard 7.2.0-rc1 a été compilé en mode « NOMMU » utilisé pour les microcontrôleurs, permettant d'utiliser un modèle de mémoire plat avec un espace d'adressage linéaire (auparavant, les travaux pour fonctionner sans MMU avaient été développés dans un fork du noyau uClinux, mais ont ensuite été intégrés dans le noyau principal sous la forme de l'option « NOMMU »). Le problème de la mémoire vive insuffisante a été résolu différemment, par l'utilisation du mécanisme execute-in-place (XIP), permettant d'exécuter directement le code du noyau à partir de la ROM sans le copier dans la mémoire vive.

La RAM de l'appareil est mappée à l'adresse 0x000000, et la ROM (cartouche) à l'adresse 0x80000, respectivement, les composants du noyau Linux ont été divisés en deux zones de mémoire distinctes : les sections .rodata et .text avec des constantes et du code ont été placées sur la cartouche, tandis que les sections .data et .bss avec des données modifiables se trouvent dans la mémoire vive. Étant donné que le CPU 68000 recherche la table des vecteurs d'interruption à l'adresse 0x0, et que le noyau est en fait placé sur la cartouche, dont le contenu est mappé à l'adresse 0x80000, un hack supplémentaire a été appliqué en copiant les vecteurs d'interruption dans la RAM.

Le problème de l'absence de minuterie dans le CPU Motorola 68000 a été résolu par l'utilisation des minuteries utilisées dans le DSP pour la synthèse sonore. Ces minuteries ont été utilisées pour générer des interruptions afin d'activer le planificateur de tâches. Pour afficher les messages du noyau pendant le chargement, un driver de console distinct a été écrit, simulant la sortie via un port parallèle à travers les broches TXD et RXD, contrôlées par le processeur DSP.

Pour assembler les composants de l'espace utilisateur, l'outil Buildroot a été utilisé avec des correctifs du projet LinuxMD. Pour économiser de la mémoire lors de l'initialisation, le shell « /bin/busybox sh » a été appelé directement, la fonction malloc dans la bibliothèque uClibc a été remplacée par une version simplifiée, malloc-simple, qui ne conserve pas de métadonnées supplémentaires, et au lieu d'un chargeur complet comme U-Boot, un transfert direct de contrôle au noyau était effectué par la commande « jmp $80000 ».



Source : opennet.ru
Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster