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 :
- CPU0
- 0: 75127 IO-APIC-edge timer
- 1: 2779 IO-APIC-edge keyboard
- 2: 0 XT-PIC cascade
- 5: 0 IO-APIC-level usb-ohci, ehci_hcd
- 8: 1 IO-APIC-edge rtc
- 9: 490 IO-APIC-level usb-ohci, SiS SI7012, can_drv
- 11: 5213 IO-APIC-level usb-ohci, Texas Instruments PCI1410 PC card Cardbus Controller, orinoco_cs
- 12: 30081 IO-APIC-edge PS/2 Mouse
- 14: 9837 IO-APIC-edge ide0
- NMI: 0
- LOC: 75081
- ERR: 0
- 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 :
- serinfo:1.0 driver:5.05c revision:2001-07-08
- 0: uart:16550A port:3F8 irq:4 tx:0 rx:0
- 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 !