|
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:
- 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ß.
- 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.
- 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.
- 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:
- Erlaubt es die freie Wahl des Interrupts?
Das sollte möglich sein, sonst wird es sehr
schwierig, das System passend zu konfigurieren.
- Beherrscht es Interrupt Sharing?
Wenn nicht, dann können die Schnittstellen nur
nacheinander genutzt werden.
- 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.
- 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.
- 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.
- Sind etwa nur die vier üblichen Adressen (03F8h,02F8h,03E8h,02E8h)
möglich?
Sehr schlecht. Dann sind u.U. auch keine
Interrupts konfigurierbar.
- 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.
|