Absence d'interruptions sur ports série (select==timeout) - Linux et OS Alternatifs
Marsh Posté le 15-02-2005 à 16:43:24
J'ajoute que setserial /dev/ttyS0 irq 4 ne change rien
Edit : je ne sais pas si ça veut dire quelque chose, mais si je fais cat /dev/ttyS0, le cat affiche quelques-unes des infos reçues puis quitte (retour à l'invite bash). Si je refais la manip, ça retourne immédiatement.
Marsh Posté le 15-02-2005 à 17:38:38
Un dernier up avant de partir du travail. D'après mes recherches google, c'est un problème assez fréquent, mais autant j'arrive à trouver des gens qui ont ce problème, autant je n'arrive pas à trouver de gens qui ont une réponse.
Est-ce qu'un conflit pourrait se manifester comme ça ? J'imagine que je verrais trop de monde sur l'IRQ4 plutôt que personne. Je précise au passage que mon port 3F8 est bien attribué à ttyS0(=tts/0) (de toute façon, j'arrive à lire/écrire dessus, mais pas à "selecter"...)
Dernière précision, les droits de ttyS0 sont r-x et ceux de ttS/0 sont rw-, il me semble que c'est normal.
Toute idée est bonne à prendre
Marsh Posté le 15-02-2005 à 17:56:22
Bon, dernière partie de mon monologue
En fait, si je fais cat /proc/interrupts *pendant* le fonctionnement de mon appli, je vois bien l'IT. Me voilà bien maitenant avec mon select qui ne marche pas et mes IT qui sont OK
Marsh Posté le 15-02-2005 à 14:20:40
Bonjour,
Je développe une application qui contrôle divers hardware sous MDK 9.2 et j'ai depuis peu des problèmes sur mes ports série (ttyS0 et ttyUSB0, port série adapté sur un USB).
Jusqu'à ce que je fasse je ne sais quoi (enfin, il n'y a que moi qui touche à ce PC, je dois être dans le coup), je pouvais faire des "select" en lecture sur ces ports (en C), fonction qui -en gros- demande au driver de réveiller le processus lorsqu'une interruption intéressante est soulevée.
Bref, tout fonctionnait pour le mieux, mais tout d'un coup, mes select font des timeout et je n'arrive pas à en déterminer la cause. L'ouverture des ports est OK.
cat /proc/interrupts me donne :
Si j'ai bien compris, cat /proc/interrupts me donne les périphériques sur lesquels des IT ont été soulevées depuis le démarrage. Donc, là, rien sur l'irq4 (ttyS0).
cat /proc/tty/driver/serial me donne
A priori, tout est là (les tx et rx sont normaux, c'est juste après reboot), mais faut-il vraiment s'y fier ? En polling et en read/write direct, ça marche, mais niveau fiabilité, c'est nul. Enfin, je précise que tout est OK dans le bios.
Si vous pouviez me mettre sur une piste, vous me tireriez une sacrée épine du pied.
Merci !