Université Pierre et Marie Curie
Master ACSI Année 2006/2007
UE : Gestion des Périphériques
1
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 ARDATA 0x378 // adresse du registre donnée
#define ARSTATUS 0x379 // adresse du registre d'état
#define ARCDE 0x37A // adresse du registre de commande
#define EN_IT_PPAR 0x10 // bit autorisation it
#define IT_PPARAL 7 // numéro d'irq
// 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.
Université Pierre et Marie Curie
Master ACSI Année 2006/2007
UE : Gestion des Périphériques
2
Emission Réception
PC_A PC_B
donnée
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 Réception
PC_A PC_B
donnée
xon / xoff
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.
Université Pierre et Marie Curie
Master ACSI Année 2006/2007
UE : Gestion des Périphériques
3
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 Réception
DSR DTR
PC_A PC_B
donnée
Université Pierre et Marie Curie
Master ACSI Année 2006/2007
UE : Gestion des Périphériques
4
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 // 0, émission interdite ; 1, émission autorisée
PDATA // pointeur sur le prochain car à émettre
COMPTE // 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.
Université Pierre et Marie Curie
Master ACSI Année 2006/2007
UE : Gestion des Périphériques
5
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.
25 75 75 25
100 µs 100 µs
bit à 0 bit à 1
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !