Catégorie:Projets de spécialité

Le projet en quelques mots

Notre équipe se comporte de Hugues Evrard et Gaëtan Harter, deux élèves (promo 2011) de la filière SLE (Systèmes et Logiciels Embarqués) à l'Ensimag. Dans le cadre du projet de spécialité en fin de deuxième année, nous avons réalisé un système d'exploitation sur une architecture FPGA (Field-Programmable Gate Array). Ce projet s'est tenu de mi-mai à mi-juin de l'année 2010, nous avons principalement travaillé dans les salles systèmes de l'école. Nous avons mis en applications les notions vue en cours et utilisé des outils de développement (debugger, gestionnaire de version, etc) pour mener ce projet.

La carte FPGA : spécificités de l'architecture

Nous avons travaillé sur une carte FPGA http://fr.wikipedia.org/wiki/Xilinx Xilinx Spartan 3. Cette architecture présente quelques spécificités :

La reprogrammation de la carte et le chargement du système d'exploitation sont des opérations relativement longues (plusieurs minutes...). Les machines des salles systèmes sont équipées des outils Xilinx qui permettent d'émuler la carte. Cette fonctionnalité est pratique, cependant le debugger reste très lent.

Ce qui a été fait au cours de ce projet

Le mini shell et la commande help
Le mini shell et la commande help

Le système d'exploitation

Le système d'exploitation créé offre les services minimums nécessaires à une exécution en temps partagé : plusieurs processus utilisent la machine en même temps, c'est le système qui se charge de leur donner la main à tour de rôle. La spécification complète du système d'exploitation est consultable à la page Projet système : spécification. Les services suivants ont ainsi été développés :

La batterie de tests fournie lancée depuis le shell
La batterie de tests fournie lancée depuis le shell

Le bootloader

Le bootloader est un petit programme qui va installer le code du système d'exploitation sur la carte. Il envoie un message sur le port série, puis attend les octets correspondant au code du kernel. A la réception, il les place en mémoire comme prévu. Enfin, il va brancher sur l'entrée du code kernel.

Une fois ce programme opérationnel, le chargement du noyau sur la carte devient beaucoup plus rapide. Cependant, le debugger n'avait plus le code source du noyau pour suivre l'exécution.

Le terminal utilisateur

Dans les binaires disponible en bas de page, le système lance par défaut un terminal utilisateur minimal. Ce shell vous propose quelques commandes (la liste des commandes est accessible par la commande "help"). On peut notamment lancer la batterie de test fournie par les encadrants.

Outils de développement

Au cours du projet, nous avons principalement utilisés les outils suivants :

Bilan

Certains détails spécifiques au projet FPGA nous ont ralenti dans le développement :

De plus nous étions obligés de travailler dans les salles systèmes de l'école pour avoir accès aux outils Xilinx et à la carte. Il serait intéressant d'étudier les possibilités d'émulation d'un processeur MicroBlaze sur une machine personnelle (via QEMU ?).

Ce projet nous a permis d'aborder concrètement la conception d'un système d'exploitation. L'architecture spécifique FPGA impose des outils de développement plus lent qu'une architecture PC classique, cependant elle pousse aussi à comprendre finement les liens entre le système d'exploitation et le matériel sur lequel il s'applique.

Références

Nous avons tout au long du projet collaboré avec l'autre équipe travaillant sur un projet système FPGA : Projet système FPGA : 2010 - Ugo Martin, Louis Rannou et Pierre Schamberger

L'ensemble des pages sur les projets systèmes est disponible sur la page des résultats : Projet système : résultats

Projet système, Sebastien Viardot : La documentation fournie sur l'Ensiwiki et la page de Sébastien Viardot.

The GNU Assembler : Pour les directives assembleur qui sont communes à celle de l'assembleur Microblaze.

Forum blackfin.uclinux.org : l'utilisation de ". = ALIGN(4);" pour aligner une sous-section dans un fichier .lds.

Code Generation for Switch Statement : utilisé comme inspiration pour réaliser les appels système.

Programme

Media:Bin_projet_systeme_fpga_evrardh_harterg.tar.gz‎ : binaires du bootloader et du système.

Media:Systeme_FPGA_evrardh_harterg.tar.gz‎ : architecture matérielle à envoyer sur la carte.

Pour executer le système il faut exécuter les commandes suivantes :

source /Xilinx/env-8.1i.sh

Pour envoyer l'architecture sur la carte, brancher la carte sur le port parallèle et le port série, et exécuter dans le dossier Systeme_FPGA :

make -f system.make download
xmd -opt etc/xmd_microblaze_0.opt

Dans un nouveau terminal et dans le dossier avec les binaires lancer :

mb-gdb bootloader.elf --directory=. &
cu --line=/dev/ttyS0 --nostop --speed=115200 --parity=none

Lancer le bootloader avec le bouton Run dans mb-gdb , puis lorsque le bootloader dira, sur l'interface cu, qu'il est prêt à recevoir, envoyer le système avec la commande :

cat k2d.bin > /dev/ttyS0