Projet système : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Documentation du projet)
Ligne 83 : Ligne 83 :
 
* Environnement de travail : [[Projet système : environnement|PC]] ou [http://sebastien-viardot.imag.fr/index.php?option=com_content&task=view&id=6&Itemid=16 FPGA]
 
* Environnement de travail : [[Projet système : environnement|PC]] ou [http://sebastien-viardot.imag.fr/index.php?option=com_content&task=view&id=6&Itemid=16 FPGA]
  
* Conduite du projet : [[Media:Psys_roadmap.pdf|PC]] ou [http://sebastien-viardot.imag.fr/Enseignements/System/roadmap_FPGA.pdf FPGA]
+
* Conduite du projet : [[Projet_système_:_roadmap |PC]] ou [http://sebastien-viardot.imag.fr/Enseignements/System/roadmap_FPGA.pdf FPGA]
  
 
* Sources de départ : [[Media:PSE_kernel-base.tar.gz|PC]] ou [http://sebastien-viardot.imag.fr/files/psys-base-fpga.tar.gz FPGA]
 
* Sources de départ : [[Media:PSE_kernel-base.tar.gz|PC]] ou [http://sebastien-viardot.imag.fr/files/psys-base-fpga.tar.gz FPGA]

Version du 3 juin 2010 à 13:51

AttentionCette page est maintenue par les enseignants et utilisée par les élèves de la matière concernée. Vos contributions sont les bienvenues, mais merci d'en discuter avant de faire des modifications non triviales de la page, pour être sûr de ne pas perturber le déroulement du cours.

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 

Actualités

  • Ajout d'une fonction pour programmer des appels au BIOS.
  • Le jeu de test devrait être distribué le mercredi 9 juin.
  • Début du projet le 20-21 mai 2010.

Enseignants

Simon Nieuviarts

Grégory Mounié

Franck Rousseau

Sébastien Viardot

Présentation

Le projet de spécialité système permet de concevoir un système d'exploitation sur machine nue.

Un cahier des charge minimal est à réaliser (voir Énoncés du projet et documentation). Les extensions seront à définir au début du projet avec l'encadrant selon le goût des groupes.

2 versions du projet existent (avec le même cahier des charges initial), seules les extensions diffèrent:

  • Projet sur PC
  • Projet sur FPGA

Projet sur PC

L'objectif est d'exploiter un PC classique et d'en écrire le système d'exploitation.

Les extensions possibles sont :

  • la mise en œuvre de la mémoire virtuelle,
  • l'exploitation de périphériques complexes (carte graphique, carte son, carte réseau, ...),
  • l'exploitation de plusieurs processeurs dans le système d'exploitation.

Projet sur FPGA

L'objectif est de concevoir la partie matérielle et logicielle (toujours en écrivant un système d'exploitation). Le développement est assez proche de ce qui peut se faire lors du développement de systèmes embarqués complexes (consoles, téléphones portables de type "smartphone", ...).

Il est possible dans ce type de projet de concevoir dans les extensions des IP et d'en écrire les pilotes permettant de les exploiter dans le système. Ainsi les projets système pourront intégrer une part importante de conception d'accélérateur matériel de traitement de l'information.

Les accélérateurs matériels, aussi appelés IP, sont utilisés pour leur très grande performance, aussi bien en terme de puissance de calcul que de consommation d'énergie.

Par exemple, ils constituent la majeure partie des circuits utilisés en téléphonie mobile ou encore en compression vidéo temps-réel (vidéophonie sur mobile, etc ...)

Les IP sont des unités de traitement "cablées" qui implémentent tout ou partie d'un algorithme. De nombreux algorithmes sont même plus faciles à implémenter en matériel qu'en logiciel du fait de la structure hautement parallèle des IP. Pour utiliser une IP, un processeur standard lui envoie des données puis récupère le résultat des calculs. Dans le cadre du projet de spécialité, les système conçus pourront intégrer, au choix, des accélérateur :

  • 3D Z-buffer (utilisée pour les jeux vidéo)
  • 3D photo-réaliste par lancer de rayon
  • code correcteur d'erreur pour les transmission
  • encryptage/décryptage pour la sécurité
  • compression/décompression vidéo pour le multimédia

Des projets à plusieurs binômes peuvent être constitués afin de concevoir des systèmes complexes logiciels et matériel. Merci de signaler à Sébastien Viardot le type de projet que vous souhaitez faire.

Suivi

Accompagnement des étudiants

  • Autant que possible l'équipe encadrante fait en sorte qu'il y ait toujours 1 ou 2 enseignant(s) par 1/2 journée dans les salles où se font le projet. (que l'enseignant soit le tuteur du groupe ou non)
  • Le tuteur d'un groupe fait un point au moins une fois par semaine sur l'état d'avancement du projet. Un journal de bord doit être rempli quotidiennement.
  • A la fin du projet un jeu de test est fourni pour valider partiellement les fonctionnalités du projet.

Les consignes transmises au départ

  • Un spécification technique initiale est fournie au départ (à compléter au niveau des extensions),
  • Les étapes de progression pour atteindre l'objectif minimal.

Attente à la fin du projet

  • Livrable : Le cahier des charges complété avec les extensions, un planning prévisionnel et effectif, un code clair et commenté de la réalisation, un journal de bord à jour, un dépôt bien renseigné des évolutions faites pendant tout le projet (outil svn)
  • Soutenance : une présentation de la réalisation. Il est important de montrer ce qui fonctionne et ce qui ne fonctionne pas. Les enseignants ont à leur disposition une fiche de soutenance où sont passés en revu les points critiques du projet.
  • Page web : une page web (dans le wiki) présentant ce qui a été fait, et quelques démos (capture écran ou vidéo), mais pas de code. Avec les difficultés rencontrées et les apports.

Documentation du projet

  • Environnement de travail : PC ou FPGA
  • Conduite du projet : PC ou FPGA
  • Sources de départ : PC ou FPGA
  • Gestion du temps : PC ou FPGA
  • Gestion des processus et changement de contexte PC ou FPGA

Documentation externe

gdb et ddd

  • Tout la documentation est accessible par les commandes :
info gdb
info ddd

Éléments d'assembleur et de C

  • Insérer de l'assembleur dans du C (pratique non recommandée car beaucoup de pièges) : info gcc, section C extensions, puis Extended Asm

Processeurs Intel

Attention: ne pas imprimer ces documents (plus de 500 pages chacun)

Développement d'OS

  • Art of Assembly (l'édition DOS 16 bit contient des informations sur la programmation des drivers)

Dépôts SVN

Les dépôts SVN sont hébergés sur ensibm. Ils ont été initialisés avec les sources de départ du projet. Pour en récupérer une copie, utilisez l'une des deux commandes suivantes selon l'architecture sur laquelle vous travaillez :

svn co svn+ssh://votre_login@ensibm.imag.fr/usr/local/tcpsys/login1-login2-login3/repo/psys/pc psys
svn co svn+ssh://votre_login@ensibm.imag.fr/usr/local/tcpsys/login1-login2-login3/repo/psys/fpga psys

Cela créera une répertoire de travail nommé psys. Evidemment, il faut remplacer les mots votre_login, login1, login2 et login3 (le cas échéant) par les valeurs pertinentes. Les logins de votre équipe sont triés par ordre alphabétique.

Projet PC : Pour intégrer votre TP de PSE, nous vous conseillons de copier un par un les fichiers pertinents. Il faut utiliser la commande svn add pour qu'ils soient pris en compte par SVN. Certains correctifs de la FAQ (et d'autres) ont été intégrés par rapport à la version distribuée en PSE. De plus, le répertoire user a été ajouté pour l'étape d'implantation du mode utilisateur.

Vous pouvez vous référer à la page Subversion pour apprendre à utiliser ce gestionnaire de version.

Extensions

Pour programmer des appels au BIOS en mode réel sur PC, nous vous fournissons un patch à appliquer avec la commande suivante :

# Pour voir les changements appliques par le patch
patch -p1 --dry-run < ~/Psys_bios.patch
# Enlever le parametre --dry-run pour appliquer effectivement les changements

Il ajouter trois fichiers de sources et modifie le Makefile ainsi que le kernel.lds. La seule fonction ajoutée par ce patch est décrite dans le fichier .h. Notez bien que cette fonction doit être appelée avec la pagination désactivée ! Dans vos noyaux la pagination est activée. Voir crt0.S.