Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 TD 2 : Echanges sur IT et ADM ____________________________ 1. Rappels sur les IT 2. Gestion impression sur interruption. On considère une imprimante raccordée sur le port parallèle comme dans le TD1. On veut gérer l'impression sur interruption. On définit, pour initialiser l'impression, la procédure int Imprime_IT(char *pcar, short nbcar) Cette procédure reçoit en paramètres l'adresse de début et le nombre d'octets de la zone à imprimer. Cette procédure renvoie -1 s'il y a déjà une impression en cours, 0 si l'initialisation est possible. Le port parallèle peut activer l'interruption 7. On dispose des déclarations et procédures suivantes : #define #define #define #define #define ARDATA 0x378 ARSTATUS 0x379 ARCDE 0x37A EN_IT_PPAR 0x10 IT_PPARAL 7 // adresse du registre // adresse du registre // adresse du registre // bit autorisation // numéro d'irq donnée d'état de commande it // variables communes avec le prog d'IT int fin; // 1 : impression en cours ; 0 : terminée short nboct; // nombre d'octets à imprimer char *pdata; // adresse zone à imprimer void enable_irq(unsigned int irq); Autorise les interruptions provenant de la ligne de numéro irq. void enable_irq(unsigned int irq); Interdit les interruptions provenant de la ligne de numéro irq. Ecrire en langage C, la procédure Imprime_IT(char *pcar, short nbcar). Ecrire en langage C, la procédure IT_PPara(unsigned int irq) qui est appelée lorsqu'il y a une interruption sur la ligne 7. 3. Gestion liaison série sans interruption On considère deux PC reliés par une liaison série asynchrone, utilisant des circuits de transmission série. On s'intéresse à l'émission de données, par le PC_A. 1 Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 Emission donnée Réception PC_A PC_B Le registre d'état du contrôleur série fournit les indications suivantes : - bit TXRDY à 1, indique que le registre tampon émission est vide. Ce bit est remis à 0 lorsqu'on écrit dans le registre tampon émission. - bit RXRDY à 1, indique que le registre tampon réception est plein. Ce bit est remis à 0 lorsqu'on lit le registre tampon réception. On supposera que COMPTE contient le nombre d'octets à émettre, et que PDATA pointe sur le premier octet à émettre. 3.1. Gestion programmée de l'émission Ecrire l'algorithme du programme gérant l'émission du PC_A. 3.2. Contrôle de flux avec XON XOFF Emission PC_A donnée xon / xoff Réception PC_B Lorsque le récepteur veut interrompre la transmission, il envoie à l'émetteur le caractère XOFF. lorsqu'il veut reprendre la transmission, il envoie à l'émetteur le caractère XON. On supposera que le récepteur n'envoit rien à l'émetteur en dehors des XON et XOFF. Ecrire l'algorithme du programme qui effectue l'émission, en tenant compte du contrôle de flux. 4. Gestion liaison série avec interruption On considère la même configuration qu'au §3. On suppose en plus que le registre de contrôle permet les actions suivantes : - bit M_IT_EM à 0, masque l'interruption "tampon émission vide". à 1, autorise l'interruption "tampon émission vide". 4.1. Gestion de l'émission sur interruption Ecrire l'algorithme du programme qui initialise l'émission sur interruption. Ecrire l'algorithme de la portion du programme d'interruption qui va gérer l'émission. 2 Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 4.2. Gestion de l'émission sur interruption avec contrôle de flux (DTR, DSR) On veut maintenant introduire un contrôle de flux à l'aide des signaux DTR, DSR . Emission PC_A donnée DSR Réception DTR 3 PC_B Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 La gestion des signaux DTR, DSR est faite par programme. Lorsque le récepteur (PC_B) ne dipose plus d'assez de place pour recevoir des données, il met DTR à 1 pour demander à l'émetteur (PC_A) de suspendre l'émission de donnée. Lorsque le récepteur (PC_B) dispose à nouveau de place, il remet DTR à 0, pour indiquer à l'émetteur (PC_A) de reprendre l'émission. L'émetteur (PC_A) peut être interrompu par le changement d'état (0 vers 1 ou 1 vers 0) de DSR. Le registre d'état du contrôleur série fournit en plus les indications suivantes : - bit DSR état du signal DSR. - bit IT_DSR à 1 => changement d'état DSR. La lecture du registre d'état provoque la remise à 0 du bit IT_DSR. Le registre de contrôle permet en plus les actions suivantes : - bit M_IT_DSR à 0, masque l'interruption "changement d'état DSR". à 1, autorise l'interruption "changement d'état DSR". On utilisera les variables suivantes : EMISSION PDATA COMPTE // 0, émission interdite ; 1, émission autorisée // pointeur sur le prochain car à émettre // nombre de car restant à émettre Ecrire l'algorithme du programme qui initialise l'émission sur interruption. Ecrire l'algorithme de la portion du programme d'interruption qui va gérer l'émission. avec contrôle de flux. 5. Comparaisons échanges : sans interruption, avec interruptions, avec ADM On suppose que la liaison série permet d'émettre à 64 Kbits utiles par seconde. Donner le débit en octets par seconde. On suppose que l'émission est gérée par programme sans utiliser les interruptions, et que l'accès à un registre du contrôleur série prend 300 ns. On négligera le temps d'exécution des autres instructions de la boucle. Donner le pourcentage du temps processeur passé en attente. On suppose que le contrôleur série est toujours prêt lorsque le programme consulte le registre d'état et donc qu'il n'est pas limité en débit. Dans ces conditions donner le débit maximum possible qu'atteindrait l'émission. 4 Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 On suppose maintenant que l'émission est gérée sur interruptions, et que le déroutement en interruption, l'exécution du programme d'interruption (sans compter l'accès au controleur série) et le retour d'interruption représente 200 ns. On suppose également que le débit de l'émission est de 64 Kbits/s. Donner le pourcentage du temps processeur passé pour gérer l'émission.. Dans ces conditions donner le débit maximum possible qu'atteindrait l'émission. On suppose maintenant que l'émission est gérée en utilisant l'accès direct mémoire et que l'initialisation de l'ADM par le processeur prend 2,5 µs. Déterminer le nombre d'octets à partir duquel la gestion de l'émission avec ADM occupe moins de temps processeur que la gestion de l'émission sur interruptions. 6. Emission modulée en largeur avec interruption On dispose d'un port parallèle sur 8 bits et d'un temporisateur (timer) programmable, permettant de générer une interruption lorsque le temps programmé est écoulé. Le registre donnée du temporisateur reçoit la constante définissant le temps au bout duquel sera générée l'interruption. Le registre d'état du temporisateur fournit l'indication suivante : - bit IT_TEMPO à 1 => le temps est écoulé. Ce bit est remis à 0 lorsqu'on écrit dans le registre donnée du temporisateur. Le registre de contrôle du temporisateur permet les actions suivantes : - bit M_IT_TEMPO à 0, masque l'interruption "temps écoulé". à 1, autorise l'interruption "temps écoulé". On veut émettre, en série, un octet sur le bit D0 du port parallèle selon le codage suivant : - absence d'émission, D0 est à l'état 1 - émission d'un bit à 0, D0 à 0 pendant 25 µs puis D0 à 1 pendant 75 µs - émission d'un bit à 1, D0 à 0 pendant 75 µs puis D0 à 1 pendant 25 µs - les bits de l'octet sont émis dans l'ordre bit0, bit1, . . . . . ,bit7 La durée du bit émis est toujours de 100 µs. Un bit est émis toutes les 100 µs, le temps nécéssaire à l'émission d'un octet est donc de 800 µs. 100 µs 25 75 100 µs 75 bit à 0 bit à 1 5 25 Université Pierre et Marie Curie Master ACSI UE : Gestion des Périphériques Année 2006/2007 Les constantes T25MS et T75MS correspondent respectivement aux temps de 25 et 75 microsecondes. Donner l'algorithme du programme initialisant l'émission d'un octet. Donner l'algorithme du programme d'interruption permettant d'émettre un octet. 6