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