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" :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while (count--) { outb(*(ptr++), port); wmb( ); }
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.
Partager