Bonjour,
Je m'intéresse depuis peu à l'écriture de driver sous linux, nottament grâce à "Linux Device Driver" (ver. 3) . Je n'ai donc que peu de connaissance à ce propos et il est possible que mes questions soient triviales...


Il y a un point qui me pose problème :
quand on fait plusieurs lecture/écriture sur un port parallele à l'aide de "void outb(unsigned char byte, unsigned port);" par exemple, l'auteur écrit dans sa méthode "write" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
while (count--) {
    outb(*(ptr++), port);
    wmb( );
}
Or, je me dis que si on échange des données avec un mirco-controlleur par exemple, rien ne nous garantie que les deux échangent leur données à la même vitesse. L'auteur ne se préocuppe pas de ça parce qu'il branche un fil entre la sortie et l'entrée.

Mais 'en vrai', dans le cas où l'ordinateur est "plus rapide" que le materiel, j'imagine qu'on peut lire X fois le bit, ce qui peut créer quelques problèmes.
Donc vient ma question : comment synchroniser l'ordinateur avec le périphérique ?
Est-ce que l'utilisation d'une interruption est appropriée (autre méthode, comme un timer?) ?
Si on reçoit 1MB de données, n'est-ce pas un peu lourd de créer 1 interruption/bit ?

Merci d'avance de vos réponses.