Programation systeme (demande d'aide au projet sur les ports serie

jpachocho Messages postés 2 Date d'inscription mardi 27 octobre 2009 Statut Membre Dernière intervention 30 janvier 2010 - 30 janv. 2010 à 01:21
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 14 févr. 2010 à 10:12
lien vers le projet;
http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Architecture/TDTP/TDTPmv/head_n_footer?nomdoc=TPS.htm
Liaison série par câble null-modem


L'objectif de cette série de TPs est de vous faire établir une liaison entre deux ordinateurs en utilisant un câble null-modem. Vous devez réaliser la connexion et écrire les programmes de communication. Le TP se décompose en plusieurs parties non entièrement indépendantes

Programmation
Les différents programmes que vous allez écrire sont similaires; il est plus économique de programmer des fonctions puis de les appeler dans les différents programmes.
N'oubliez pas de bien aérer et commenter vos programmes.
Pour l'accès au port série, utiliser les fonctions inport et outport .
Configuration

Ecrivez une fonction qui permet d'afficher la configuration de l'interface (le contenu de tous les registres), et testez-la dans un programme qui l'appelle.

Testez votre fonction pour lire la configuration DOS par défaut de l'UART série (8 bits d'information, pas de bit de parité, 1 bit de stop, rapidité de modulation de 2400 Bauds).

Ecrivez des fonctions pour configurer l'interface. Dissociez la fonction de configuration de la vitesse de transfert de celle de configuration de format. La première (SetBaud) devra recevoir en paramètre la valeur à ranger dans le diviseur de fréquence (Divisor Latch). La seconde (SetUART) pourra fixer arbitrairement la configuration au standard DOS (sans interruption, ni modem).
Envoi et réception

On désire écrire une fonction pour retourner le premier caractère sur l'interface série (s'il n'y en a pas de nouvel arrivé, il faudra attendre). Essayez de déterminer quels sont les problèmes qui peuvent apparaître lorsque l'on veut lire un octet reçu. En déduire les différentes phases pour recevoir un caractère.
On ne veut pas travailler avec les interruptions (trop complexes à mettre en eouvre). Comme on ne dispose pas d'appel pour savoir si un nouveau caractère est arrivé, il va falloir en permanence scruter l'arrivée d'un caractère.
Ecrivez une fonction SerIn (pour Serial In) qui lit un caractère sur l'interface série et le retourne.
On désire écrire une fonction pour envoyer un caractère sur l'interface série. Essayez de déterminer quels sont les problèmes qui peuvent apparaître lorsque l'on veut envoyer un octet. En déduire les différentes phases pour envoyer un caractère.

Ecrivez une fonction SerOut (pour Serial Out) qui écrit sur l'interface série un caractère.
Ecrivez un programme pour tester les deux fonctions écrites précédemment à l'aide de deux ordinateurs reliés par un câble null_modem.


Protocole
Malgré les contrôles effectués, on n'a pour l'instant aucun moyen de contrôler le flux de transfert, et donc d'éviter les erreurs d'écrasement à l'arrivée. Vous devez donc établir un protocole d'échange. Ce sont les données transmises qui vont vous permettre le contrôle (pour éviter les erreurs). Vous allez contrôler l'envoi de chaque octet grâce à un acquittement individuel.
Le protocole Xon/Xoff (dans lequel X signifie eXchange) est très standard et permet le contrôle, transformant la ligne en une liaison en half-duplex. Le protocole est le suivant:
L'état de la ligne au repos est un octet à Xoff. L'algorithme pour les deux parties est le suivant :
- l'émetteur fait une demande de connexion en envoyant UN octet Xon et il attend la réponse ;
- le récepteur qui scrutait la ligne répond par Xon pour signaler qu'il accepte la connexion et qu'il est prêt à recevoir le caractère, qu'il se met à attendre ;
- l'émetteur envoie le caractère et attend l'accusé de réception (Xoff) ;
- dès qu'il voit le caractère (qui n'est pas Xon), le récepteur renvoie un accusé de réception (Xoff) ;
- l'émetteur finit à son tour en déconnectant lui aussi la ligne par Xoff.
Testez le protocole Xon/Xoff pour des transferts d'octets d'un ordinateur à l'autre en écrivant un logiciel de deux programmes (l'un pour l'émission, l'autre pour la réception).
En utilisant les même fonctions, faites un programme "echange" qui affiche sur un ordinateur ce qui est frappé sur le clavier de l'autre et réciproquement. Le programme est le même pour les deux machines. Le basculement en mode d'émission doit être automatique dès que l'on frappe une touche au clavier. De même dès qu'un caractère est envoyé on doit être en mode réception pour l'afficher. On supposera que l'on ne tape pas sur les deux claviers en même temps. Faites bien attention aux phases d'initialisation.
Ce protocole n'est pas parfait. En cas d'erreur de transmission l'ensemble reste bloqué. Essayez de trouver une solution. Vous pouvez modifier le protocole, mais vérifiez sa robustesse face aux différents problèmes qui peuvent survenir lors de la transmission de bout en bout. Il ne vous faut évidemment pas utiliser pour vos codes de contrôle des caractères susceptibles d'être transmis par ailleurs ; puisez votre inspiration dans les 32 premiers codes de la table des caractères ASCII.

1 réponse

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
14 févr. 2010 à 10:12
Vu l'age du problème,il serait surprenant de ne pas trouver une abondante documentation ,étayer de code sources, en utilisant google.
0
Rejoignez-nous