Serielle Schnittstelle ohne internen UART

Im Bereich Messen, Steuern, Sensorik gibt immer noch die serielle Schnittstelle den Ton an.

Dumm nur, dass dieses Randpublikum kaum noch durch Hardwarehersteller bedient wird. Bei Laptops gibt es nur noch selten eine serielle Schnittstelle, bei Desktops teilweise auch nicht – oder zumindest wird kein D-Sub Stecker mehr von aussen zum UART (Serieller Baustein) des Mainboards verbaut.

Die Funktionalität muss daher durch andere Schnittstellen geführt werden und kaum etwas eignet sich schlechter als der Universal Serial Bus. Fast alle USB->Serial Kabel können höchstens ein paar Bytes über die Leitung kriegen. Sobald Timing oder Duplex-Verkehr gefragt ist, sind diese Kabel mit Chipsätzen von Prolific (ganz schlecht) oder FTDI überfordert.

Abhilfe schafft ein Transfer über den PCI Bus, bspw. mit einer ExpressCard.

Die DeLock 66217 ExpressCard34 arbeitet genauso so gut wie die interne Schnittstelle meines Desktop Rechners.
Die Karte benutzt die PCI-Express Verbindung der ExpressCard. In Ihr arbeitet ein Oxford Semiconductor Chip kompatibel zu 16C950 UART

Der Linux Treiber heißt 8250_pci, der aber die Kartenerkennung für diesen Chip erst seit Kernel 2.6.28 besitzt:

Vendor 1415 (Oxford Semiconductor Ltd.)
device c138

Mein openSUSE 11.0 System konnte daher nichts mit der Karte anfangen, erst ein Upgrade auf openSUSE 11.2 brachte das ganze ohne weiteres Eingreifen zum Laufen (8250_pci ist dort statisch in den Kernel einkompiliert und erfordert daher nicht die Kerneleinstellung CONFIG_EMBEDDED, siehe:
http://cateee.net/lkddb/web-lkddb/SERIAL_8250_PCI.html
Dass die Karte, die PCI Verbindung zum ExpressCard Slot benutzt sieht man schon an lspci, welcher den IRQ18 für den UART benutzt.

Die Karte hätte es übrigens in gleicher Bauform auch ein bischen billiger über die USB 2.0 Schnittstelle gegeben – DeLock 66211
Sehr wahrscheinlich mit allen gleiben Defiziten, wie die USB->Serial Kabel…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.