MAIN   SUPPORT   FAQs   DOS Kompatibilität 

DOS-Kompatibilität bei den PCI-Karten von Vision Systems

VScom 200,210,400,800, 110H,200H,210H,400H,410H,800H, 100L,110L,200L,210L,400L,800L PCI

Begriffe:

 Häufig wird gefragt, ob die PCI-Karten der VScom-Serie DOS-kompatibel sind, bzw. ob diese unter DOS laufen. Schon diese Art der Fragestellung läßt eine Menge Spielraum für Mißverständnisse. Um diese zu klären, und weitere Konfigurationshinweise zu geben, dient dieses Dokument.

 Zuerst einmal müssen aber einige Begriffe geklärt werden, um anfängliche Mißverständnisse zu verhindern. In den meisten Fällen bedeutet die angesprochene Frage nämlich eben nicht, ob die Karte DOS-kompatibel ist (das sind alle unsere Karten mit 2 und 4 seriellen Schnittstellen). Gemeint ist vielmehr, ob eine bereits bestehende Applikation mit den Schnittstellen funktionieren kann.
Es gibt verschiedene Stufen der Kompatibilität:

  1. DOS kompatibel:
    Unter DOS werden serielle Schnittstellen als COM1: bis COM4: bezeichnet. Der Zugriff darauf geschieht über Dateizugriffe, mit genau diesen Namen. So ist es z.B. möglich ein angeschlossenes Modem mittels
       Echo AT&F>COM3:
    in den Grundzustand zu versetzen. Die "Datei" COM3 wird geöffnet, und einige Zeichen werden dorthin gesendet.
    An dieser Stelle muß betont werden, daß DOS gar nichts über Adressen und Interrupts weiß.
  2. BIOS kompatibel:
    DOS benutzt für die oben beschriebene Aktion, und alle weiteren Funktionen das BIOS. Konkret sind dies Funktionen des Int 14h. In diesen wird die Schnittstelle mittels einer Nummer von 0 bis 3 bezeichnet. Programme können diese Funktionen ebenfalls aufrufen, um zusätzliche Operationen mit den Schnittstellen durchzuführen. So können z.B. nur auf diese Art die Übertragungsparameter verändert werden. Hierzu dient sonst das Programm MODE.
    Terminalprogramme wie z.B. Telemate können diese Schnittstelle benutzen. Die maximale Geschwindigkeit ist hier 9600 Baud.
    Ein Programm von Vision Systems erstellt diese Kompatibilitätsstufe. Damit ist die DOS Kompatibilität ebenfalls gesichert.
    Um einen weit verbreiteten Irrtum gleich hier auszuräumen: Die Behauptung "COM1 ist 03F8h" ist schlicht falsch. Das BIOS sucht beim Start des Rechners nach seriellen Schnittstellen. Abhängig vom Hersteller sind die durchsuchten Bereiche allerdings beliebig. Heutige BIOSse suchen allerdings üblicherweise bei 03F8h,02F8h,03E8h,02E8h. Das PS/2-System von IBM aber sucht nur an den ersten beiden davon, und weiteren 6 Adressen, die alle eine Länge von 16 Bit haben. Ganz alte PCs haben nur an den ersten beiden Adressen gesucht.
  3. FOSSIL kompatibel:
    Dies ist der Name für eine verbreitete Erweiterung des BIOS. Dies ist die Betriebsart, die einem DOS-"Treiber" am Nächsten kommt. Der obige Int 14h wird erweitert, um höhere Geschwindigkeiten, mehr Schnittstellen, Interrupt- und Puffer-Betrieb zu erlauben. Es gibt gängige Shareware Produkte hierfür. Unsere Karten arbeiten mit den meisten zusammen, auch diejenigen mit 8 Schnittstellen.
    Programme, die diese Schnittstelle benutzen, werden ohne Änderung unter Windows'9x und NT4 laufen.
  4. PC Hardware kompatibel:
    Die seriellen Schnittstellen verhalten sich wie übliche serielle Ports des PC. Eigentlich bedeutet das kompatibel zum 8250 UART, für neuere Programme auch ein 16450 oder 16550 UART. Sie sind in der Lage, einen Interrupt auszulösen, und belegen einen gegebenen Adressraum.
    Hier treten die meisten Probleme auf. Typische DOS-Programme (mehr als 98%) bedienen die Schnittstellen in dieser Betriebsart. Damit sind bereits diese Programme weder DOS- noch BIOS-kompatibel. Da diese direkt auf Hardware zugreifen, müssen sie auch auf die aktuellen Gegebenheiten konfigurierbar sein. Und genau das ist der kritische Punkt. Manche Programme erlauben nur Konfigurationen auf bestimmte Adressen, andere versagen bei diversen Interrupt-Konfigurationen.

