Absence d'interruptions sur ports série (select==timeout)

Absence d'interruptions sur ports série (select==timeout) - Linux et OS Alternatifs

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 :

Code :
  1. CPU0
  2.   0:      75127    IO-APIC-edge  timer
  3.   1:       2779    IO-APIC-edge  keyboard
  4.   2:          0          XT-PIC  cascade
  5.   5:          0   IO-APIC-level  usb-ohci, ehci_hcd
  6.   8:          1    IO-APIC-edge  rtc
  7.   9:        490   IO-APIC-level  usb-ohci, SiS SI7012, can_drv
  8. 11:       5213   IO-APIC-level  usb-ohci, Texas Instruments PCI1410 PC card Cardbus Controller, orinoco_cs
  9. 12:      30081    IO-APIC-edge  PS/2 Mouse
  10. 14:       9837    IO-APIC-edge  ide0
  11. NMI:          0
  12. LOC:      75081
  13. ERR:          0
  14. MIS:          0


 
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

Code :
  1. serinfo:1.0 driver:5.05c revision:2001-07-08
  2. 0: uart:16550A port:3F8 irq:4 tx:0 rx:0
  3. 1: uart:16550A port:2F8 irq:3 tx:0 rx:0


 
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 !

Reply

Marsh Posté le 15-02-2005 à 14:20:40   

Reply

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.


Message édité par kzimir le 15-02-2005 à 16:52:14
Reply

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 :)

Reply

Marsh Posté le 15-02-2005 à 17:56:22    

Bon, dernière partie de mon monologue :o
 
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 :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed