-
-
-
-
-
-
-
HomeSite map
SoC/Offres d'emplois/Stages/2009-2010/ALSOC 10 Print page

 

Intégration dans MutekH d'un pilote de MMU pour le processeur ARM de la console de jeu GP32

 

CONTEXTE

L’exo-noyau Hexo et le système d'exploitation MutekH ont été développés au LIP6. Ce système d'exploitation est destiné à un large ensemble d'architectures, allant des micro-contrôleur aux systèmes multiprocesseurs. Il est utilisé dans le département SoC du Lip6 pour la conception de systèmes intégrés sur puce.

Un exo-noyau offre principalement un service d’abstraction du matériel (c’est à dire une API indépendante des spécificités du ou des processeurs). On peut développer sur cette API un ensemble de bibliothèques fournissant des services de plus haut niveau. La spécificité d'Hexo est qu'il peut supporter des architectures hétérogènes massivement parallèle. Hexo est portable sur des architectures de processeurs entre 8 et 64 bits.

MutekH est constitué d'Hexo et d'un ensemble de bibliothèques : une libc, plusieurs systèmes de fichiers, le support des threads POSIX, une couche réseau TCP/IP, le support des scripts Lua, différents pilotes de périphériques. 

 https://www.mutekh.org/

 OBJECTIF

https://www.mutekh.org/trac/mutekh/wiki/stageM2#Objectif5

L'objectif de ce stage est d'ajouter à l'exo-noyau Hexo le support de la mémoire virtuelle pour le processeur ARM employé dans la console de jeu Gp32.

Une MMU(Memory Management Unit) est un composant matériel qui traduit les adresses virtuelles (générées par la chaîne compilation) en adresses physiques (à destination des composants matériels). La MMU du processeur ARM de la console GP32 supporte une mémoire virtuelle paginée, où l'espace d'adressage virtuel et la mémoire physique  physique sont découpés en pages de taille fixe.

La mémoire virtuelle paginée est la base de tous les systèmes d'exploitations modernes multi-utilisateurs et sécurisés. Elle rend possible la protection de la mémoire, la séparation des processus en mémoire, la mémoire partagée, la création efficace de processus par copy-on-write, et bien d'autre mécanismes essentiels de l'OS... Depuis longtemps employé dans les stations de travails et dans les serveurs, elle l'est aujourd'hui de plus en plus également dans les applications embarquées.

Suivant les processeurs, les MMU diffèrent. Les caratéristiques, les fonctionnalités proposées et la manière d'y accéder ne sont pas les mêmes. Par exemple les tailles de pages peuvent être différentes d'une architecture à l'autre et les mécanisme d'accès à la table de page peuvent être logiciels ou matériels.

La gestion de la mémoire virtuelle est décomposable en deux parties dans Hexo et MutekH:

  • un pilote, spécifique à chaque type de MMU, effectue des opération bas niveau pour lire/modifier les tables de pages en mémoire. Tous les pilotes de MMU partagent une API générique.
  • des gestionnaires de pages physiques et virtuelles dans MutekH font directement appel au pilote via l'API générique.

Pour réaliser le travail l'étudiant devra étudier la documentation de l'architecture ARM et implémenter le driver pour la MMU. Ce driver devra respecter l'API citée précédemment. Hexo s'exécute déjà nativement sur des architectures employant une MMU. Le processeur ARM et la MMU générique du projet SoCLib étant supporté, il sera possible de s'inspirer de ce driver pour effectuer le travail demandé.

La validation se fera, soit sur une carte de développement  SAM9-L9260 d'Olimex, soit sur la console de jeux portable  GamePark32. Elles utilisent toutes les deux un processeur du type ARM9 avec MMU. La validation consistera à exécuter une application sur MutekH/Hexo utilisant la mémoire virtuelle.

ENCADREMENT

https://www.mutekh.org/trac/mutekh/wiki/stageM2#Encadrement4

Ce stage sera encadré par Dimitri Refauvelet (dimitri.refauvelet(at)lip6(.)fr), sous la responsabilité du professeur Alain Greiner (alain.greiner(at)lip6(.)fr)

REMUNERATION

Ce stage sera rémunéré pendant toute la durée du stage.

 

 

LIP6 LIP6-SoC LIP6 CNRS UPMC