Unterstützung:

 Vision Systems liefert ein Programm namens VSPCIDOS, welches die BIOS-Kompatibilität erstellt. Die Adressen von bis zu vier seriellen und drei parallelen Schnittstellen werden ins BIOS eingetragen. Zusätzlich zeigt dieses Programm auch die aktuelle Konfiguration an. Mehr wird nicht benötigt, die Schnittstellen können mittels MODE-Befehl konfiguriert werden.

 Unglücklicherweise reicht das in den meisten Fällen eben nicht aus, weil die Programme nur kompatibel zur Hardware sind. Der hier noch optimale Fall ist, daß sich die Programme sauber konfigurieren lassen, so daß die Einstellungen den Gegebenheiten der Hardware entsprechen. Alternativ läßt sich eine andere Hardware emulieren, dazu später mehr. Für die Konfiguration der Programme kommen mehrere Punkte ins Spiel:

  • PCI ist ein Plug & Play System. Daher werden alle Resourcen vom BIOS vergeben. In diesem speziellen Fall sind das die Adressen und die Interrupts. Deshalb sind beide nicht zu konfigurieren.
  • PCI Karten erhalten in der Regel nur einen Interrupt. Als Konsequenz benutzen alle Schnittstellen den gleichen IRQ. Sollte ein Programm mehrere Schnittstellen gleichzeitig benutzen, muß es zu einer sauberen Verarbeitung in der Lage sein.
  • Insbesondere die Karten mit 4 oder mehr Schnittstellen sowie die aus der H-Serie müssen Blockadressierung benutzen. Das ist eine Einschränkung des PCI Bus. Es wird ein großer Adressbereich zugeteilt, in dem kleinere Abschnitte dann die einzelnen Schnittstellen repräsentieren.
  • Die Karten der H-Serie bieten einen FIFO mit 128 Byte Tiefe.
  • Alle Schnittstellen sind in der Grundkonfiguration auf einen 8-fachen Takt konfiguriert. Die Maximalgeschwindigkeit ist daher nicht 115200, sondern 921600. Die Grundkonfiguration der Karten läßt sich aber soweit ändern, daß dieser Wert wieder bei 115200 liegt.
  • Da PCI nur vier Interrupts definiert (IntA bis IntD), liegen bei mehr als 4 Komponenten mindestens zwei auf dem gleichen Interrupt. Das ist in den Spezifikationen des PCI-Busses ausdrücklich vorgesehen. Allerdings bedeutet das dann Interrupt-Sharing mit einer anderen Karte. Typischerweise sind Programme dazu überhaupt nicht in der Lage.
  • Die typischen von PCI benutzten I/O-Adressen liegen weit oberhalb von 1000h, benutzen also mehr als 10 signifikante Bits. Auch damit haben manche Programme ein Problem. Vor allem MSD.EXE zeigt nur Schnittstellen an, wenn die Adressen kleiner als 03FFh sind. Das hat aber nichts mit der Funktion der Schnittstellen über das BIOS zu tun.

Emulation alter Hardware:

 Sollte ein Programm an diesen Hindernissen scheitern, so gibt es eine weitere Möglichkeit. Der Treiber VSEMUIO kann die Schnittstellen virtualisieren. Er kann also jede Schnittstelle mit Adresse und IRQ unter einer anderen Adresse und einem anderen IRQ verfügbar machen. Dabei kann auch die Korrektur der 8fachen Geschwindigkeit stattfinden. Für die Programme stellt sich das dann als "normale" Schnittstelle dar.
Voraussetzung ist aber das Laden von EMM386 oder einem kompatiblen Speichermanager. Und selbstverständlich kann auch dieses Tool einen IRQ-Konflikt nicht auflösen. Sollte also die PCI-Karte denselben IRQ verwenden wie ein SCSI-Controller, so wird letzterer mit hoher Wahrscheinlichkeit nicht funktionieren.

Entscheidungskriterien:

 Vor einem Einsatz einer PCI Karte unter DOS sind daher eine Menge Daten zu prüfen. Und es sollte ins Auge gefaßt werden, die Software zu ändern. Bestehende Software wird ja weiter benutzt, um getätigte Investitionen zu sichern. Es muß passende Hardware erworben werden. Dieses wird mit der Zeit immer schwieriger werden. Anpassungen der Systeme (soweit möglich) werden aufwendiger. Es ist abzusehen, daß zukünftige Systeme Applikationen den Zugriff auf die Hardware verweigern werden.

 Um ein bestehendes Programm zu überprüfen, mag folgende Checkliste hilfreich sein:

  1. Erlaubt es die freie Wahl des Interrupts?
    Das sollte möglich sein, sonst wird es sehr schwierig, das System passend zu konfigurieren.
  2. Beherrscht es Interrupt Sharing?
    Wenn nicht, dann können die Schnittstellen nur nacheinander genutzt werden.
  3. Benutzt es vielleicht das BIOS? Oder gar FOSSIL?
    Dann wird es mit insgesamt 4 Schnittstellen problemlos arbeiten. Mit Hilfe eines FOSSIL-Treibers läßt sich die Effektivität zusätzlich steigern.
  4. Können beliebige Adressen für die seriellen Schnittstellen angegeben werden?
    Das wäre sehr schön. Dann ist vielleicht sogar eine dynamische Konfiguration möglich.
  5. Sind die Adressen auf 12 (bzw. 10) Bit limitiert?
    In diesem Fall muß die Adresse der PCI-Karte nachträglich geändert werden. Das ist prinzipiell möglich, kann aber auf einigen Mainboards fehlschlagen. Insbesondere, wenn viele (mehr als 4) PCI-Slots verfügbar sind.
  6. Sind etwa nur die vier üblichen Adressen (03F8h,02F8h,03E8h,02E8h) möglich?
    Sehr schlecht. Dann sind u.U. auch keine Interrupts konfigurierbar.
  7. Geht etwa nur die Eingabe COM1 bis COM4?
    Dieses Programm ist so alt (schlecht geschrieben), daß eine Neufassung dringend angeraten ist. Es ist unmöglich, eine PCI-Karte so zu konfigurieren, wie früher die ungeschickte Konfiguration zu IBM-PC Zeiten war. Also z.B. Adresse 03E8h/IRQ 4 plus Adresse 02E8h/IRQ 3.

VS Vision Systems GmbH      
                            Aspelohe 27 A               
                            D-22848 Norderstedt         
                            Fon : +49 40 528401-0       
                            Fax : +49 40 528401-99      
                            http://www.visionsystems.de 
                            Mail: info@visionsystems.de