Microprocesseurs, interfaces et logiciels de base 2000 Génie Informatique Université de Technologie de Belfort Montbéliard
2 pages
Français

Microprocesseurs, interfaces et logiciels de base 2000 Génie Informatique Université de Technologie de Belfort Montbéliard

-

Cet ouvrage peut être téléchargé gratuitement
2 pages
Français
Cet ouvrage peut être téléchargé gratuitement

Description

Examen du Supérieur Université de Technologie de Belfort Montbéliard. Sujet de Microprocesseurs, interfaces et logiciels de base 2000. Retrouvez le corrigé Microprocesseurs, interfaces et logiciels de base 2000 sur Bankexam.fr.

Sujets

Informations

Publié par
Publié le 17 février 2007
Nombre de lectures 31
Langue Français

Extrait

MI43
MI 43 – FINAL
Note: les parties 1 et 2 sont à rédiger sur des copies séparées
Final
Partie 1 : envoi de caractères vers une imprimantes via un port parallèle On souhaite implémenter une fonction qui réalise l'envoie d'un paquet de données vers une imprimante selon le protocole Centronics (SPP).
Description de l'interface du port parallèle Adresse de base :278h Description des registres de l'interface : Décalage RegistreAccès Description 0 Datalecture/ Octetde donnée transféré vers l'imprimante écriture 1 Statuslecture Etatdu port parallèle et de l'imprimante
bits 0 et 1réservé, généralementà 1 bit 2IRQ#, 0: interruption demandée par le port bit 3ERROR#, 0: une erreur est survenue bit 4SELECT, 1: l'imprimante est sélectionnée bit 5PAPER OUT,1 :plus de papier bit 6ACK#, 0: accusé de réception bit 7BUSY, 0: imprimante occupée * 2 Controlde port parallèle de la lignelecture/ Contrôle écriture bit 0STROBE#, 1: active la ligne STROBE ** bit 1Auto LineFeed,1 : autofeed (retour à la ligne automatique) bit 2Init, 0: initialisation de l'imprimante (remettre à un après l'initialisation) bit 3Select In,1 : sélection de l'imprimante (doit être à 1 pour envoyer des données) bit 4Enable IRQ,1 : active les interruptions bit 5Enable bi-direct.,1 : permet la lecture des données sur le port parallèle *** bits 6 et 7réservés, mettreà 1 * inversion matérielle : un 0 dans le registre indique que la ligne est à l'état haut et un 1 indique que la ligne est à l'état bas. ** il est nécessaire de mettre un 1 pour mettre la ligne STROBE à l'état bas (inversion matérielle)… *** utilisé pour utiliser le port parallèle en bidirectionnel (inutilisé ici mettre à 0)
Fonctionnement du dialogue avec l'imprimante Dialogue STROBE# BUSY ACK# DATA
L'hôte place les données sur le port Il vérifie que la ligne BUSY est désactivée Il active la ligne STROBE#, la maintient durant 1µs et la désactive L'imprimante en réponse active la ligne BUSY signalant qu'elle traite l'octet et ne peut en recevoir d'autre (généralement transfert dans un tampon interne) une fois le caractère traité (de quelques microsecondes à quelques secondes selon le remplissage du tampon de l'imprimante) l'imprimante désactive la ligne BUSY et envoie une impulsion sur la ligne ACK# en la mettant brièvement à l'état bas.
UTBM – Printemps 2000
1/2
Nicolas Lacaille
MI43 Final Interruption La ligne ACK# lorsqu'elle est activée (mise à l'état bas) génère une interruption au niveau du processeur (ci ces dernières sont activées au niveau de l'interface). Cette ligne est activée (et donc une interruption est générée) dans les cas suivant : l'imprimante a traité un caractère, et est prête pour le suivant l'imprimante a terminé son initialisation l'alimentation de l'imprimante a été coupée l'imprimante est hors ligne ou en manque de papier
Travail demandé Un programme qui souhaite imprimer des données appelle la fonctionprinten lui transmettant en argument : -l'adresse des données (supposées contiguës) -le nombre de caractères à envoyer à l'imprimante -l'adresse d'une variable de compte rendu Cette fonctionprintBooléen TRUE : si la requête a été prise en compte, FALSE sinon.Le prototype en C serait deretourne un la forme : BOOLEAN print(char * Buffer, int Nombre, int* résultat)
Valeur de la variable de compte rendu (Resultat) 0 : opération terminée avec succès 1 : opération en cours 2 : plus de papier autre valeur : erreur
L'envoi des donnée s'effectuera de manière asynchrone, c'est à dire que lorsque la fonction print est appelée elle rend la main avant que tout le transfert soit effectué (cela sera au programme appelant d'effectuer un test s'il le souhaite sur la variable Resultat).
La fonction lorsqu'elle est appelée, s'occupe de mettre en place le transfert des données vers l'imprimante initialisation si l'imprimante n'est pas initialisée mise en place du transfert qui s'effectuera au travers d'un dialogue par interruption. retour
1.Détaillez textuellement les opérations à réaliser par la routine print 2.Détaillez textuellement les opérations à réaliser par la routine d'interruption 3.Donnez le pseudo-code (en l'expliquant) des deux routines précédentes en détaillant les structures de données utilisées. 4.Commentaire s'il y en a…
Notes: les routines devront être robustes et donc gérer les erreurs
Primitive du système: Read(adresse) : retourne le contenu de la case mémoire pointée paradresse Write(adresse,donnée) : écritdonnéeà la case mémoire pointée paradresse Wait(n) : attend (inactivité du processeur)nunités de 500 nano-secondes
UTBM – Printemps 2000
2/2
Nicolas Lacaille
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents