FR 2773626 A1 19990716 FR 9800275 A 19980114 L'invention a pour objet un procédé et son dispositif pour connecter sur le même port série d'un ordinateur déjà utilisé par un périphérique, un autre périphérique. Le but est de relier un périphérique tel qu'un lecteur de carte à puce ou tout autre périphérique entre un ordinateur et un port série déjà utilisé et connecté par un autre périphérique quelconque (par exemple une souris, un joystick, un modem, ...). Ce port série utilise un protocole de communication de type RS232 ou 12C ou SPI ou autres, Selon l'état de la technique, si on prend l'exemple de la souris, celle ci est reliée directement par une liaison série. Pour effectuer l'échange de données entre la souris et l'ordinateur, il est utilisé un driver souris et une UART résidant dans l'ordinateur (émetteur/récepteur asynchrone universel) qui fait office de moyen de gestion de communication. Il est important de remarquer que selon l'état de la technique, si l'utilisateur veut utiliser une souris sur son ordinateur, il est obligé de configurer le port entrée/sortie utilisé par la souris. De ce fait, l'utilisateur ne peut utiliser sur ce port que la souris, et aucun autre périphérique ne peut être utilisé sur ce même port série. L'invention tend à résoudre ce problème. L'état de la technique peut être défini par le brevet suivant - FR-A -2. 740.885: un procédé pour la gestion et l'exécution des applications de sécurité au sein d'un équipement électronique interactif munis d'un appareil périphérique comportant les moyens sécurisés et des moyens de pointage, comprend un protocole de communication étendu du protocole de communication spécifique aux moyens de pointage dudit appareil périphérique. Ce protocole permet l'utilisation d'un seul port série pour la communication entre des logiciels applicatifs et les moyens de pointage et les moyens sécurisés réunis dans l'appareil périphérique selon l'invention. L'appareil périphérique intègre les fonctions de pointage et de terminal pour les cartes à microcircuit. Spécifiquement à cette invention, il comprend des moyens sécurisés de stockage gestion et exécution des applications de sécurité. Le procédé et l'appareil selon l'invention sont destinés aux applications de protection des logiciels et de gestion des licences d'utilisation de logiciels notamment sur les équipements électroniques interactifs. Le procédé, selon l'invention pour connecter sur le même port série d'un ordinateur utilisé déjà par un périphérique (A), un autre périphérique (B), consiste à: - désactiver le pilote de l'application (A), pour pouvoir ensuite procéder au transfert de données sans problème pour le curseur commandé par l'application (A), - à créer un nouveau pilote pour gérer le pilote de l'application (A) et le port série de l'ordinateur, - à relier directement la voie de transmission à l'émetteur/récepteur asynchrone universel (UART) de l'application (B) et à l'application (A), ladite voie est utilisée seulement par le pilote de l'application (A) pour détecter le matériel au démarrage, ladite voie est aussi disponible à tout instant pour l'application (B), - à ce que l'UART du lecteur de carte à puce coupe l'application (A) dès qu'il reçoit des données et envoie immédiatement une réponse à l'ordinateur, - si l'ordinateur ne lui a pas demandé de données, l'UART du lecteur de carte vérifie que la demande de données a bien été reçue et en informe l'ordinateur, ensuite l'ordinateur applique un scénario d'interrogation, durant ce scénario l'ordinateur est maître et l'application (B) est l'esclave. Le scénario d'interrogation est utilisé afin de ne pas gêner l'utilisateur de la souris pendant le temps de réponse du lecteur de carte. A cet effet, ledit scénario se caractérise par trois parties renvoi d'une demande de données principales au lecteur de carte, ensuite dans certains cas le lecteur de carte peut envoyer une information pour confirmer la bonne réception de la demande, ou directement les données demandées, = > utilisation d'interrogations pour savoir si le lecteur de carte à puce a reçu des données provenant de la carte et s'il est prêt à envoyer la demande principale de données, > recherche de la donnée de réponse à la demande principale. Selon un autre procédé de réalisation, un contact supplémentaire alimente par les signaux demande d'invitation à émettre (RTS) et de prêt à recevoir (DSR) provenant d'un ordinateur à port série, ledit contact relie directement la souris à l'ordinateur en cas de coupure de l'alimentation du lecteur de carte à puce (ou autre périphérique). L'invention vise également le dispositif pour la mise en oeuvre du procédé. Le dispositif pour connecter sur le même port série d'un ordinateur utilisé déjà par un périphérique (A), un autre périphérique (B), est caractérisé par le fait qu'il comporte * au niveau de l'ordinateur: - un nouveau driver , autre interface logicielle qui fait office de driver principal relié d'une part au driver du périphérique A (déjà utilisé sur ledit port série) et qui fait office de driver esclave et d'autre part à l'interface physique (UART) qui fait office de moyen de gestion communication * au niveau du nouvel interface de l'autre périphérique (B) - un interrupteur commandé - un interface (UART2) faisant office de moyen de communication ces deux éléments étant reliés entre eux et étant reliés également à l'interface physique (UART,) de l'ordinateur au périphérique (A) déjà utilisé. Selon un mode de réalisation, le périphérique (A) déjà utilisé sur le port série de l'ordinateur est une souris et l'autre périphérique (B) est au moins un lecteur de cartes à puces. Les dessins ci-joints sont donnés à titre d'exemples indicatifs et non limitatifs. Ils représentent un mode de réalisation selon l'invention. Ils permettront de comprendre aisément l'invention. La figure 1 est une vue représentant l'architecture actuelle. La figure 2 est une vue schématique et simplifiée du dispositif selon l'invention. La figure 3 est une vue selon la figure 2, selon un autre mode de présentation. La figure 4 est une vue du scénario selon le procédé. Au cours de ce scénario, l'utilisateur peut travailler normalement avec la souris sans problème. DESCRIPTION ET ARCHITECTURE Pour transmettre des données de l'ordinateur 6 au lecteur de carte à puce 8 par le même port série que la souris 9, il faut désactiver le pilote de souris 3, pour pouvoir ensuite procéder au transfert de données sans problème pour le curseur commandé par la souris. Il est nécessaire de créer un nouveau pilote permettant de gérer le pilote de souris 3 et le port série de l'ordinateur. La voie de transmission est reliée directement à ltémetteur/récepteur asynchrone universel (UART) du lecteur de carte à puce 7 et à la souris 9, cette voie est utilisée seulement par le pilote de souris pour détecter le matériel souris au démarrage du système d'exploitation, il est aussi disponible à tout instant pour l'application carte à puce. Quand il reçoit des données, l'UART du lecteur de carte coupe la souris et envoie immédiatement une réponse à l'ordinateur. Ainsi, l'utilisateur de la souris n'est pas gêné par cette transmission discrète de données. Si l'ordinateur 6 ne lui a pas demandé de données, l'UART du lecteur de carte 7 vérifie que la demande de données a bien été reçue et en informe l'ordinateur 6, ensuite l'ordinateur 6 applique un scénario d'interrogation jusqu'à ce que le lecteur de carte à puce 8 reçoit une demande de données. Ce scénario d'interrogation est décrit plus avant dans la description et est représenté à la figure 4. Tout au long de ce processus, l'ordinateur 6 est le maître et l'UART du lecteur de carte 7 est l'esclave. La figure 3 représente l'architecture utilisée 1/ Application LECTEUR DE CARTE 2/ Système d'exploitation 3/ Pilote de SOURIS 4/ Pilote de LECTEUR DE CARTE (Driver autre interface - interface logicielle) 5/ Emetteur/récepteur asynchrone universel UART 8250 - PORT SERIE 6/ ORDINATEUR 7/ Interface UART du LECTEUR DE CARTE 8/ MATERIEL du LECTEUR DE CARTE 9/ SOURIS 10/ Interrupteur commandé Le scénario d'interrogation est le suivant Le temps de réponse du lecteur de carte à puce 8 peut être de plusieurs minutes et la souris 9 ne peut rester hors service durant toute cette période. Aussi est-il nécessaire d'utiliser un scénario afin de ne pas gêner l'utilisateur de la souris 9 pendant le temps de réponse du lecteur de carte 8. Le scénario se divise en trois phases Dans la première phase, envoi d'une demande de données principale au lecteur de carte à puce 8, ensuite le lecteur de carte 8 envoie une information pour confirmer la bonne réception de la demande. Dans la deuxième phase, mise en oeuvre du procédé d'interrogation selon le scénario décrit pour savoir si le lecteur de carte à puce 8 a reçu des données provenant de la carte (non représentée) et s'il est prêt à envoyer la demande de données principale. Dans la dernière phase, recherche de la donnée de réponse à la demande principale. Le scénario est illustré par la figure 4: 1/ Demande de données principale 2/ Réponse OK 3/ Phase 1 4/ Demande de données OK 5/ Réponse KO 6/ Phase 2 7/ Demande de données 8/ Phase 3 9/ Réponse de données principale o Au cours de ce scénario, l'utilisateur peut travailler normalement avec la souris 9 sans problème. Il faut remarquer que la souris 9 fonctionne en l'absence d'alimentation du lecteur de carte à puce 8. Un autre mode de réalisation comprend un autre contact alimenté par des signaux de "demande d'invitation à émettre" (RTS) et de "prêt à recevoir" (DSR) provenant d'un ordinateur à port série. Ce contact relie directement la souris à l'ordinateur en cas de coupure d'alimentation. La souris série utilise un paquet de données de format fixe à une vitesse de 1200 bauds vers l'hôte en cas d'appui sur un bouton ou de détection d'un mouvement de la souris. o Initialisation de Reset La souris transmet un caractère "M" dès la mise sous tension ou en cas de déclenchement d'un Reset est initialisé par l'hôte. Ce caractère informe l'hôte de la conformité du message avec le format série constructeur. e Format du message de données série Lors de la transmission de données à l'hôte, la souris diffuse le format de données suivant, conforme à l'interface série constructeur. Le format de données 1200 bauds utilise un bloc de données 9 bits constitué de 7 bits de données message et de 2 bits de contrôle. Le contrôleur de souris transmet le paquet de données de 3 octets suivant, conforme à l'interface, en réponse à un événement souris. 1/ Octet 1 de données message Bit Désignation Bit de début (toujours O) 2 Bit 6 de mouvement horizontal 3 Bit 7 de mouvement horizontal (bit de poids fort) 4 Bit 6 de mouvement vertical 5 Bit 7 de mouvement vertical (bit de poids fort) 6 l = Bouton secondaire enfoncé 7 l = Bouton primaire enfoncé 8 Toujours = l (bit de synchronisation message) 9 Bit d'arrêt (toujours 1) 2/ Octet 2 de données message Bit Désignation Bit de début (toujours O) 2 Bit O de mouvement horizontal 3 Bit 1 de mouvement horizontal 4 Bit 2 de mouvement horizontal 5 Bit 3 de mouvement horizontal 6 Bit 4 de mouvement horizontal 7 Bit 5 de mouvement horizontal 8 Toujours = 0 9 Bit d'arrêt (toujours 1) 3/ Octet 3 de données message Bit Désignation Bit de début (toujours O) 2 Bit O de mouvement vertical 3 Bit 1 de mouvement vertical 4 Bit 2 de mouvement vertical 5 Bit 3 de mouvement vertical 6 Bit 4 de mouvement vertical 7 Bit 5 de mouvement vertical 8 Toujours = 0 9 Bit d'arrêt (toujours 1) UART 8250 Cet UART (émetteur/récepteur asynchrone universel) permet de gérer l'interface port série. L'UART 16550 est compatible, au niveau logiciel et brochage, avec le 8250 mais a une file d'attente interne fonctionnant sur le principe du "premier entré, premier sorti" (FIFO) et pouvant être activée et désactivée par le logiciel. Le port COM1 utilise normalement l'adresse 03F8H, COM2 l'adresse 02F8H, COM3 l'adresse 03E8H et COM4 l'adresse 02E8H. Cette adresse la plus basse est généralement appelée l'adresse de port de base et chaque registre adressable est ensuite référencé par adressage relatif à partir de cette valeur de base, comme le montre ce tableau Si le bit DLAB du LCR (registre de commande de communication) = 0 OOH DONNEE En cas de lecture, registre de données reçues. En cas d'écriture, registre de maintien de transmission (lecture/écriture). 01H IER Registre de validation d'interruption (lecture/écriture). Si le bit DLAB du LCR = 1: OOH BaudO Bascule diviseur BRG, octet bas (lecture/écriture) 01H Baud i Bascule diviseur BRG, octet haut (lecture/écriture) Non affecté par le bit DLAB 02H IID Registre identificateur d'interruption (lecture) et registre de commande FIFO (écriture) 03H LCR Registre de commande de communication (lecture/écriture) 04H MCR Registre de commande de modem (lecture/écriture) 05H LSR Registre d'état de communication (lecture) 06H MSR Registre d'état de modem (lecture) Port 3F8/3F9 - Tableau de diviseur de vitesse de transmission (lecture/écriture! Bit DLAB dans LCR = 1 BITS/SECONDE DIVISEUR BITS/SECONDE DIVISEUR 50 2304 1800 64 75 1536 2000 58 110 1047 2400 48 134 857 4800 24 150 768 9600 12 300 384 19200 6 600 192 38400 3 1200 96 57600 2 1800 64 115200 i 2000 58 Diviseur = 1843200 / (vitesse de transmission * 16). Port 3F8 - Registre de validation d'interruption IER (lecture/écriture) Bit DLAB dans LCR =0 Registre de données reçues en cas de lecture. Registre de maintien de transmission en cas d'écriture. Port 3F9 - Registre de validation d'interruption - IER (lecture/écriture) bit DLAB dans LCR = 0 Bit Nom Binaire Signification 7,6,5,4 Réservé 0000 xxxx Réservé (zéro) 3 EMI xxxx lxxx Validation d'interruption d'état de modem 2 ELI xxxx xlxx Validation d'interruption d'état de communication i ETI xxxx xxlx Validation d'interruption de registre de transmission O ERI xxxx xxxl Validation d'interruption données reçues prêtes Port 3FA - Registre d'identification d'interruption - IIR (lecture seule) Bit Nom Binaire Signification 7,6 FIQ 11xx xxxx 16550 seulement, les files d'attente FIFO sont validées. 00xx xxxx 8250 et 16550, les files d'attente FIFO sont dévalidées. 5,4 Réservé xx00 xxxx Réservé (zéro) 3 TINT xxxx xlxx 16550 seulement, int. de sortie de session. En attente. xxxx x0xx 8250 et 16550 1,2 SINT xxxx x00x Interruption d'état de modem, bit modifié dans MSR xxxx x01x Interruption de registre de transmission, registre de maintien de xxxx xiOx transmission vide, bit à 1 dans LSR xxxx xlix Interruption de données reçues prêtes, registre de données plein, bit à 1 dans LSR. Interruption d'état de communication, BREAK ou bit d'erreur dans LSR. O IP xxxx xxxl Interruption en attente (pas d'interruption active) xxxx xxx0 Pas d'interruption en attente Port 3FA - 16550 Registre de commande FIFO - FCR (écriture seule) Bit Nom Binaire Signification 7,6 TL 00xx xxxx Niveau de déclenchement = 1 octet pour interrupt FIFO récepteur Olxx xxxx Niveau de déclenchement = 4 octets pour interrupt FIFO récepteur 10xx xxxx Niveau de déclenchement = 8 octets pour interrupt FIFO récepteur i lxx xxxx Niveau de déclenchement = 14 octets pour interrupt FIFO récepteur 5,4 Réservé xx00 xxxx Réservé (zéro) 3 Réservé xxxx lxxx Modification des broches RXRDT & TXRDY de mode 0 en mode 1 2 CLT xxxx xlxx Vidange FIFO émetteur i CLR xxxx xxlx Vidange FIFO récepteur O IP xxxx xxxl Validation vidange des queues FIFO émetteur et récepteur Port 3FB - Registre de commande de communication - LCR (lecture/écriture) Bit Nom Binaire Signification 7 DLAB Oxxx xxxx Adresse relative 0 renvoie à DONNEE, adresse relative 1 à IER commande lxxx xxxx Adresse relative 0 et 1 renvoie à la bascule diviseur BR d'adresse 6 SETBRK x0xx xxxx Fonctionnement UART normal commande xlxx xxxx Envoie signal d'interruption d' interrupt. 5,4,3 GENPAR xxxx Oxxx Pas de bit de parité contrôle xx00 lxxx Bit de parité = impaire de parité xxOl lxxx Bit de parité = paire xx10 lxxx Bit de parité = 1 xxii lxxx Bit de parité = 0 2 XSTOP xxxx x0xx 1 seul bit d'arrêt bit d'arrêt xxxx xlxx 2 bits d'arrêt (1,5 si WL = 5) 1,0 WD5 xxxx xx00 Longueur de mot = 5 WD6 xxxx xxOl Longueur de mot = 6 WD7 xxxx xxi O Longueur de mot = 7 WD8 xxxx xxii Longueur de mot = 8 Port 3FC - Registre de commande de modem MCR (lecture/écriture) Bit Nom Binaire Signification 7,6,5 Réservé 000x xxxx Réservé (zéro) 4 TEST xxxl xxxx Activation de la configuration d'auto-test UART 3 OUT2 xxxx lxxx Contrôle des signaux d'interruption 8250 (sortie User2) 2 OUT1 xxxx xlxx Réinitialisation du modem interne1200 b Hayes (sortie User) t RTS xxxx xxlx Passe à 1 la sortie RTS vers le connecteur RS232C O DTR xxxx xxxl Passe à I la sortie DTR vers le connecteur RS232C Port 3FD - Registre d'état de communication - LSR (lecture seule) Bit Nom Binaire Signification 7 PE/FE/interr lxxx xxxx Interruption PE/FE 16550 dans file d'attente FIFO Oxxx xxxx Utilisation de 8250 ou 16450 6 TSRE xlxx xxxx Registre à décalage de transmission vide 5 THRE xxlx xxxx Registre de maintien de transmission vide 4 BI xxxl xxxx Interruption reçue 3 FE xxxx lxxx Erreur de trame 2 PE xxxx xlxx Erreur de parité 1 OE xxxx xxlx Erreur de dépassement O DR xxxx xxx1 Données reçues prêtes Port 3FE - Registre d'état de modem - MSR (lecture seule) Bit Nom Binaire Signification 7 DCD lxxx xxxx Niveau détecté de porteuse de données 6 RI xlxx xxxx Niveau d'indicateur d'appel 5 DSR xxlx xxxx Niveau "prêt à recevoir" 4 CTS xxx1 xxxx Niveau "prêt à transmettre" 3 DCDC xxxx lxxx Changement de DCD 2 RIC xxxx xlxx Changement de RI i DSRC xxxx xxlx Changement de DSR O CTSC xxxx xxx1 Changement de CTS REFERENCES 1. Application LECTEUR DE CARTE 2. Système d'exploitation 3. Pilote de SOURIS 4. Pilote de LECTEUR DE CARTE (Driver autre interface - interface logicielle) 5. Emetteur/récepteur asynchrone universel UART 8250 - PORT SERIE 6. ORDINATEUR 7. Interface UART du LECTEUR DE CARTE 8. MATERIEL du LECTEUR DE CARTE 9. SOURIS 10. Interrupteur commandé REVENDICATIONS I. Procédé, pour connecter sur le même port série d'un ordinateur (6) utilisé déjà par un périphérique (A), un autre périphérique (B), caractérisé par le fait qu'il consiste à - désactiver le pilote de l'application (A), pour pouvoir ensuite procéder au transfert de données sans problème pour le curseur commandé par l'application (A), - créer un nouveau pilote pour gérer le pilote de l'application (A) et le port série de l'ordinateur (6), - relier directement la voie de transmission à l'émetteur/récepteur asynchrone universel l'UART (5) de l'application (B) et à l'application (A), ladite voie est utilisée seulement par le pilote de l'application (A) pour détecter le matériel au démarrage, ladite voie est aussi disponible à tout instant pour l'application (B), - ce que l'UART du lecteur de carte (7) coupe l'application (A) dès qu'il reçoit des données et envoie immédiatement une réponse à l'ordinateur (6), - si l'ordinateur (6) ne lui a pas demandé de données, 1'UART du lecteur de carte (7) vérifie que la demande de données a bien été reçue et en informe l'ordinateur (6) , ensuite l'ordinateur applique un scénario d'interrogation, durant ce scénario l'ordinateur (6) est maître et l'application (B) est l'esclave. 2. Procédé, selon la revendication 1, caractérisé par le fait que le dit scénario se caractérise par trois parties renvoi d'une demande de données principales au lecteur de carte (1), ensuite le lecteur de carte (1) envoie une information pour confirmer la bonne réception de la demande, > utilisation d'interrogations pour savoir si le lecteur de carte à puce (1) a reçu des données provenant de la carte et s'il est prêt à envoyer la demande principale de données, = > recherche de la donnée de réponse à la demande principale. 3. Procédé, selon la revendication 1, caractérisé par le fait qu'un contact supplémentaire alimenté par les signaux demande d'invitation à émettre (RTS) et de prêt à recevoir (DSR) provenant d'un ordinateur à port série, relie directement la souris (9) à l'ordinateur (6) en cas de coupure de l'alimentation du lecteur de carte à puce (1) (ou autre périphérique). 4. Dispositif pour la mise en oeuvre du procédé, selon la revendication 1, pour connecter sur le même port série d'un ordinateur utilisé déjà par un périphérique (A), un autre périphérique (B), caractérisé par le fait qu'il comporte * au niveau de l'ordinateur: un nouveau driver , autre interface logicielle qui fait office de driver principal (4) relié d'une part au driver du périphérique (A) (déjà utilisé sur ledit port série) et qui fait office de driver esclave (3) et d'autre part à l'interface physique (UART1) (7) qui fait office de moyen de gestion communication * au niveau du nouvel interface de l'autre périphérique (B) 0 un interrupteur commandé (10) 0 un interface (UART2) (7) faisant office de moyen de communication ces deux éléments étant reliés entre eux et étant reliés également à l'interface physique (UART1) (5) de l'ordinateur (6) au périphérique (A) déjà utilisé. 5. Dispositif, selon la revendication 1, caractérisé en ce que le périphérique (A) déjà utilisé sur le port série de l'ordinateur (6) est une souris (9). 6. Dispositif, selon la revendication 1, caractérisé par le fait que l'autre périphérique (B) est un lecteur de cartes à puces (1).