TP5_sys_emb_sur_FPGA Fichier

Transcription

TP5_sys_emb_sur_FPGA Fichier
TP5 - Systèmes embarqués / FPGA
La majorité des systèmes embarqués, à part quelques cas rares, nécessitent un noyau temps réel (RTOS). Un
système temps réel est caractérisé par son exactitude logique : les sorties évoluent en fonctions des entrées et
de l’état interne, et son exactitude temporelle : les soties sont positionnées au bon moment.
Il existe de nombreux noyaux temps réel gratuits ou payants. Xilinx propose un petit noyau temps réel
robuste et compatible POSIX (Portable Operating System Interface) qui est un standard IEEE. Ce noyau
nommé Xilkernel supporte quasiment toutes les API existantes dans POSIX. Il est intégré dans la
plateforme de développement XPS (Xilinx Plateform Studio).
Dans ce TP, les mécanismes essentiels rencontrés dans les noyaux temps réel seront traités.
Les différents états d’une tâche (process)
1
Partie matérielle
1.
Créer un nouveau projet tp5 sous XPS en utilisant l’outil WIZARD.
100.00
2.
Associer au microprocesseur les périphériques suivants :
Nom
Block RAM
2 LMB Bram Controller
DDR2 SDRAM
8 Switchs_8bit
8 LEDs_8bit
XPS Timer
XPS Intc
RS232_Uart_0
Debug Module MDM_0
Clock Generator
System Reset
PLB Bus
2 LMB Bus
Fonction
Taille mémoire
Mémoire interne
Interface mémoire
Mémoire externe
inverseurs
Diodes DEL
Compteur/Timer
Contrôleur d’interruption
Interface série
Debugger
Générateur d’horloge
Générateur de « reset »
BUS périphériques
BUS mémoire interne
64 ko
256 Mo
64 ko
64 ko
64 ko
64 ko
64 ko
64 ko
interruption
paramètres
Non
Non
Oui
8 bits en entrée
8 bits en sortie
2 Timers actifs, 32 bits
Non
9600B, 8bit, sans parité
2
3.
Paramétrer le microprocesseur en modifiant le contenu des volets suivants :
3
4.
5.
6.
Comparer votre fichier system.mhs au fichier du même nom qui est partagé sur le pc2fpga.
Hardware >> Generate bitstream : pour compiler la plateforme matérielle.
Une fois le fichier system.bit généré, exporter la plateforme matérielle vers SDK (Eclipse).
Paramétrage partie logicielle sous SDK
1.
2.
3.
4.
5.
Sous SDK, on se retrouve avec 1e répertoire qui contient la description de la plateforme matérielle :
kernel_hw_platform.
Il faut commencer par configurer la plateforme logicielle avant de créer le soft. File >> New >> Xilinx
Board Support Package : choisir l’OS Xilkernel.
Clic droit sur la configuration BSP qui vient d’être créée et choisir Board Support Package Settings.
Paramétrer la plateforme selon le modèle donné par la figure de la page suivante.
File >> New >> Project C Xilinx : pour créer le programme d’application (Dans la deuxième fenêtre, il
faut associer le programme à la configuration bsp créée précédemment. Vérifier le fichier de script.
4
0x5000000
0x5000000
0x400
0x400
5
Création et ordonnancement des tâches (à tour de rôle)
1.
2.
3.
Associer au projet le fichier source threads_RR.c
Dans ce fichier une seule tâche est créée. Le programme peut être compilé et exécuté. Observer et
analyser le résultat sur l’Hyperterminal.
Il faut maintenant créer trois autres tâches. Compiler, exécuter le programme et analyser le résultat sur
l’Hyperterminal (si le défilement est trop rapide, arrêter l’exécution et observer l’historique avec
l’ascenseur).
Affectation de priorités aux tâches
1.
2.
3.
4.
5.
Modifier la configuration de Xilkernel pour travailler avec des priorités : sched_type = SCHED_PRIO
Remplacer le fichier source threads_RR.c par le fichier threads_PRIO.c
La tâche 1 a une priorité 1 (la plus élevée après 0). Affecter aux trois autres tâches les priorités
suivantes : tâche2 = 2, tâche3 = 3, tâche4 = 4.
Compiler, exécuter le programme et analyser le résultat sur l’Hyperterminal.
Ajouter l’instruction sleep(5000) à chacune des tâches et observer la différence au niveau de
l’ordonnancement des tâches.
Mutex et Sémaphores
1.
2.
3.
Remplacer le fichier source threads_PRIO.c par le fichier sema.c
Compiler, exécuter le programme et analyser le résultat sur l’Hyperterminal.
Expliquer le mécanisme utilisé dans ce fichier pour le passage de main d’une tâche à l’autre.
6