-
QUERVERWEIS
AUF IN BEZIEHUNG STEHENDE FÄLLE
-
Diese
Anmeldung steht teilweise in Beziehung mit der vorläufigen US-Patentanmeldung
mit der Seriennummer 60/043,085, angemeldet am 8. April 1997, betitelt „Biphase
Coded Computer Peripheral Extension System", und mit der US-Anmeldung Seriennummer
08/971,223, angemeldet am 15. November 1997, betitelt „A Method
and Apparatus for Extending Computer Peripherals".
-
Gebiet der
Erfindung
-
Diese
Erfindung bezieht sich auf Datenverteiler, genauer gesagt auf Mehrbenutzer-Tastatur-, Video- und
Maus-(KVM)Verteiler.
-
HINTERGRUND
UND ABRISS DER ERFINDUNG
-
Tastatur-/Maus-Videoverteiler
sind wohl bekannt, die es ermöglichen,
dass eine Tastatur, eine Arbeitsstation und ein Videomonitor mit
einem ausgewählten
von mehreren Computern zusammenwirken. Obwohl bekannte Tastatur-/Video-/Mausverteiler
verschiedene Formen annehmen können,
ist ihr grundlegender Zweck, es zu ermöglichen, dass eine Arbeitsstation
(allgemein bestehend aus einer Tastatur, einer Maus und einem Monitor)
mit einem ausgewählten
Computer zusammenwirkt, so dass der Computer verständliche
Signale von den verschiedenen Arbeitsstationskomponenten empfängt und
an sie versendet, unabhängig
von den Datenprotokollschemata, die entweder von dem ausgewählten Computer
oder den Arbeitsstationsgeräten
verwendet werden. Typische Tastatur-/Video-/Mausverteiler ermöglichen
es dem Benutzer einer Arbeitsstation, den Zugriff zwischen verschiedenen
der zahlreichen zugeordneten Computer umzuschalten.
-
Der
Tastatur-/Video-/Mausverteilerkasten hat typischerweise wenigstens
einen Anschluss für
die Arbeitsstation Geräte,
um dem Verteiler Signale bereitzustellen und von ihm von ihm zu
empfangen, begleitet von einer Anzahl von Computeranschlüssen, mittels
derer jeder der zugeordneten Computer an den Verteiler angeschlossen
ist. Die meisten KVM-Verteiler verwenden eine Einzelbenutzer-(Einzelarbeitsstation-)Architektur,
bei der eine einzelne Tastatur, ein einzelner Video und ein einzelner
Monitor auf eine eine mehrfache Anzahl von Computern zugreifen können, aber
der Stand der Technik ist nicht auf solche Architekturen beschränkt. Matrixartige
KVM-Verteiler sind
ebenfalls bekannt, die verteilungs- oder routing-artige Funktionen
be reitstellen, um eine beliebige von mehreren zugeordneten Arbeitsstationen
mit einem beliebigen der mehreren zugeordneten Computer zu verbinden.
-
Daher
werden KVM-Verteiler, von denen einige Matrixverteiler sind, kommerziell
von Firmen hergestellt, einschließlich der Cybex Computer Products
Corporation aus Huntsville, AL, Apex PC Solutions aus Washington,
The CCC Group aus England, und Rose Electronics aus Houston, TX.
-
Das
US-Patent Nr. 5,884,096 offenbart ein KVM Verteilersystem, welches
einen Kreuzungspunktverteiler verwenden kann. Es kann beispielsweise
mehrere Arbeitsstationen mit mehreren verbundenen Arbeitsstationsanschlüssen und
mehreren Computer mit mehreren entsprechenden Computeranschlüssen beinhalten.
-
Der
vorliegende KVM-Verteiler stellt eine alternative Architektur für Verbindungen
von mehreren Benutzern zu mehreren Computern bereit, die wesentliche
Vorteile gegenüber
bekannten Architekturen bereitstellt. Insbesondere ist der vorliegende
KVM-Verteiler gekennzeichnet durch einen einzelnen KVM-Prozessor, durch
den viele der mehreren Benutzer auf einen oder mehrere der unterschiedlichen
Computer zugreifen können,
sogar gleichzeitig auf einen beliebigen bestimmten Computer. Der
einzelne Prozessor stellt Verarbeitungsfähigkeiten bereit und erlaubt
es dem bevorzugten KVM-Verteiler, die Benutzeranschlüsse und
Computeranschlüsse
mittels Unterbrechungsroutinen abzufragen, um die nächsten verfügbaren zu
verteilenden Daten zu erlangen.
-
Bei
einer beispielhaften Ausführungsform
stellt der KVM-Verteiler auch Zugriff für einen Benutzer bereit, der
lokal bezüglich
des Verteilerkastens ist und Zugriff für einen weiteren Benutzer,
der entfernt von dem Verteilerkasten ist. Bei dieser alternativen
Ausführungsform
kommuniziert der entfernte Benutzer mit dem Verteilerkasten vorzugsweise
mittels eines CAT5 Kabels, welches mit einem integrierten Verlängerungsprodukt
innerhalb des KVM Verteilerkastens und einem externen Verlängerungsprodukt
nahe der Benutzerstation kommuniziert. Selbstverständlich kann
der KVM-Verteiler ein optisches Faserkabel, einen integrierten Wellenleiter oder
eine drahtlose Verbindung an Stelle der CAT5 Verbindung einsetzen.
Die CAT5 Verbindung kann gemäß der US-Patentanmeldung
Nr. 08/971,223 ausgeführt
sein.
-
Mit
der Einzelprozessorarchitektur können
andere besondere Merkmale in dem bevorzugten KVM-Verteiler verwendet
werden. Diese beinhalten die Verwendung von FLASH-Speicher, um mehrere
verschiedene Default On-Screen-Display-Aktivierungs sequenzen und
OSD-Konfigurationen in den KVM-Verteiler zu laden. Das bedeutet,
verschiedene KVM Verteilerarten können das Pop-up On-Screen-Display-Menü mittels
unterschiedlicher Tastenanschlagsequenzen aufrufen. Der vorliegend
beschriebene FLASH-Speicher enthält
vorgegebene Sequenzen, die verwendet werden können, On Screen Displays gemäß voreingestellten Tastatursequenzen
aufzurufen, wobei die Sequenzen (und andere Konfigurationsparameter)
durch Herunterladen des FLASH Speichers geändert werden können.
-
Der
einzelne Prozessor stellt auch Lösungen
für spezielle,
mit der Bereitstellung von gleichzeitigem Zugriff zweier Benutzer
auf mehrere Computer verknüpfte
Probleme bereit. Beispielsweise beinhaltet die bevorzugte Ausführungsform
Lösungen,
mit denen ein einzelner Prozessor die Tastatur- und Taktleitungen
für acht
verschiedene Computeranschlüsse überwachen
kann. Weiterhin verwendet die bevorzugte Ausführungsform Vorkehrungen, verschiedene
Arten von Mausprotokollen zu behandeln, die existieren können, wenn
zwei verschiedene Mauscontroller mit einem gemeinsamen Computer
verbunden sind. Bei der bevorzugten Ausführungsform verwendet der KVM
ein hierarchisches Bewertungssystem für die Mäuse.
-
Diese
wie auch andere Ziele und Vorzüge
dieser Erfindung werden ganzheitlicher verstanden und gewürdigt durch
sorgsames Studium der folgenden ausführlichen Beschreibung einer
derzeit bevorzugten beispielhaften Ausführungsform der Erfindung im
Zusammenhang mit den begleitenden Zeichnungen, von denen:
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 eine
schematische Darstellung einer beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
2 eine
beispielhafte Ausführungsform
einer Verbindung von einem KVM-Verteiler
an einen PC gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
3 eine
schematische Darstellung einer weiteren beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
4 eine
schematische Darstellung einer Verlängerungseinrichtung gemäß der vorliegenden
Erfindung ist;
-
5 eine
schematische Darstellung der Verbindung zwischen einem KVM-Verteiler gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung und einer Arbeitsstation ist;
-
6 eine
schematische Darstellung einer beispielhaften Ausführungsform
mit gestaffelten KVM-Verteilern ist;
-
7 eine
beispielhafte Ausführungsform
der gestaffelten KVM-Verteiler aus 6 ist;
-
8 ein
elektrisches Blockschaltbild einer beispielhaften Architektur gemäß der vorliegenden
Erfindung ist;
-
9 ein
Mikroprozessor nach dem Stand der Technik ist, der in der beispielhaften
Ausführungsform von 8 verwendet
werden kann;
-
10 ein
Funktions-Blockschaltbild der Softwareeinrichtungen auf seiten der
Arbeitsstation des vorliegenden KVM-Verteilersystems ist;
-
11 ein
beispielhaftes Funktions-Schaltbild der Software auf seiten des
Computers des vorliegenden KVM-Systems ist;
-
12 eine
beispielhafte Speicherbelegung des Prozessors aus 8 ist;
-
13 ein
beispielhaftes elektrisches Schaltbild des FPGA aus 8 ist;
-
14 ein
Flussdiagramm von Funktionen einer beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
15 ein
Funktions-Blockschaltbild des seriellen Maushandlers gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
16 eine
beispielhafte Ausführungsform
eines Softwaremoduls für
den seriellen Anschluss gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
17 eine
beispielhafte Ausführungsform
des Softwaremoduls zur Kanalverteilung gemäß einer beispielhaften Ausführungsform
der vorliegenden Erfindung ist;
-
18 eine
schematische Darstellung eines Erkennungsverfahrens gemäß der vorliegenden
Erfindung ist, um das Anschließen
eines weiteren KVM-Verteilerproduktes
zu erkennen;
-
19 eine
Flussdiagramm-Darstellung des Tastaturdaten Routermoduls gemäß der vorliegenden Erfindung
ist;
-
20 eine
Flussdiagramm-Darstellung des Mausdaten Routermoduls gemäß der vorliegenden
Erfindung ist; und
-
21 eine
perspektivische Darstellung einer FLASH-Speichererweiterung gemäß der vorliegenden Erfindung
ist.
-
AUSFÜHRLICHE
BESCHREIBUNG DER DERZEIT BEVORZUGTEN AUSFÜHRUNGSFORM
-
Eine
typische Beispielinstallation der vorliegenden Erfindung ist in 1 gezeigt.
Dort beinhaltet ein System 1 einen KVM-Verteiler 2,
der eine Benutzer-Arbeitsstation 3 in relativer Nähe (beispielsweise
bis zu 30 Fuß entfernt)
zum KVM-Verteiler 2 versorgt. Die Arbeitsstation 3 beinhaltet
eine Tastatur 5, eine Maus 6 und einen Monitor 4.
-
Der
KVM-Verteiler 2 versorgt auch eine zweite Arbeitsstation 7,
die relativ weit entfernt von den KVM-Verteiler 2 sein
kann (beispielsweise bis zu 500 Fuß), wobei die Arbeitsstation 7 eine
Tastatur 9, eine Maus 10 und einen Monitor 8 beinhaltet.
Um die relative Distanz zwischen der Arbeitsstation 7 und
dem KVM-Verteiler 2 zu versorgen, schließt eine
Verlängerungseinrichtung 11 (die
unten ausführlicher
beschrieben wird) schnittstellenmäßig zwischen der Arbeitsstation 7 und
dem KVM-Verteiler 2 an. Die Verlängerung 11 ist mittels
einer langen Leitung 12 an den KVM-Verteiler 2 gekoppelt.
Die Leitung 12 kann bei einer bevorzugten Ausführungsform
ein CAT5-Kabel,
ein faseroptisches Kabel etc. sein.
-
Ein
KVM-Verteiler 2 kommuniziert im Betrieb Tastatur-, Video-
und Maussignale zu und von den Arbeitsstationen 3 und 7 und
einer Menge Computer 13. Jeder Computer 13 ist
an den KVM-Verteiler 2 mit Kommunikationsleitungen 14 gekoppelt.
-
In
dem Beispiel von 1 führt der KVM-Verteiler 2 eine
vollständige
2 × 8
Matrixverteilung durch, wobei beide Benutzer unabhängig voneinander
auf jeden der acht angeschlossenen PCs zur gleichen Zeit zugreifen
können.
-
Wie
unten detaillierter beschrieben, kann der Verteiler 2 auch
per FLASH aufgerüstet
werden, was bedeutet, dass die Firmware im Verteiler 2 zu
jeder Zeit mittels einer einfachen seriellen Verbindung zwischen einem
PC und dem KV-Verteiler aktualisiert werden kann.
-
Der
Verteiler 2 stellt im Wesentlichen unbeschränkte Unterstützung für verschiedene
Maustypen 6/10, verschiedene Tastaturtypen 5/9,
verschiedene Monitortypen 4/8 und verschiedene
Computertypen 13 bereit. Beispielsweise ist der Verteiler 2 kompatibel
mit IBM PC/AT und PS/2 Systemen, SUN Systemen, etc. Er ist auch
kompatibel mit VGA, SVGA, XGA und XGA-II Videosignalen. PS/2 und
SUN Tastaturen werden versorgt, gleichermaßen PS/2 Intellimouse, IBM
ScrollPoint, Logitech Mouse Man+, Logitech Marble+, Logitech Marble FX,
und Kensington Expert-Mäuse,
etc. Der Verteiler 2 stellt mit den VESA DDC2B-Standards
konforme plug-and-play Videosignale bereit.
-
Die
Verlängerungseinrichtung 11 kann
ein Empfänger
der Art sein, die von Cybex unter dem Namen „Longview" vertrieben wird, wie in 3 gezeigt.
Wie ebenfalls in 3 gezeigt, beinhaltet der Verteiler 2 eine entsprechende
Verlängerung 18 innerhalb
des Verteilers 2, um als ein Sender/Empfänger mit
der Verlängerung 11 über das
Kabel 12 zu kommunizieren. Die Kombination der eingebauten
Verlängerung 18 in
den Verteiler 2 erlaubt es dem entfernten Benutzer 7,
mit dem Verteiler 12 über
relativ lange Entfernungen (beispielsweise bis zu 500 Fuß) zu kommunizieren.
-
Der
Verteiler 2 weist die Fähigkeit
zur Mausübersetzung
auf, wobei die Maustypen 6/10 Datenprotokolle
verwenden können,
die unterschiedlich von einem zugeordneten Computer 13 sind,
in welchem Fall der Verteiler 2 das Mausprotokoll zwischen
dem ausgewählten
Computer 13 und der Maus 6/10 übersetzt.
Dies erlaubt es jeder Maus, mit jedem angeschlossenen PC zu funktionieren,
unabhängig
davon, ob der Computer notwendigerweise kompatibel mit dem speziellen
Maustyp ist.
-
Übereinstimmend
mit gängigen
auf dem Markt verfügbaren
KVM-Verteilern verwendet der Verteiler 2 beide „keep alive"-Merkmale, die es
den angeschlossenen Computern 13 erlauben, den Verteiler 2 mit
Energie zu versorgen, falls der Verteiler 2 einen Energieausfall
erfährt.
Dies verhindert, dass die angeschlossenen PCs 13 „sich aufhängen" und vermeidet den
Verlust von Zeit und Daten. Weiterhin verwendet der Verteiler 2 andere bekannte
Merkmale wie Sicherheit auf mehreren Ebenen, um den Serverzugriff
für jede
Art von Benutzer in dem System zu konfigurieren und kontrollieren,
mit einer Administratorfunktion, die Administratoren vollere Zugriffsprivilegien
und einzelnen Benutzern beschränkte
Zugriffsprivilegien wie lesenden Zugriff, lesenden/editierenden
Zugriff, etc. bereitstellt.
-
Der
Verteiler 2 kann On Screen Anzeigefähigkeiten verwenden, bei welchen
der Verteiler 2 mit einer On Screen Menüführung konfiguriert und gesteuert
werden kann. In dem On-Screen-Menü können Computerkanäle mit kundenspezifischen
Namen versehen und mittels eines graphischen Menüs ausgewählt werden. Untermenüs können es
dem Benutzer erlauben, die Kanalsuche in anderen Systemmerkmalen
zu konfigurieren und auszulösen.
Ein OSD-Konfigurations-Dienstprogramm erlaubt es dem Administrator
auch, eine Kanalliste mit definierten Benutzern und Zugriffsprivilegien
für ein
gesamtes System einfach zu konfigurieren und herunterzuladen. Dieses
Dienstprogramm liest und speichert auch eine gegenwärtige Konfiguration
zur zusätzlichen
Sicherheit ab.
-
Ein
Autoboot-Merkmal im Verteiler 2 bootet alle angeschlossenen
Computer 13 während
eines ersten Hochfahren oder nach einem Energieausfall. PCs 13 werden
transparent ohne jeden Anwendereingriff gebootet und können einer
nach dem anderen oder alle gemeinsam hochgefahren werden. Hat sich
die Energieversorgung stabilisiert, kann ein Kanal von einem Benutzer
einer Arbeitsstation 3/7 ausgewählt werden.
-
Ein
eingebautes Abtastmerkmal des Verteilers 2 erlaubt es dem
Benutzer, PCs 13 ohne Eingriff automatisch zu überwachen
oder abzutasten. Wird eine Tastaturaktivität ermittelt, wird das Abtasten
ausgesetzt bis alle Aktivität
beendet wird, woraufhin das Abtasten mit dem nächsten Kanal und der nächsten Reihenfolge
fortgefahren wird.
-
Die
Verbindungen zwischen dem Verteiler 2 und den Computern 13 sind
in 2 veranschaulicht. Dort ist einer der Computer 13,
namentlich Computer 13a, als mit dem Verteiler 2 über ein
Kabel 14 verbunden veranschaulicht. Der Computer 13a ist ein
Standard-Anwendercomputer mit Tastatur- und Mausanschlüssen 15 und
einer Videokarte mit externen Videoanschlüssen 16. Das Kabel 14 beinhaltet
Standard-Tastatur-
und Mausverbinder zum Verbinden mit Tastatur- und Mausanschlüssen 15 und
ein Standard-Video-Monitorkabel, zur Verbindung mit dem Videoanschluss 16.
An einem gegenüberliegenden
Ende des Kabels 14 sind die Kabel mit einem Computeranschluss 29A des
Verteilers 2 verbunden. Acht Computeranschlüsse sind
in dem in 2 veranschaulichten Verteiler 2 bereitgestellt,
obwohl jede Anzahl weiterer Anschlüsse durch die vorliegende Erfindung
unterstützt
werden kann, was lediglich von der gewünschten Architektur abhängt. Daher kann,
obwohl in den 1 und 2 der 2 × 8 Verteiler
für veranschaulichende
Zwecke verwendet wird, jede andere Kombination von Benutzeranzahlen
und Computeranzahlen von dem Verteiler 2 versorgt werden.
-
Unter
Benutzung der Verbindungen von 2 stellt
der Verteiler 2 Tastatur-, Maus- und Monitorsignale mittels des Anschlusses 29A dem
Computer 13A über
das Kabel 14 bereit. Der Computer 13A empfängt die Tastatur-,
Maus- und Videosignale (und überträgt auch
passende Signale an den Verteiler 2), so dass der Computer 13A sich
dessen nicht bewusst ist, dass er mit einem KVM-Verteiler 2 statt
einem tatsächlichen
Tastatur-, Video- und Mausperipheriegerät spricht. Daher stellt der
Verteiler 2 den Tastatur-, Maus- und Videoprotokollen, die
von dem Computer 13A während
seines Bootens verlangt werden, die passenden Initialisierungsprozeduren
bereit.
-
Obwohl
nicht in 2 gezeigt, kann das Kabel 14 weitere
alternative Enden für
andere Arten von Mäusen
und Tastaturen beinhalten, so dass das Kabel 14 ein Standardkabel
für mehrere
verschiedene Arten von Tastatur-/Maus-Videoanschlüssen sein
kann. Daher kann das Kabel 14 bei einer beispielhaften
Ausführungsform
einen 25 poligen „D" Verbinder an dem
mit dem Anschluss 29A verbundenen Ende tragen. Das andere Ende
des Kabels 14 kann bei dieser beispielhaften Ausführungsform
fünf Verbinder
besitzen: einen 15-poligen „HDD" Verbinder für Video
(um den Videoanschluss 16 anzuschließen), einen 5-poligen/6-poligen
Mini-DIN-Verbinder für
eine AT oder PS/2 Tastaturverbindung und einen 9-poligen seriellen/6-poligen
Mini-DIN-Verbinder
für eine
serielle oder PS/2 Mausverbindung. Der PS/2 Mausverbinder kann durch
eine passende Markierung gekennzeichnet sein. Dann werden nur diejenigen
Tastatur- und Mausverbinder, die für den PC 13 passend
sind, mit den Anschlüssen 15 verwendet,
und die verbleibenden Verbinder bleiben unverbunden.
-
Die
Verbindungen von 2 werden dann für jeden
der in 1 gezeigten Computer 13 wiederholt, indem
sie jeweils an den Anschlüssen 29A, 29B etc.
des Verteilers 2 angebracht werden. 2 zeigt
daher die Verbindungen zwischen dem Verteiler 2 und den
Computern 13. Auf der anderen Seite des Verteilers sind die
Verbindungen zwischen den lokalen Benutzern 3 und dem Verteiler 2 in 5 gezeigt.
Dort beinhaltet der Verteiler 2 die Sektion 28 für lokale
Benutzerverbindungen, welche die Tastatur-/Video-/Mausverbindungen von
Arbeitsstation 3 versorgen. Ein Kabel der Tastatur 5 ist
in 5 als PS/2 Tastaturkabel 25 gezeigt,
welches mit dem Tasturanschluss 26 des Verteilers 2 verbunden
ist. Die Maus 6 verwendet ein PS/2 Mauskabel 26, welches
in den Mausanschluss 25 des Verteilers 2 eingesteckt
ist. Der Monitor 4 schließlich beinhaltet ein VGA-Monitorkabel 27,
welches mit dem Videoanschluss 27 des Verteilers 2 verbunden
ist. Die Kombination der in die lokale Benutzersektion 28 des
Verteilers 2 eingebundenen Kabel 25, 26 und 27 stellt
die in 1 zwischen der Arbeitsstation 3 und dem
KVM-Verteiler 2 gezeigten Verbindungen bereit.
-
Daher
werden im Betrieb Tastatur- und Maussignale von der Tastatur 5 und
der Maus 6 der Benutzerstation 3 direkt an den
KVM-Verteiler 2 in die Anschlüsse 25 und 26 gesendet.
Der Verteiler 2 empfängt
die Tastatur-/Maussignale, führt
geeignete Übersetzungen
durch und liefert sie an den ausgewählten Computer 13A mittels
des Kabels 14 an die Anschlüsse 15 (2).
Der Computer 13A reagiert auf die an seinem Anschluss 15 empfangenen
Tastatur- und Maussignale und erstellt eine neue Anzeige als Antwort
auf die Tastatur-/Maussignale, wobei die Videosignale von Anschluss 16 durch
Kabel 14 dem Verteiler 2 bereitgestellt werden.
Der Verteiler 2 führt
dann geeignete Videoübersetzungen
durch und liefert die Videosignale an Anschluss 27 (5)
auf Kabel 27 aus, welches die Videosignale an den Monitor 4 liefert.
-
Der
entfernte Benutzer 7 verbindet sich ebenfalls mit dem Verteiler 2,
tut dies jedoch gemäß der in 4 gezeigten
Beschreibung. Wie in 4 gezeigt, ist ein Standard-Kategorie-5 nicht
abgeschirmtes verdrilltes Leitungspaar (bis zu 500 Fuß) von einem
RJ-45-artigen modularen Stecker 30 (5) an der
entfernten Benutzersektion 29 des Verteilers 2 eingesteckt.
Bei einer bevorzugten Ausführungsform
sollte, wenn ein Kategorie-5 Kabel verwendet wird, das Kabel gemäß des allgemein
für 10-Base
T Ethernet verwendeten Standards EIA (TIA) 568B terminiert
werden, obwohl andere Arten von Anschlüssen und Kabeln von der vorliegenden
Erfindung in Erwägung
gezogen werden.
-
Wie
in 4 gezeigt, ist das CAT-5 Kabel 12 mit
der Verlängerung 11 verbunden,
welche auch einen Tastaturanschluss 22, einen Mausanschluss 23 und
einen Videoanschluss 24 beinhaltet. Das Tastaturkabel 19 von
Tastatur 9 verbindet mit dem Tastaturanschluss 22 der
Verlängerung 11,
das Mauskabel 20 verbindet mit dem Mausanschluss 23 der
Verlängerung 11 und
das Videokabel 21 vom Monitor 8 verbindet mit
dem Videoanschluss 24 der Verlängerung 11. Die Verlängerung 11 stellt
Langstrecken-Übertragung/Empfang
für Peripheriegeräte bereit.
Bei einer bevorzugten Ausführungsform
ist die Verlängerung 11 ein
von Cybex Computer Products Corporation in Huntsville, Alabama,
vertriebener Longview Sender/Empfänger.
-
Wenn
mehr als acht Computer 13 mit Hilfe des Verteilers 2 der
bevorzugten Ausführungsform
(2 × 8) eingesetzt
werden sollen, kann die kaskadierte Ausführung der 6 und 7 verwendet
werden. Wie in 6 gezeigt, verbindet der Verteiler 2 mit
der entfernten Station 7 und der lokalen Station 3,
wie zuvor unter Bezug auf die 2 bis 5 beschrieben.
Der Verteiler 2 verbindet auf die gleiche, oben beschriebene
Weise auch mit Computern 13A bis 13C. Um es den
Arbeitsstationen 3 und 7 zu erlauben, mit mehr
als acht Computern zu kommunizieren, wird der Verteiler 2 kaskadiert,
indem zwei zusätzliche
Verteilereinheiten 31 und 32 mittels Kommunikationsleitungen 33 und 34 verbunden
werden. Der Verteiler 31 koppelt mit den zusätzlichen Computern 35A bis 35C,
und der Verteiler 32 koppelt mit den zusätzlichen
Computern 36A bis 36C. Wie in 6 gezeigt,
erlaubt es die kaskadierte Anordnung den Benutzern 3 und 7,
mit mehr Computern zu kommunizieren, als es ein einzelner Verteiler 2 erlauben
kann.
-
Bei
der kaskadierten Ausführungsform
von 6 waren die Verteiler 2, 31 und 32 auf
die in 7 gezeigte Weise verbunden. Der Verteiler 2 beinhaltet
die Computeranschlüsse 29A etc.
(vgl. 2), die mit den Computern 13A bis 13C verbunden
sind. Bei der kaskadierten Anordnung ist einer der Computeranschlüsse des
Verteilers 2 mit dem kaskadierten Verteiler 31 mittels
des Kabels 33 gekoppelt. An einem Ende des Kabels 33 verbindet
ein Koppler mit einem der Computeranschlüsse 29A und das andere
Ende des Kabels 33 koppelt mit der lokalen Benutzersektion 28 des
Verteilers 31 auf die gleiche Weise wie in 5 gezeigt.
Die jeweiligen Verteiler 2, 31, 32 etc.
erkennen einander an ihren Computeranschlüssen 29A in einer
Weise, die später
unter Bezug auf 18 erklärt werden wird. Falls daher
Benutzer 3 (6) den Computer 36A auszuwählen wünscht, wird
der Verteiler 2 wissen, dass Computer 36A dem
Verteiler 32 zugeordnet ist und wird alle Tastatur-/Video-/Maus-Signale
an den Verteiler 32 mittels des Kabels 34 zur
Verteilung an den Computer 36A übermitteln. Für den Benutzer
der Arbeitsstation 3 ist der Transfer vollständig transparent.
-
Bei
jeder der Ausführungsformen
der 1 bis 7 können die Computer von den Benutzern
mittels fester Knöpfe
auf dem Verteiler, einer Hot-Key-Abfolge oder einer On Screen Display-Auswahl
umgeschaltet werden.
-
Wieder
Bezug nehmend auf 1, können die Benutzer der beiden
Arbeitsstationen 3 und 7 aus Gründen, die
nach der unten stehenden Besprechung der Architektur (Software und
Hardware) verständlich sein
werden, auf jeden der Computer 13 unabhängig voneinander zur selben
Zeit zugreifen. Die Arbeitsstationen 3 und 7 können auch
einen Zugriff auf einen beliebigen der Computer 13 durch
den Verteiler 2 teilen. In der Situation des Teilens sehen
beide Arbeitsstationen 3 und 7 einen Computerkanal
zur selben Zeit auf einem jeweiligen Monitor 4 und 8.
Der Verteiler 2 stellt sicher, dass nur eine Arbeitsstation 3/7 zu
jedem Zeitpunkt ihre Daten durch die Tastatur 5/9 oder
Maus 6/10 eingibt, um ein „sich Aufhängen" zu vermeiden. Sobald jedoch die aktive
Arbeitsstation eine Tastatur- und Mausaktivität beendet, kann die andere
Arbeitsstation die Steuerung des Computers übernehmen und Daten durch ihre
Tastatur und Maus eingeben. Auf diese Weise haben beide Arbeitsstationen 3 und 7 unmittelbaren
und geteilten Zugriff auf alle Computer 13 (mit der Einschränkung, dass
der Verteiler 2 absolut simultane Dateneingaben in den
gleichen Computer im gleichen Moment verhindern wird).
-
Der
Verteiler 2 schließt
eine Vielzahl von Merkmalen ein, die im Lauf der Zeit Aufrüstungen
verlangen. Beispielsweise werden OSD-Konfigurationsparameter für bestimmte
Benutzer im Abschnitt "OSD
Configuration Utility" der
U.S. Patentanmeldung Nr. 60/132,926 (welche vorstehend durch Inbezugnahme
aufgenommen wurde) beschrieben und beinhalten Parameter wie Kanalnamen,
Anzeigepositionierung und – attributierung, Anzeigeverweilzeiten
pro Kanal, erforderliche Flag-Antworten pro Kanal, Benutzernamen,
Benutzerpassworte, Benutzer-Login-Zeitüberschreitungen, Benutzerzugriffsbeschränkungen
etc. Die Konfigurationsparameter können sogar im Lauf der Zeit
aktualisiert und verändert
werden, so dass neue und verbesserte Konfigurationsparameter verwendet
und vom KVM-Verteiler aktiviert werden können. Während diese neuen Konfigurationsprotokolle
entwickelt werden, kann die vorliegende Erfindung, wie in 21 gezeigt,
FLASH-Speicher auf dem Verteiler 2 bereitstellen, um es
zu erlauben, die Firmware des Verteilers 2 aufzurüsten. Um
den FLASH-Code auf dem Verteiler 2 aufzurüsten, kann
neue FLASH-Firmware von dem Computer 111 auf den Verteiler 2 mittels
eines Kabels 108 heruntergeladen werden. Das Kabel 108 ist
ein serielles Kabel, welches den PC 111 mit dem Verteiler 2 zwischen
einem Konfigurationsanschluss 109 am Verteiler 2 und
einem seriellen Anschluss 110 am Computer 111 verbindet.
Der Computer 111 verwendet irgendeine Form von Terminalsoftware,
um es dem Computer zu erlauben, mit dem Verteiler 2 zu
kommunizieren. Jede kommerziell verfügbare Terminalsoftware kann
genügen.
Die FLASH-Aufrüstung
wird allgemein durch das On Screen Display-Menü des Vertei lers 2 durch
Aktivierung eines Menüpunktes
für das
FLASH Aufrüsten
aktiviert. Die FLASH-Datei von dem Computer 111 wird allgemein
als eine Textdatei an den Verteiler 2 übermittelt.
-
Selbstverständlich muss
das Aufrüsten
des Verteilers 2 nicht von dem PC 111 auf den
Verteiler erfolgen, sondern kann mittels jeder anderen Art von Kommunikationsmitteln,
wie durch ein Netzwerk (mittels des Anschlusses 109), mittels
eines Internets, mittels eines IR-Transfers etc. erfolgen.
-
8 veranschaulicht
eine beispielhafte Hardwarearchitektur eines KVM-Verteilers gemäß der vorliegenden
Erfindung. In 8 ist der Verteiler 37 als
eine Einzelprozessorarchitektur ausgeführt. Bei der Ausführungsform
von 8 kann der Verteiler 37 in dem KVM-Verteiler 2 aus 1 verkörpert sein.
In einem solchen Fall kommunizieren die Arbeitsstationen 3 und 7 mit
dem KVM-Verteiler 37 genau so wie sie mit dem KVM-Verteiler 2 in 1 kommuniziert
haben. Signale von der Arbeitsstationstastatur 5/9,
der Maus 6/10 und dem Videomonitor 4/8 der
Arbeitsstationen 3/7 werden dem Verteiler 37 mittels
der Leitungen 25/26/27 (5)
und 11/12 (1) bereitgestellt.
Die Arbeitsstationssignale werden dem einzelnen Prozessor 38 bereitgestellt.
Der Prozessor 38 kann bei einer beispielhaften Ausführungsform
ein Prozessor der Siemens 167-Familie, wie der Siemens C163-16F
Prozessor, sein. Der Prozessor 38 kann bei der beispielhaften
Ausführungsform
von 8 FLASH-Speicher und lokales RAM beinhalten. Der
Durchschnittsfachmann wird verstehen, dass zusätzlicher RAM-Speicher 39 und
EEROM Speicher 40 ebenfalls mit dem einzelnen Prozessor 38 kommunizieren,
um zusätzlichen
externen Speicher bereitzustellen.
-
Zwischen
dem einzelnen Prozessor 38 und den PCs 13 ist
ein FPGA 41. Im FPGA ist eine Computer-I/O 42 vorgesehen,
die Eingabe-/Ausgabeschnittstellen zwischen dem Prozessor 38 und
den PCs 13 bereitstellt, wie unten detaillierter beschrieben
wird. Das FPGA 41 stellt auch einen Sync-Generator 43 zur
Synchronisation des OSD-Subsystems 44 dem
Prozessor 38 bereit. Das OSD-Subsystem 44 kann
ein Standard Motorola OSD-Chip sein. Ein Video-Subsystem 45 empfängt Videosignale
direkt von den PCs 13 und gibt sie in den Prozessor 38 mit
passend darüber
gelegten OSD-Menüs aus dem
OSD-Subsystem 44 ein.
-
Im
Betrieb werden Tastatur- und Maussignale von den Arbeitsstationen 3/7 an
den Prozessor 38 mit einem oder mehreren PCs 13 als
Bestimmungsorte bereitgestellt. Der Prozessor 38 legt die
Tastatur- und Maussignale an die passenden PC-Anschlüsse für die PCs 13 mittels
der Computer-I/O 42 an. Währenddessen werden Videosignale von
den PCs 13 von den PC-Anschlüssen des Verteilers 2 empfangen
und an das Videosubsystem 45 eingegeben. Das Subsystem 45 stellt
dem Prozessor 38 Videosignale bereit, welcher diese an
die geeigneten Leitungen 27 oder 12 für die Zieladressen
der Videomonitore 4 oder 8 anlegt. Selbstverständlich wird
das OSD-Subsystem 44, falls ein OSD-Menü aktiviert worden ist, das
OSD-Menü an
das Videosubsystem 45 bereitstellen, welches die Menüs über das
von den PCs 13 gerade bereitgestellte Signal überschreibt.
-
Wie
später
detaillierter beschrieben wird, ist die Architektur 37 dadurch
neu, dass der Prozessor 38 nicht nur als ein Matrix-Verteiler
wirkt, der "festverdrahtete" Verbindungen zwischen
den Arbeitsstationen 3/7 und den ausgewählten PCs 13 bereitstellt.
Stattdessen wird es der Prozessor 38 erlauben, beide Arbeitsstationssignale 3/7 sogar
von einem einzelnen PC 13 zu empfangen. Dies erlaubt es
zwei verschiedenen Benutzern, auf den gleichen PC zur selben Zeit
zuzugreifen und Tastatur- und Mauszugriff auf den selben PC einzusetzen.
Daher erlaubt es die vorliegende Architektur und Methodologie, im
Gegensatz zu einem reinen Matrix-Verteiler, bei dem eine Arbeitsstation
mit einem PC kommuniziert und eine andere Arbeitsstation mit einem anderen
PC kommunizieren kann, einem einzelnen Prozessor, geteilten Zugriff
und geteilte Kontrolle zwischen mehreren Arbeitsstationen in einem
einzelnen PC bereitzustellen, sowie zwischen mehreren Arbeitsstationen und
den jeweiligen unabhängigen
PCs.
-
9 veranschaulicht
eine beispielhafte Ausführungsform
des Prozessors 38, namentlich die Siemens C163-16F Prozessorarchitektur.
Der in 9 gezeigte Prozessor ist ein bekannter Prozessor,
der auf die neuartige Weise von 8 angewendet
wird. Der Prozessor von 9 ist gezeigt und beschrieben
im Siemens Datenblatt Microcomputer Components, 16-bit SMOS Microcontroller
C163-16F, veröffentlicht
am 1. 11. 1997. Da die grundsätzliche
Wirkungsweise des Mikrocontrollers 38 dem Durchschnittsfachmann
aus einer Durchsicht von 9 und des Siemens-Datenblattes
sofort ersichtlich sein wird, ist aus Gründen der Kürze nur eine kurze Zusammenfassung
der Funktionen des Mikrocontrollers unter Bezugnahme auf 9 nachstehend
beschrieben. Im Prozessor 38 stellt eine CPU 46 zentrale
Verarbeitungsfunktionen bereit. Der FLASH-Speicher, auf den schon
vorher verwiesen wurde (unter Bezugnahme auf 8), ist
in einem Puffer 47 geführt,
der mit der CPU 46 und dem Interrupt-Controller 52 kommuniziert.
Alternativ hierzu kann der FLASH-Speicher extern bezüglich des
Prozessors 38 sein und immer noch innerhalb des Bereichs
der derzeit angedachten Erfindungen liegen. Internes RAM (ebenfalls
vorher beschrieben unter Bezugnahme auf 8) ist in 9 als
ein mit der CPU 46 und dem Interrupt- Controller 52 kommunizierendes
Element 53 gezeigt. Der Watchdog Schaltkreis 54 ist
ebenfalls in Kommunikation mit der CPU 46 und dem Interrupt-Controller 52 bereitgestellt.
Der Mikrocontroller beinhaltet mehrere I/O-Anschlüsse 50.
Port0, Port1 und Port6 stellen eine bidirektionale Kommunikation
von externen Geräten
an die CPU 46 mittels eines externen Busses 51 und
eines externen Instruktionsdatenbusses bereit. Taktgenerierung wird über eine
PLL 48 mittels entweder direktem oder vorher geteiltem
Takteingang bereitgestellt. Zwei multifunktionale allgemeine Timer
("GPT")-Einheiten 55 und 56 sind
mit 5 Timern T2–T6
bereitgestellt. Jede GPT-Einheit 55/56 stellt
eine flexible multifunktionale Timer/Zähler-Struktur dar, die für verschiedene
zeitbezogene Aufgaben wie Ereignis-Zeitmessung, zählende Sync-Erzeugung
etc. verwendet wird. Eine serielle Kommunikation mit anderen Mikrocontrollern,
Prozessoren, Endgeräten
oder externen Peripheriekomponenten wird durch den asynchronen/synchronen
seriellen Kanal ASC des USART57 und synchronen seriellen Anschluss
SSP 49 bereitgestellt.
-
Der
Interrupt Controller 52 stellt eine sehr schnelle Unterbrechungs-Antwortreaktion
auf Serviceanforderungen bereit, die von verschiedenen Quellen intern
oder extern des Mikrocontrollers generiert werden können. Jede
dieser Unterbrechungsanforderungen kann programmiert werden, um
von dem Interrupt-Controller oder von dem Peripherie-Event-Controller
(PEC) behandelt zu werden.
-
Im
Mikroprozessor 38 wird die laufende Programmausführung während einer
Verzweigung auf die Unterbrechungsvektortabelle nicht ausgesetzt.
Stattdessen wird ein Zyklus der momentanen CPU 46-Tätigkeit verwendet,
um einen PEC-Dienst durchzuführen.
Ein PEC-Dienst beinhaltet einen Ein-Byte- oder Ein-Wort-Datentransfer
zwischen zwei beliebigen Speicherplätzen mit einem zusätzlichen
Inkrement entweder des PEC-Quell- oder des Zielzeigers. Ein eigener
PEC-Transferzähler
wird implizit für
jeden PEC-Dienst dekrementiert, außer wenn im fortlaufenden Transferbetrieb
verfahren wird. Wenn dieser Zähler
Null erreicht, wird eine Standard-Unterbrechung auf den zugeordneten
quellbezogenen Vektorort durchgeführt. PEC-Dienste sind sehr
gut geeignet, um beispielsweise die Übertragung oder den Empfang
von Blöcken
von Daten zu unterstützen.
Der C163-16F hat 8 PEC Kanäle,
von denen jeder solche schnellen unterbrechungsgesteuerten Datentransfermöglichkeiten
bietet.
-
Ein
eigenes Kontrollregister, welches ein Unterbrechungs-Anforderungs-Flag,
ein Unterbrechungs-Einschalt-Flag und ein Unterbrechungs-Prioritäts-Bitfeld
enthält,
existiert für
jede der möglichen
Unterbrechungsquellen. Mittels ihres zugeordneten Registers kann
jede Quelle auf eine von sechzehn Unterbrechungsprioritätsstufen programmiert
werden. Sobald sie von der CPU akzeptiert worden ist, kann eine
Unterbrechungsbehandlung nur durch eine höher priorisierte Unterbrechungsbehandlungsanforderung
unterbrochen werden. Für
die normale Unterbrechungsbearbeitung hat jede der möglichen
Unterbrechungsquellen einen zugeordneten Vektorort.
-
In
dem Prozessor 38 ist der FLASH-Speicher des Puffers 47 ein
On-Chip FLASH Modul mit einer Kapazität von 128 KByte. Es kombiniert
die Vorzüge
eines sehr schnellen Lesezugriffs von 32 Bits in einem Maschinenzyklus
mit schützenden
aber einfachen Schreibe-Aus-Zyklen („Writing Out Rhythmus") zum Programmieren
und Löschen.
Lesezugriffe auf Code und Daten sind in jedem Adressierungsbetrieb
möglich,
wodurch die höchste
CPU-Performanz mit dem Holen von Doppelwort-Instruktionen in einem
einzelnen Zyklus realisiert wird. Der FLASH-Speicher im Puffer 47 ist
besonders nützlich
bei der vorliegenden Erfindung, um das zuvor unter Bezugnahme auf 21 beschriebene
FLASH-Aufrüsten
der OSD-Firmwareänderungen
durchzuführen.
-
Wie
in 12 gezeigt, ist der Prozessor 38 in einer
Von-Neumann-Architektur konfiguriert, was bedeutet, dass auf Code
und Daten innerhalb des selben linearen Adressraums zugegriffen
wird. In dem Beispiel von 12 sind
alle physisch getrennten Speicherregionen inklusive FLASH, RAM und
PLD in einen gemeinsamen Adressraum abgebildet. In dem Beispiel
von 12 ist der Adressraum von 16 Megabyte als 256
Segmente von jeweils 64 Kilobyte angeordnet. Jedes Segment ist eingeteilt
in 4 Datenseiten zu je 16 Kilobyte. Daher ist der externe FLASH/ROM-Speicher
auf die Segmente 0–3,
das externe RAM auf die Segmente 4–5, das PLD auf das Segment
6 und das optionale vierfache UART (für SUN-Daten) auf das Segment
7 abgebildet. Der Prozessor 38 ist so konfiguriert, dass
jedes Chip Select-Signal auf bis zu 256 Kilobyte Adressraum zugreifen
kann.
-
Als
Nächstes
ist die in dem Prozessor 38 umzusetzende Softwarearchitektur
beschrieben. Die Software erlaubt es durch Verwendung eines einzelnen
Mikroprozessors, der eine zeitgesteuerte Unterbrechung verwendet,
um periodisch die Software zu veranlassen, die Anforderungen (RTS)
von einem oder allen der mehreren Computer abzufragen und zu behandeln,
dass mehrere Computer gleichzeitig hochgefahren werden. Die Software
kann erweitert werden, um 4, 8, 16 oder jede andere Anzahl von Computern
mittels des einzigen Mikroprozessors zu unterstützen.
-
Die
Software ist in einer abgeteilten Weise ausgeführt, so dass Grenzen zwischen
Softwarekomponenten den Grenzen zwischen getrennten physischen Hardwarekomponenten
sehr ähnlich
sind. Hier wird die Bezugnahme auf den "Handler" als eine Bezugnahme auf Software verwendet,
die von der Hauptaufgabenschleife aufgerufen wird, um eine modulspezifische
Verarbeitung zu erlauben. Der Ausdruck "application programming interface (API)" bezieht sich auf
einen zur Kommunikation zwischen Handlern bereitgestellten Mechanismus.
-
Der
Prozessor
38 stellt das folgende Hauptaufgabeschleifenlisting
bereit. Diese Routinen sind nicht notwendigerweise in der richtigen
Reihenfolge.
| CheckScanButton
(leer); | (Aufgabe
#1) |
| CheckChannelButton
(0); | (Aufgabe
#2) |
| CheckChannelButton
(1); | |
| CheckChannelButton
(2); | |
| CheckChannelButton
(3); | |
| CheckChannelButton
(4); | |
| CheckChannelButton
(5) | |
| CheckChannelButton
(6) | |
| CheckChannelButton
(7) | |
| U1_KbdHandler(&kbd_hdlr[0]); | (Aufgabe
#3) |
| U1_KbdHandler(&kbd_hdlr[1]); | |
| U1_KbdHandler(&mse_hdlr[0]); | |
| U1_KbdHandler(&mse_hdlr[1]); | |
| CheckKbdDataRouterHandler(); | (Aufgabe
#4) |
| CheckMseDataRouterHandler(); | |
| CI_Handler(); | (Aufgabe
#5) |
| SerialMouseHandler(); | (Aufgabe
#6) |
| ChannelSwitchHandler(); | (Aufgabe
#7) |
| MenuProcess(); | (Aufgabe
#8) |
| CheckLEDs(); | (Aufgabe
#9) |
| TimerHandler(); | (Aufgabe
#10) |
-
Die
oben angeführten
Aufgaben sind unten ausführlicher
beschrieben.
-
Aufgabe
#4 wird von einem Tastaturdatenrouter-Modul ausgeführt, das
Tastaturdaten von der Peripherie an verschiedene Verbraucherregionen,
wie das OSD, das Hot Key- und das Computerinterface (CI) routet. 19 stellt
ein Flussdiagramm dieser Operationen dar.
-
Zuerst,
in Schritt 102, überprüft das Modul
den Tastatureingangspuffer, um zu bestimmen, ob Tastaturdaten von
einem Peripheriegerät
empfangen worden sind. Wenn Daten verfügbar sind, bestimmt es in Schritt 103,
ob die Daten mehrstufig sind. Ist das der Fall, so werden die Daten
direkt an die Computerschnittstelle (beispielsweise Computer I/O 42)
in Schritt 106 weitergeleitet. Falls nicht, so wird der
Tastaturstatus geprüft,
der Tastatur-OSD-Status in Schritt 104 geprüft, und
der Hot Key-Status in Schritt 105 geprüft. Falls die Tastendrücke von
den OSD-(Schritt 104) oder Hot Key-(Schritt 105)Abfragen
konsumiert werden, dann zeigen sich die Daten keinem der Computer.
Sind die Daten nach Schritt 105 verfügbar, so werden sie in Schritt 106 an
die Computerschnittstelle gesendet.
-
Selbstverständlich führt der
Prozessor geeignete Tastatur-Datenformat-Umsetzungen (wie Scan-Set 1,
2, 3 etc.) durch, um die gewünschten
Protokolle für
das OSD-Menü-Subsystem, für den gewählten PC
etc. anzupassen.
-
Aufgabe
#4 wird ebenfalls von einem Mausdaten-Router-Modul durchgeführt, welches
Mausdaten von dem Peripheriegerät
an verschiedene Verbraucherregionen wie das OSD und das CI (Computer
Interface) routet. 20 veranschaulicht ein Flussdiagramm
dieser Prozesse. In Schritt 107 überprüft das Modul den Mausempfangspuffer,
um festzustellen, ob Mausdaten von einem Peripheriegerät empfangen
worden sind. Der Prozessor prüft
in Schritt 104, um zu bestimmen, ob die Mausdaten ein OSD-Menü beantworten.
Ist dies der Fall, kann das OSD-Subsystem die Mausdaten konsumieren,
und die Verarbeitung endet. Falls nicht, werden die Mausdaten an
die Computerschnittstelle in Schritt 106 weitergeleitet.
-
PS/2
Maus-Peripheriegeräte
können
Datenpakete in zahlreichen Formaten ausgeben. Die Standard-2/3-Tasten-Maus
sendet Dreibytepakete an das System. Die Schaffung des „Wheels" in der Microsoft
Intellimouse hat jedoch das Vierbytedatenpaket bedingt, wobei das
vierte Byte die Drehung des Rades anzeigt. Weiterhin haben Logitechs
MouseMan+ and IBMs Scrollpoint ihre eigene Radeinrichtung umgesetzt,
jedoch tun sie dies, indem sie zu einem Dreibytepaket zurückkehren
und die Overflowbits in Byte 1 verwenden, um die Drehung des Rades
anzuzeigen.
-
Es
ist ein Ziel dieser beispielhaften Ausführungsform der Erfindung, dass
die Peripherieseite nicht in Kenntnis von der PC-Seite bezüglich Peripheriegeräten vs.
PC-Gerätetreibern
sein muss. Mausdaten müssen die
Einheit oder Stufen von Einheiten, die all die Daten enthalten,
die von den Peripheriegeräten
empfangen wurden, durchlaufen, und zwar unbeachtet ihrer Fähigkeiten,
so dass das CI-Modul den ge wählten
PC-Treiber mit den passenden Daten versorgen kann. Es ist möglich, dass
die von den Peripheriegeräten
empfangenen Daten mehr Attribute enthalten, als der gegenwärtig ausgewählte PC-Treiber
benötigt.
Beispielsweise wird ein Intellimouse Peripheriegerät Raddaten
(vier Bytes) senden, aber ein Standard-PS/2-Maustreiber auf dem
ausgewählten
PC kann nur drei Byte konsumieren. Aufgrund der Unvorhersagbarkeit
der PS/2 Mausindustrie stellt die gegenwärtige Ausführungsform ein Fundament dar,
um die derzeit existierenden Mäuse
und auch zukünftige
aus der Perspektive ihrer Paketlänge
zu versorgen.
-
Alle
Mausdaten, die von der vorliegenden Verteilereinheit (gemäß dieser
beispielhaften Ausführungsform)
an eine gestufte („tiered") oder gepaarte Einheit
kommuniziert werden, werden dies im folgenden Paketformat:
-
Die
gesamte Paketlänge
ungeachtet der Art ist sechs Byte.
-
Ein
User Interface-(UI) Modul verarbeitet den Empfang der Daten von
und Anweisungen an die Peripheriegeräte für mehrere Benutzer; Fehlerverarbeitung,
Initialisierung und Konfiguration. Ein Beispielmodul ist in 10 gezeigt.
Dort senden Tastaturen und Mäuse
von den Arbeitsstationen 3 und 7 Daten an die
Unterbrechungsbehandlungsroutine (ISR) 58. Handler-Funktionen
werden bei 59 durchgeführt,
welches mit der Benutzerschnittstelle API 60 schnittstellenmäßig koppelt.
Der gemeinschaftliche Datenbereich 61 wird für die ISR 58 und
den Handler 59 bereitgestellt.
-
Das
User Interface (UI)-API stellt eine Programmierschnittstelle bereit,
die dazu verwendet wird, mit Benutzer-Peripheriegeräten, sowohl
Tastaturen als auch Mauseinrichtungen, schnittstellenmäßig zu koppeln. Es
führt Funktionen
durch, indem es einen öffentlichen
Datentyp zum Austausch von Mausdaten zwischen dem UI, dem CI und
anderen interessierten Parteien verwendet. Ein Beispielformat kann
sein:
-
Das
User Interface API führt
die folgenden Funktionen durch:
- 1. U1_KbdHandler:
Diese Funktion wird wiederholt von der Hauptaufgabenschleife aufgerufen.
Sie ist dafür verantwortlich,
die Funktion der Tastatur für
alle Benutzeranschlüsse
zu initialisieren. Sie muss feststellen, ob eine Tastatureinrichtung
aktiv ist und fehlgeschlagene Tastaturschnittstellen zurücksetzen.
Sie muss auch die Anwesenheit eines ähnlichen, gestaffelten KVM-Verteilerproduktes
ermitteln und dies über
die öffentliche
API anzeigen. Sie ist verantwortlich dafür, den Status der Tastaturlichter
und Typematic-Raten den letzten von der API bereitgestellten Werten
nachzuführen.
Diese Funktion kann wahrscheinlich durch Verwendung eines Endlichen
Automaten bzw. einer „state
machine" umgesetzt
werden.
Parameter: keine.
Rückgaben: leer.
- 2. U1_KbdDataAvail: Diese Funktion bestimmt, ob wenigstens ein
Tastaturbyte im Tastaturpuffer verfügbar ist.
Parameter: userPort – ausgewählter Benutzeranschluss.
Rückgaben:
WAHR, falls Tastaturdaten verfügbar
sind, sonst FALSCH.
- 3. U1_KbdDataGet: Diese Funktion holt ein Tastaturbyte vom Tastaturpuffer
ab. Sie kann die Tastatur bei Bedarf als Folge des Abholens des
Bytes freigeben.
Parameter: userPort – gewählter Anschluss; kbdPtr – Adresse,
wo das Tastaturbyte hinzubringen ist.
Rückgaben: WAHR, falls Tastaturdaten
verfügbar
sind, sonst FALSCH.
- 4. U1_KbdproductType: Diese Funktion bestimmt, welche Art von
Gerät an
dem Tastaturanschluss angeschlossen ist, falls überhaupt eines angeschlossen
ist.
Parameter: userPort – gewählter Benutzeranschluss;
symbolischer Produkttypwert, der die Art der Tastatureinrichtung
angibt. Die folgenden Symbole sollten verwendet werden:
KBPROD_NONE,
KBPROD_KEYBOARD,
KBPROD_AUTOVIEW,
KBPROD_FALCON.
- 5. U1_KbdSetTypematic: Diese Funktion stellt die Tastatur-Typematic-Rate
ein und speichert diesen Wert zur späteren Benutzung, falls die
Tastatur durch Hot Plugging oder einen Tastaturfehler neu konfiguriert werden
muss.
Parameter: userPort – ausgewählter Benutzeranschluss;
Rate – Typematic
Rate, die verwendet werden soll.
Rückgaben: keine.
- 6. U1_KbdSetLightStatus: Diese Funktion stellt die Tastatur
ein und speichert diesen Wert zur späteren Verwendung ab, falls
die Tastatur durch Hot Plugging oder einen Tastaturfehler neu konfiguriert
werden muss.
Parameter: userPort – ausgewählter Benutzeranschluss; Lichter – zu verwendender
Lichterstatus. Bit 0 ist Scroll Lock, Bit 1 ist Num Lock, Bit 2
ist Caps Lock.
Rückgaben:
keine.
- 7. U1_KbdGetLightStatus: Diese Funktion holt die momentane Lichterstatus-Einstellung, die
verwendet wird, wenn die Tastatur des Benutzers konfiguriert wird.
Parameter:
userPort –ausgewählter Benutzeranschluss.
Rückgaben:
Bit 0 ist Scroll Lock, Bit 1 ist Num Lock und Bit 2 ist Caps Lock.
- 8. U1_KbdFlushBuffer: Diese Funktion löscht alle Tastenanschläge aus dem
lokalen Pufferspeicher und setzt ein Pufferlöschkommando an die angeschlossene
Tastatureinrichtung ab.
Parameter: userPort – ausgewählter Benutzeranschluss.
Rückgaben:
keine.
- 9. U1_KbdSendFeedback: Diese Funktion empfängt drei Byte EF-Feedback zur Übertragung
an die Tastatureinrichtung.
Parameter: userPort –ausgewählter Benutzeranschluss;
feedBack – Adresse
des 3-Byte-Puffers,
der die Feedback-Bytes enthält.
Rückgaben:
keine.
- 10. U1_MseHandler: Diese Funktion wird wiederholt von der Hauptaufgabenschleife
aufgerufen. Sie ist dafür
verantwortlich, den Mausbetrieb für alle Benutzeranschlüsse zu initialisieren.
Sie muss bestimmen, ob eine Mauseinrichtung aktiv ist und fehlgeschlagene
Mausschnittstellen zurückzusetzen.
Sie muss die Art der im Betrieb befindlichen Mauseinrichtung bestimmen
und in der Lage sein, diese über
die öffentliche
API anzuzeigen. Sie ist dafür
verantwortlich, den Lichterstatus und die Typematic-Raten der Tastatur
den letzten mittels der API bereitgestellten Werten nachzuführen. Diese
Funktion kann wahrscheinlich als Endlicher Automat ausgeführt werden.
Parameter:
keine;
Rückgaben:
leer.
- 11. U1_MseDataAvail: Diese Funktion bestimmt, ob wenigstens
ein Mauspaket im Mauspuffer verfügbar
ist.
Parameter: userPort – gewählter Benuzreranschluss;
Rückgaben:
WAHR, falls Mausdatenpaket verfügbar
ist, sonst FALSCH.
- 12. U1_MseDataGet: Diese Funktion holt ein Mauspaket aus dem
Mauspuffer ab. Sie kann bei Bedarf die Maus als Folge des Entnehmens
des Paketes freigeben.
Parameter: userPort – ausgewählter Benutzeranschluss; DataPtr – Adresse
des Mausdaten-Struct, wo das Mauspaket platziert wird.
Rückgaben:
WAHR, falls ein Mausdatenpaket verfügbar war, sonst FALSCH.
- 13. U1_MseProductTyp – Diese
Funktion bestimmt, welche Art von Gerät an den Mausanschluss angeschlossen
ist, falls überhaupt
eines angeschlossen ist.
Parameter: userPort – ausgewählter Benutzeranschluss.
Rückgaben:
Symbolischer Produktartwert, der die Art der Mauseinrichtung angibt.
Die folgenden Symbole sollten verwendet werden: MSPROD_NONE,
MSPROD_INTELLIMOUSE,
MSPROD_MOUSEMAN_PLUS,
MSPROD_MARBLE_PLUS,
MSPROD_MARBLE_FX,
MSPROD_SCROLL_POINT,
MSPROD_EXPERT_MOUSE.
- 14. U1_MseSetScaling: Diese Funktion stellt den Maus-Maßstabssfaktor
ein und speichert diesen Wert zur späteren Verwendung ab, falls
die Maus aufgrund von Hot Plugging oder eines Mausfehlers neu konfiguriert werden
muss.
Parameter: userPort – ausgewählter Benutzeranschluss;
Scaling – Maus-Maßstabseinstellung.
Rückgaben:
keine.
- 15. U1_MseSetResolution: Diese Funktion stellt die Mausauflösung ein
und speichert diesen Wert zur späteren
Verwendung ab, falls die Maus aufgrund von Hot Plugging oder eines
Mausfehlers neu konfiguriert werden muss.
Parameter: userPort – ausgewählter Benutzeranschluss;
resolution – Mausauflösungseinstellung.
Rückgaben:
keine.
- 16. U1_MseSetSampleRate: Diese Funktion stellt die Mausabtastrate
ein und speichert diesen Wert zur späteren Verwendung ab, falls
die Maus aufgrund von Hot Plugging oder eines Mausfehlers neu konfiguriert werden
muss.
Parameter: userPort – ausgewählter Benutzeranschluss;
resolution – Mausabtastrate.
Rückgaben:
keine.
-
Die
Tastatur- und Mausschnittstellen empfangen Daten über die
Unterbrechungsbehandlungsroutinen (ISR) 58. Sowohl die
Tastatur als auch die Maus haben solche ISRs, welche die folgenden
Funktionen durchführen:
- 1. KeyboardClockISR_UserA ..._UserB: MouseClock:
Dies ist eine Unterbrechungsbehandlungsroutine für die angeschlossenen PS2 Peripheriegeräte. Die
gleiche Philosophie wird für
jeden Benutzer verwendet, wobei jeder Benutzer einen eigenen ISR
hat, jedoch der gleiche Vektor verwendet wird, falls der PEC verwendet
wird. Diese Routine hat eine höhere
Priorität
als die PC-seitige Timerunterbrechung. Sie tritt an jeder Taktflanke
auf, außer
wenn PEC verwendet wird, dann tritt sie an jedem Byte auf. Diese
Routine ist bidirektional und kann Daten sowohl empfangen als auch
senden. Empfangene Daten werden in einen Empfangs- oder Antwortpuffer
gelegt. In diesem Beispiel muss die CI-weite ISR alle 40μs (durchschnittlicher Takt
gemäß der Spezifikation)
behandelt werden, also müssen
die UI-Peripheriegeräte
jeweils innerhalb von 10μs
behandelt werden, falls die vier Peripheriegeräte nacheinander unterbrechen.
Parameter:
leer.
Rückgaben:
leer.
-
Um
ein Befehlsbyte an die Peripheriegeräte zu übertragen, übersendet das UI ein Byte an
das Tastaturperipheriegerät
und stellt die Anzahl der erwarteten Antwort bytes ein. Es wartet
dann 40ms auf den externen, auf RTS bezogenen Takt (die Spezifikation
erfordert 10ms). Gemäß diesem
Beispiel ist die Tastatur für 150μs blockiert,
was die Tastatur veranlasst, die Kontrolle erforderlichenfalls aufzugeben
(maximaler Taktzyklus = 100μs,
die Beispielspezifikation verlangt ein Minimum von 60μs).
-
Um
eine 1-Byte-Antwort auf eine Anweisung von einem Peripheriegerät zu empfangen, überprüft das UI
20ms lang den Antwortpuffer, und vergleicht während dieser Zeit die Antwort
mit einem gewünschten
Ergebnis, welches vor der Übertragung
der Anweisung voreingestellt worden ist.
-
Auf
der Computerseite des Verteilers verarbeitet ein Computer Interface
(CI)-Modul für
bis zu acht Computer (in diesem Beispiel) den Empfang von Anweisungen
(RTS) vom PC und den Versand von Daten an den PC; die tatsächliche
Videokanalverteilung wird ebenfalls in diesem Handler durchgeführt. 11 veranschaulicht
das Computerschnittstellenmodul, welches das schnittstellenmäßig mit
Daten aus den Benutzerpfaden A und B (62 und 63)
koppelnde API 64, dem Handler 65 und die computerseitige
ISR (66) beinhaltet. Die ISR 66 erlaubt gleichzeitigen
Zugriff auf jeden Computer durch Liefern von Daten an und Empfangen
von Daten von jedem der PCs durch ein Timer-basiertes Abfragen des
PC-Anschlusses an den ISR 66.
-
Frühere Umsetzungen
von Tastatur- und Mausemulationen bedienten allgemein die Schnittstelle
unter Ausschluss jeder anderen Verarbeitung. In Fällen, in
denen die Tastatur- und Mausperipheriegeräte auch verarbeitet wurden,
wurde der Versuch unternommen, die Peripheriegeräte während der Zeiten zu blockieren,
zu denen emulierte Geräte
Taktzyklen generierten. Dies machte die Software fehleranfällig und
schwierig zu warten.
-
Die
vorliegende Ausführungsform
verwendet eine Technik zur Emulation mehrerer Computerkanäle gleichzeitig
mit der Verarbeitung von Softwareaufgaben niedriger Priorität und dem
Empfang von Tastatur- und Mausperipheriegeräte-Daten. Dadurch wird eine
gleichzeitige Taktgenerierung für
mehrere Kanäle
von Tastatur- und Mausemulationen bereit gestellt. Auch werden von
Tastatur- und Mausperipheriegeräten
empfangene Takte gleichzeitig mit der Generierung von Takten für die emulierten
Tastaturen und Mäuse
verarbeitet. Des Weiteren wird es Softwareaufgaben mit niedriger
Priorität
gestattet, weiterzulaufen, ohne Bedenken hinsichtlich der Echtzeit-Aspekte von emulierten
Tastaturen und Mäusen
und der Verarbeitung von Takten von Keyboard- und Mausperipheriegeräten.
-
Die
verwendete Hardware kann beinhalten:
- • Zwei parallele
Anschlüsse
mit offenen Kollektoren, wobei ein Anschluss mit den PS/2 Taktsignalen
der emulierten Tastaturen und Mäuse
verbunden ist und der andere Anschluss mit den PS/2 Datensignalen
der emulierten Tastaturen und Mäuse
verbunden ist.
- • Einen
programmierbaren Timer mit Unterbrechung, der zu Intervallen von
1ms fähig
und in 30μs-Intervallen
einstellbar ist.
- • Falls
gleichzeitige Verarbeitung von Peripheriegeräte-Takten gewünscht ist,
so werden flankensensitive Unterbrechungen für jedes Taktsignal eines Peripheriegerätes benötigt.
-
Gemäß dem Beispielalgorithmus
beginnt die gleichzeitige Tastatur- und Mausemulation mit einer 1ms-Timer-Unterbrechung
niedriger Priorität.
Das gesamte PS/2 Timing für
die emulierten Tastatur- und Mausanschlüsse wird zur Gänze innerhalb
der Timer-Unterbrechung generiert. Die Timer-Unterbrechung isoliert
die Hauptsoftwareaufgaben von Echtzeit-Belangen. Die Zeit, die zum
Verarbeiten der Timer-Unterbrechung benötigt wird, variiert zwischen
einigen 10 Mikrosekunden und einigen 10 Millisekunden. Die Timer-Unterbrechung ist
auf eine niedrige Priorität
eingestellt, so dass die Takte für
Peripheriegeräte
verschachtelte Unterbrechungen generieren können. Obwohl die Timer-Unterbrechung
unterbrechbar ist, kann sie nicht für lange Zeitspannen unterbrochen
worden. Während
der Zeit, in der die Timer-Unterbrechung eine PS/2 Takt-Zeitgebung
generiert, sollte sie im hier beschriebenen Beispiel nicht für längere Zeitspannen
als 30–40
Mikrosekunden unterbrochen werden.
-
Die
Verarbeitung von mehreren Kanälen
ist möglich,
weil die Takt- und Datensignale parallel abgetastet und gesteuert
werden. Eine Vier-Kanal-Emulation benötigt 8-Bit-Anschlüsse. Eine Acht-Kanal-Emulation benötigt 16-Bit-Anschlüsse.
-
Wenn
die Timerunterbrechung beginnt, werden zwei Masken berechnet, die
ein Bit für
jede emulierte Tastatur und Maus enthalten. Die erste Maske (psenseMask)
wird von den Energiefühlereingängen abgeleitet und
dazu verwendet, den Betrieb jedes Anschlusses zu ermöglichen.
Die zweite Maske (nsMask) wird aus PS/2 Datensignalen abgeleitet,
die einen vorliegenden RTS-Zustand anzeigen.
-
Anschließend wird
ein Muster von Übertragungsbits
für jeden
Anschluss berechnet. Übertragungsbits werden
für alle
Anschlüsse
zusammengestellt, egal ob diese senden, empfangen oder still liegen.
Das Muster von Bits unterscheidet sich in Abhängigkeit von der Art des Betriebs.
Das für
einen sendenden Anschluss erzeugte Bitmuster besteht aus einem Startbit,
Datenbits, einem Paritätsbit
und einem Stoppbit. Das für
einen empfangenden Anschluss erzeugte Bitmuster besteht nur aus
Einsen, außer
einem Leitungskontrollbit, welches an die Position des Stoppbits
geladen wird. Das Bitmuster für
Anschlüsse,
die ungenutzt sind, besteht nur aus Einsen.
-
Danach
wird eine txMask für
jeden Daten übertragenden
Anschluss berechnet.
-
Danach
wird eine respMask für
jeden Anschluss berechnet, der Antworten überträgt.
-
Danach
wird eine clkMask berechnet, welche die clkMask einschaltet, oder
während
der zurückliegenden
Schleife des Zeit-Handlers wurde keine Arbeit ausgeführt, der
Timer wird konfiguriert, nach einer Millisekunde wieder zu unterbrechen
und die Unterbrechungsbehandlung ist beendet.
-
In
diesem Beispiel überlappen
die Tx- und Rx-Datenarrays. Zwölf
Bytes wurden für
die überlappenden Arrays
zugeteilt. Die ersten 11 Bytes wurden als das Rx-Datenarray verwendet.
Die letzten 11 Bytes wurden als das Tx-Datenarray verwendet. Gibt
es genügend
Speicher, so ist diese Überlappung
unnötig.
-
An
diesem Punkt beginnt die emulierte Tastatur- und Maustaktgenerierung
für 11
Zyklen. Die Schrittgeschwindigkeit wird ausschließlich durch
Ablauf des 30 Mikrosekunden-Timers gesteuert. Dies stellt sicher, dass
trotz möglichen
verschachtelten Unterbrechungen von peripheren Tastatur- und Maustakten
in Echtzeit gemessen wird.
-
Der
Timer wird jetzt so eingestellt, dass er in Intervallen von 30 Mikrosekunden
abläuft.
Er beginnt im abgelaufenen Zustand.
-
Für 11 Taktzyklen
wird Folgendes wiederholt:
-
(PS/2 Takt FALLENDER Flankenzyklus)
-
- Warte darauf, dass die Zeit abläuft.
- Lese PS/2 Datenanschluss und speichere in Rx/Tx-Datenarray.
- Schalte Rx/Tx Array Zeiger fort.
- Schreibe PS/2 Datenanschluss von Rx/Tx-Datenarray verODERt mit
clkMask.
- Aktualisiere clkMask mit invertierten, von PS/2 Taktanschluss
gelesenen Bits.
(Dies terminiert Takte und Daten an Anschlüssen, die
stillgelegt sind).
- Setze Timer auf 30 Mikrosekunden zurück.
- Schalte Unterbrechungen ab
- Gebe clkMask auf PS/2 Taktanschluss aus.
(Dies erzeugt
die fallende PS/2 Taktflanke).
- Starte Timer
- Schalte Unterbrechungen an
-
(PS/2 Takt STEIGENDER
Flankenzyklus)
-
- Warte darauf, dass die Zeit abläuft
- Setze Timer auf 30 Mikrosekunden zurück
- Schalte Unterbrechungen ab
- Gebe Einsen auf PS/2 Taktanschluss aus
(Dies erzeugt die
steigende PS/2 Taktflanke).
- Starte Timer
- Schalte Unterbrechungen an
-
Wenn
alle Taktzyklen vollständig
sind, schreibe Einsen an den PS/2-Datenanschluss, um unerledigte Kontrollleitungsbits
zu entfernen.
-
Das
erste Byte des Rx-Datenarrays enthält Startbits von allen Anschlüssen, die
empfingen. Das zweite Byte des Rx-Datenarrays enthält Datenbit
0 von allen Anschlüssen,
die empfingen, usw.
-
An
diesem Punkt wird das Rx-Datenarray von seriell auf parallel gedreht.
-
Aktualisiere
für jeden
immer noch in der clkMask eingeschalteten Anschluss die Sendewarteschlangen,
die Antwortwarteschlangen oder verarbeite empfangene Bytes.
-
Fahre
am Anfang der Timer-Unterbrechung fort. Die Verarbeitung der Unterbrechungen
endet, wenn keine weiteren mehr durchgeführt werden können, weil
sie blockiert wurden oder zu übertragende
Bytes fehlen.
-
Das
Computerinterface (CI) API
64 benutzt die folgenden öffentlichen
Datentypen:
-
Das
Computerinterface API führt
die folgenden Funktionen durch:
- 1 C1_Int: Diese
Funktion initialisiert das CI-Subsystem für die Verarbeitung. Diese Funktion
wird nur einmal nach dem Einschalt-Reset aufgerufen.
Parameter:
leer.
Rückgaben:
leer.
- 2. C1_KdbReady: Diese Funktion bestimmt, ob der angegebene PC-Kanal
bereit ist, ein weiteres Byte Tastaturdaten zum Senden anzunehmen.
Parameter:
Byte PC – Nummer
des betroffenen Computeranschlusses (0...7).
Rückgaben:
Byte – WAHR,
falls der Kanal bereit ist, neue Tastaturdaten zu empfangen.
- 3. C1_KbdSend: Diese Funktion nimmt ein (1) Tastaturbyte zur Übertragung
mittels des angegebenen PC-Kanals an.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7).
Rückgaben:
leer.
- 4. C1_KbdConfigChanged: Diese Funktion bestimmt, ob die Tastaturkonfiguration
des angegebenen PC-Kanals mittels PC-Kommandos verändert worden
ist.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7):
Rückgaben:
Byte – WAHR,
falls die Konfiguration geändert
worden ist, seit C1_KbdGetConfig() zum letzten Mal aufgerufen wurde.
- 5. C1_KbdGetConfig: Diese Funktion ruft die gegenwärtige Konfiguration
für den
angegebenen PC-Kanal ab.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), C1_KbdConfig *cfg – Zeiger auf
Tastaturkonfigurationsinformation.
Rückgaben: leer.
- 6. C1_SetScanCodeSet: Diese Funktion wird verwendet, den gegenwärtig vom
angezeigten PC-Kanal verwendeten Tastaturabfrage-Codesatz zu überschreiben.
Parameter:
Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), Byte b – welcher
Abtastsatz einzustellen ist (1, 2, 3).
Rückgaben: leer.
- 7. C1_EF_FeedBackAvail: Diese Funktion bestimmt, ob EF-Feedback
von dem angegebenen PC-Kanal verfügbar ist.
Parameter: Byte
PC – Nummer
des betroffenen Computeranschlusses (0...7)
Rückgaben:
Byte – WAHR,
falls das neue EF-Feedback verfügbar
ist, seit zum letzten Mal C1_EF_FeedBackGet() aufgerufen wurde.
- 8. C1_EF_FeedBackGet: Diese Funktion ruft das letzte EF-Feedback
ab, das von dem angegebenen PC-Kanal empfangen wurde.
Parameter:
Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), Byte *feedBack [3] – Zeiger auf
ein 3 Byte-Array, welches die EF-Feedbackbytes empfängt.
Rückgaben:
leer.
- 9. C1_MseReady: Diese Funktion bestimmt, ob die Maus für den angegebenen
PC-Kanal bereit ist, ein neues Mauspaket für die Übertragung zu empfangen.
Parameter:
Byte PC – Nummer
des betroffenen Computeranschlusses (0...7).
Rückgaben:
Byte – WAHR,
falls der Kanal bereit ist, ein neues Mauspaket zu empfangen.
- 10. C1_MseSendPacket: Diese Funktion nimmt ein neues Mauspaket
zur Übertragung
mittels des angegeben PC-Kanals an. Das Mauspaket wird von dem in
MSE_DATA enthaltenen neutralen Format in das gegenwärtig von
der Maus-Schnittstelle
für den
angegebenen Computeranschluss emulierte Datenformat übersetzt.
Parameter:
Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), MSE_DATA *pkt – Zeiger
auf das zu übertragende
Mauspaket.
Rückgaben:
leer.
- 11. C1_MseSendByte: Diese Funktion nimmt ein einzelnes Mausbyte
zur Übertragung
mittels des angegebenen PC-Kanals an.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), Byte b – zu übertragendes Byte.
Rückgaben:
leer.
- 12. C1_MseEnable: Diese Funktion überschreibt den Maus-Einschaltstatus,
so dass die Mausschnittstelle für
den angegeben PC-Kanal eingeschaltet ist.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7).
Rückgaben:
leer.
- 13. C1_MseConfigChanged: Diese Funktion bestimmt, ob die Mauskonfiguration
des angegebenen PC-Kanals mittels PC-Kommandos geändert wurde.
Parameter:
Byte PC – Nummer
betroffenen Computeranschlusses (0...7).
Rückgaben: Byte – WAHR,
falls die Konfiguration geändert
wurde, seit C1_MseGetConf() zum letzten Mal aufgerufen wurde.
- 14. C1_MseGetConfig: Diese Funktion ruft die aktuellste Mausschnittstellenkonfiguration
für den
angegebenen PC-Kanal ab.
Parameter: Byte PC – Nummer
des betroffenen Computeranschlusses (0...7), C1_MseConf*cfg – Zeiger auf
Maus-Konfigurationsinformation.
Rückgaben: leer.
- 15. C1_MseSetProductType – Diese
Funktion stellt den Mausprodukttyp ein, der von der angegebenen Computerschnittstelle
nach dem nächsten
von dem angeschlossenen Computer empfangenen RESET Kommando emuliert
werden soll. Bis ein RESET Kommando empfangen wird, bleibt die Art
der Mausemulation für
einen gegebenen Computeranschluss unverändert.
Parameter: Byte
productType – Produktartcode
aus der folgenden Liste von symbolischen Konstanten:
MSPROD_INTELLIMOUSE,
(voreingestellt)
MSPROD_MOUSEMAN_PLUS,
MSPROD_MARBLE_PLUS,
MSPROD_MARBLE_FX,
MSPROD_SCROLL_POINT,
MSPROD_EXPERT_MOUSE.
- 16. C1_Timer_ISR: GPT1 – Timer
2-Unterbrechungsbehandlungsroutine (ISR) für Timer 1-Überlaufunterbrechung. Aktiviert
periodisch die PC-seitige Emulationslogik, um RTS-Zustände zu behandeln,
um Bytes von einem oder mehreren PCs zu empfangen und Daten und
Antworten an einen oder mehrere PCs zu senden.
Parameter: leer.
Rückgaben:
leer.
Anmerkungen: Unterbricht, wenn T2 unterläuft oder
0 × 0000
erreicht (rückwärts zählender
Timer-Betrieb).
-
Aufgabe
#6 in der Hauptaufgabenschleife wird von einem seriellen Maus-Handler innerhalb
des CI-Moduls durchgeführt,
welcher alle seriellen Mausdaten verarbeitet, die an die PCs übermittelt
werden sollen.
-
Gemäß der seriellen
Mausprozedur wird/werden:
- 1. Der serielle Handler
von der Hauptaufgabenschleife oder dem CI Handler aufgerufen.
- 2. Die CI-Datenstruktur für
alle aktiven PC-Anschlüsse
für serielle
Mäuse geprüft.
- 3. An die PCs zu sendende Mausdaten (maximal 2 zu jedem beliebigen
Zeitpunkt) von einem von dem KVM-Verteiler selbst verwendeten Mauspaketformat
in serielles Mauspaketformat übersetzt
und in einer Datenstruktur des seriellen Handlers gespeichert.
- 4. Wie in 15 gezeigt, enthält die Datenstruktur
des seriellen Handlers ein serielles Mauspaket für jeden der 8 PCs, ungeachtet
dessen, ob der PC für
eine serielle Maus tauglich ist.
- 5. Das erste Byte jedes seriellen Mauspakets in ein IRAM 10
Byte-Array gelegt, welches für
die Übermittlung
an alle PCs verwendet wird. Lauter Einsen werden an diejenigen PCs
versandt, die keine tatsächlichen seriellen
Mausdaten empfangen.
- 6. In diesem Beispiel erfordert der serielle Mausanschluss,
dass Daten mit einer Rate von 1200 bps gesendet werden. Ein Timer
wird verwendet, um PEC-Behandlungsanforderungen mit der Rate von
1200 bps zu erzeugen. Dieser Timer hat ein Autoreload-Register,
um die Rate von 1200 bps zu ermöglichen.
Jede PEC-Behandlungsanforderung ruft einen Transfer von Daten vom
IRAM an Anschluss 0 hervor.
- 7. Die letzte PEC-Übertragung
erzeugt eine Unterbrechung. Das ISR schalten entweder den Timer
ab, falls es keine weiteren seriellen Mausdaten zu senden gibt,
ODER verschiebt den nächsten
Satz Bytes von der CI-Datenstruktur
in die serielle Handler-Datenstruktur im IRAM. Die serielle Handler-Datenstruktur
kann doppelt gepuffert sein, um jede Latenz zwischen der Übermittlung
von Bytes zu verhindern.
-
Das
höhenwertige
Byte von Anschluss 0 wird an die Datenübermittlung jedes seriellen
Mausanschlusses gekabelt. Jedes der 10 Bytes stellt einen Satz von
Bits für
jeden PC dar. Zuerst werden die Startbits 81 an jeden PC übermittelt,
gefolgt von den Datenbits 82 und Stopbits 83.
Der Peripheriegeräte-Event
Controller (PEC) wird verwendet, um jeden Satz Bits an Port 0 zu übertragen.
-
Aufgaben
#1 und #2 der Hauptaufgabenschleife werden von einem Drucktastenmodul
durchgeführt, um
die Benutzereingaben an das System mittels des 1 Nächster/Abtasten-(Next/Scan)
und 8 Kanalauswahl-Drucktastern an der Frontplatte zu verarbeiten
und zu entprellen. Dies zeichnet Drucktastereneignisse wie Make,
Break, Next, Scan, Reset usw. in Drucktastenmodul-eigene Datenstrukturen
ein.
-
Ein
Drucktasten-API verwendet eine Datenstruktur gemäß dem folgenden Format:
#define
BUTTONS_NONE 0 // Keine Taster-Aktivität
#define BUTTONS_NEXT
1 // Taster für < 1 Sekunde gedrückt
#define
BUTTONS_SCAN 2 // Taster für
1–3 Sekunden
gedrückt
#define
BUTTONS_RESET 3 // Taster für > 3 Sekunden gedrückt
-
Die
von der Drucktasten-API ausgeführten
Funktionen beinhalten:
- 1. BUTTONS_GetChannelButtons – diese
Funktion gibt den Status der Kanalauswahl-Drucktaster zurück. Ist
Bit 0 gesetzt, so zeigt es an, dass der Kanal A Taster gedrückt ist.
Ist Bit 1 gesetzt ist, zeigt es an, dass der Kanal B-Taster gedrückt ist;
usw. Der Wortwert kann für
bis zu 16 Kanalauswahltaster verwendet werden. Taster werden mit
20 Hz oder weniger abgetastet, um ein Entpnellvenhalten hervorzurufen.
Parameter
leer:
Rückgaben:
Wort: Anmerkungen: 1) Entprellt mittels 20 Hz-Abtastung in BUTTONS_ButtonTimer;
2) Handlungsanforderung ergab bei Verteiler-Handler Taste ist gedrückt.
- 2. BUTTONS_GetScanNextButton – diese Funktion gibt eine
Anzeige von Nächster,
Abtasten oder Reset zurück,
wenn der Taster nach einer gemessenen Kontaktdauer losgelassen wird.
Der Abtasten/Nächster-Taster
wird mit 20 Hz oder weniger abgetastet, um ein Entprellverhalten
hervorzurufen. Nächster – weniger
als 1 Sekunde, Abtasten – zwischen
1 und 3 Sekunden und Reset – mehr
als 3 Sekunden.
Parameter: leer.
Rückgaben: Byte: Anmerkungen:
1) Entprellt mittels 20 Hz-Abtastung in BUTTONS_ButtonTimer; 2)
Taster wird in kaskadierten Einheiten ignoriert.
- 3. BUTTONS_ButtonTimer – diese
Funktion wird mit 20 Hz von dem Timer Subsystem aufgerufen, zur Handhabung
des Taster-Entprellens und -Timing
Parameter: leer.
Rückgaben:
leer.
-
Andere
Funktionen der Hauptaufgabenschleife beinhalten eine Steuerung der
Status- und Kanalauswahl-LEDs
(Aufgabe #9), eine Handhabung von Timern (Aufgabe #10), und ein
Aufrufen des OSD Menü-Subsystems
(Aufgabe #8). Das OSD-Subsystem wird unten detaillierter beschrieben.
-
Ein
On Screen Display (OSD)-Modul ist in 14 gezeigt.
Die Anzeige von OSD-Menüs wird von
der Hauptaufgabenschleife 73 (Aufgabe #8) aufgerufen. Die
Hauptaufgabenschleife 73 ruft die API 74 des Menü-Subsystems
auf, die einen Mechanismus zur Kommunikation mit dem Menü-Subsystem
bereitstellt. Das Menüsystem
erfordert es, dass Tastatureingaben verarbeitet und übersetzt
werden, bevor sie vom Menüsystem
konsumiert werden. Das Menüsystem
erfordert „rohe" Make/Break-Tastencodes für alle Tastendrücke, „gekochte" Make/Break-Codes
für alle
Tastendrücke
und Shift Status-Flags für
Shift, Control und Alt. Rohe Tastencodes sind ein Satz von eindeutigen
Tastencodes. Es gibt einen Code für jede Taste auf der gesamten Tastatur.
Das Menüsystem
muss den Make und Break Code für
jeden Tastendruck empfangen. Dies beinhaltet auch die Shift-, Alt-
und Control-Tasten. Es können
die Codes von Scan Set 3 verwendet werden.
-
„Gekochte" Tastencodes sind
ASCII plus Funktionstasten. „Gekochte" Tastencodes werden
durch den Status der Num Lock-, Caps Lock-, Shift-, Control- und
Alt-Tasten verstellt. Gegenwärtig
verwendet das Menüsystem
isprint()-Tasten, Steuerungstasten wie Tabulator, Löschen, Entfernen,
Eingabe, Pfeiltasten und Funktionstasten F1 ... F12. In Kombination
mit den Shift Status-Flags befriedigen diese alle gegenwärtigen Erfordernisse
des Menüsystems.
-
Kein
Menüsubsystem
wird durch eine Tastensequenz wie „STRG-STRG" aufgerufen. Nachdem STRG-STRG gedrückt ist
und die Make/Break-Codes an den Computer durchgereicht sind, kann
die Kanalliste gestartet werden. An diesem Punkt können die „rohen" und „gekochten" Tastencodes an das
Menüsystem
geleitet sein. Der Punkt, an dem die Umschaltung stattfindet, wird
durch einen nicht zum Menü gehörenden Systemcode
entschieden. Die Rückumschaltung
wird vollständig
durch das Menüsystem
entschieden. Bei jedem Durchlauf der Aufgabenschleife überprüft das Hauptprogramm
ein Flag in einer globalen Struktur, die dem Menüsystem zugeordnet ist, um genau
zu bestimmen, wann das Menüsystem
den Tastaturbesitz aufgibt. Dies wird so durchgeführt, dass
das Menüsystem
alle ausstehenden Break Codes ordnungsgemäß entnehmen kann, bevor Tastencodes
an einen Computer geleitet werden.
-
Das
Menüsystem 74 kann
aufgerufen werden (durch „STRG-STRG" beispielsweise)
oder einmal pro Durchlauf der Hauptaufgabenschleife eingeleitet
werden. Ist es aktiviert, erstellt das Menü-Subsystem ein Menü von Computerkanälen, das
es von der Datenbank 79 und dem Speicher 80 zieht.
Dieses enthält
Benutzerkonfigurationsinformation wie Kanalnamen, Anzeigecharakteristiken
etc. Tastencodes, die Make/Break-, ASCII- und „rohe" Tastencodes enthalten, werden dann
das Menüsystem
eingespeist. Das Menüsystem
zeigt der Hauptschleife an, wenn das Menü fertig ist und/oder eine Aktion
angefordert ist. Das Menü kann
auch die Hauptschleife beauftragen, dem Menüsystem keine weiteren Make
und Break Codes einzuspeisen. In allen Fällen ist dies das Mittel, die
Einspeisung von Tastencodes in das Menüsystem zu beenden.
-
Die
OSD Handler-API 76 stellt einen Mechanismus zur Kommunikation
mit dem OSD-Chip
(wie von Motorola hergestellt und verfügbar) bereit. Dieses OSD-Subsystem 76 stellt
die Mittel bereit, mit denen das MENU-Subsystem 74 die
OSD-Einrichtung beeinflusst. Durch diese Funktionen wird eine Darstellung
der OSD-Einrichtung im lokalen Speicher aufrecht erhalten. Funktionen,
die den Inhalt der Anzeige verändern,
wie die Druckfunktionen und Betriebssteuerungsfunktionen, verändern lediglich
die Darstellung im lokalen Speicher. Es ist der Zweck der OsdProcess()-Funktion,
inkrementell den Inhalt der lokalen OSD-Darstellung an die tatsächliche
OSD-Einrichtung auf eine optimierte Weise zu übermitteln.
-
Selbstverständlich muss
das vorhandene Menüanzeigesystem
mehr als einen Benutzer an dem gemeinsamen Prozessor unterstützen. In
diesem Beispiel wird jeder Benutzeranschluss auf unabhängige Weise verarbeitet,
obwohl es nur ein Subsystem gibt.
-
Funktionen
der API beinhalten:
- 1) Initialisieren der OSD-Einrichtung
beim Starten auf voreingestellte Bedingungen, Löschen des Anzeigenspeichers
und Einstellen der Einrichtung auf voreingestellte Farbgebung und
Größe
- 2) Bestimmung des Bildschirmstatus (im Aufbau befindlich vs.
statisch);
- 3) Timing (bzw. Zeitsteuerung);
- 4) Löschen
des Texts im OSD-Speicher von der momentanen Druckposition bis zum
Ende der Zeile für
einen bestimmten Benutzeranschluss;
- 5) Löschen
des gesamten OSD-Textspeichers, so dass der Text leer ist, und Einstellen
der Druckposition auf (0,0);
- 6) Einschalten oder Ausschalten der OSD-Anzeige für einen
angegebenen Benutzeranschluss;
- 7) Ausschalten der Anzeige eines blinkenden Cursors auf der
OSD-Anzeige;
- 8) Einschalten der Anzeige eines blinkenden Textcursors auf
dem OSD;
- 9) Auswählen,
welcher OSD-Zeichencode für
einen blinkenden Cursor verwendet wird;
- 10) Einstellen der Position des blinkenden Textcursors;
- 11) Einstellen der Farben für
Hintergrund und Text;
- 12) Einstellen der Attribute einer Textzeile;
- 13) Einstellen der Textdruckposition des OSD-Subsystems. Die
Textdruckposition steuert, wo Text gedruckt wird;
- 14) Drucken eines einzelnen Zeichens in den OSD-Speicher an
der gegenwärtigen
Textdruckposition mit der gegenwärtigen
Auswahl von Textfarbe gefolgt von Fortschalten der Druckposition
um eins;
- 15) Drucken einer Kette (bzw. eines Strings) von Text in den
OSD-Speicher, beginnend an der gegenwärtigen Textdruckposition mit
der gegenwärtigen
Auswahl der Textfarbe. Die Druckposition wird für jedes gedruckte Zeichen einmal
fortgeschaltet;
- 16) Auswählen,
welche von zwei für
eine gegebene Textzeile verfügbaren
Farben für
jedes nachfolgend mittels den OSD-Druckfunktionen an das OSD geschriebene
Zeichen verwendet wird;
- 17) Definieren der Position eines bestimmten Hintergrundfensters;
- 18) Steuerung der Platzierung der gesamten OSD-Anzeige bezüglich der
oberen linken Ecke des Anzeigemonitors sowie der vertikalen Höhe jeder
OSD-Anzeigenzeile;
- 19) Steuerung der vertikalen Größe der Anzeigezeichen und der
Anzahl der von der OSD-Einrichtung erzeugten horizontalen Punkte;
- 20) Anpassen der von jeder Reihe des OSD-Texts verwendeten Anzahl
horizontaler Zeilen. Die Anzahl der Zeilen muss in Abhängigkeit
der gemessenen horizontalen Zeilen, die von der Sync-Quelle 75 erzeugt
wurden, angepasst werden. Die Sync-Quelle ist entweder dasjenige
PC-Video, das online ist, oder der lokale Sync-Generator, der in
Abwesenheit von PC-Video verwendet wird;
- 21) Bestimmen einer bestimmten horizontalen und vertikalen Videopunkt-Position;
- 22) Berechnen der vertikalen und horizontalen Zeilenposition
für einen
gegebenen Wert für
vertikale und horizontale OSD-Positionskontrolle;
- 23) Berechnen der Anzahl von der OSD-Anzeige innerhalb des angegebenen
Satzes von Textspalten verwendeten vertikalen Zeilen;
- 24) Berechnen der von der OSD-Anzeige innerhalb des angezeigten
Satzes von Textspalten verwendeten horizontalen Punkte;
- 25) Scrollen einer Textregion, die zuvor an die OSD-Anzeige
geschrieben wurde,
- 26) Speichern des gesamten Kontexts des OSD in lokalen Speicher
zur späteren
Wiederherstellung;
- 27) Wiederherstellen des gesamten Kontexts der OSD-Anzeige aus
zuvor abgespeichertem lokalen Speicher;
- 28) Aktivierung eines kompletten Refresh des OSD aus der lokalen
Speicherdarstellung;
- 29) Konfigurieren des OSD-Subsystems vor einer Anzeigeerstellung,
indem die lokale Sync-Erzeugung des OSD-Anzeigechips für kompatiblen
Betrieb konfiguriert wird;
- 30) Einleiten der Erfassung hereinkommender Sync-Signale, beinhaltend
die Art und Rate des Sync-Impulses; und
- 31) Bestimmen, wann der Sync-Erfassungsprozess abgeschlossen
ist und, wenn das der Fall ist, Zurückgeben der Ergebnisse.
-
Die
OSD-Treiber Handler-Einrichtung-API 78 stellt einen Mechanismus
zur Kommunikation mit dem OSD-Chip bereit, beispielsweise mit der
als MC141543 „Advanced
Monitor On-Screen Display" bekannten
Motorola OSD-Einrichtung. Der Treiber Handler 78 schreibt
Bytes an den OSD-Anzeigespeicher und erzeugt eine Zeitsteuerung
zum Senden von Bytes von Anweisungen, Adressen und Daten an die
OSD-Einrichtung.
-
Der
Video Sync Handler 75 zählt
vertikale und horizontale Syncs für beide Benutzerpfade. Eine
Bestimmung kann von dem Menü-Subsystem 75 vorgenommen
werden, um die von dem Computer bereitgestellten Syncs (separate
N & V, kein Composite)
ODER Syncs, die von dem bordeigenen FPGA 77 (siehe Element 43 von 8)
generiert wurden, als Quelle für
das OSD zu verwenden. In 13 ist
die Verarbeitung horizontaler Syncs in Form eines Beispiels dargestellt.
-
Der
Prozessor 38 stellt Timer (siehe 9) bereit,
die für
den vertikalen Sync-Zähler
und horizontalen Sync-Zähler
verwendet werden.
-
Mindestens
einmal pro Sekunde führt
der Video Sync Handler einen Endlichen Automaten 70 aus,
der die Anzahl horizontaler Sync-Impulse zwischen zwei vertikalen
Sync-Impulsen zählt.
Der vertikale Sync-Zähler verwendet
eine kurze ISR, um den horizontalen Sync-Zähler entsprechend zu starten/stoppen.
Die Anzahl der während
des letzten Messzyklus aufgenommenen horizontalen Sync-Impulse ist
in dem Menü-Subsystem verfügbar. Syncs
von den Computern 13 werden von dualen Muxen 71 und 72 empfangen
und auf den lokalen und entfernten Benutzer-Sync-Bus platziert.
Lokale und entfernte Muxe 68 und 69 nehmen Syncs
entweder von dem Sync-Bus (von den Computern) oder von der Sync-Erzeugung 43 zur
Anwendung auf die lokalen und entfernten Monitore 4/8.
-
Da
der vorliegendende Verteiler mehrere Benutzer versorgt, muss das
OSD-System Verteileranweisungen von allen Benutzern handhaben. Ein
Kanalverteilmodul verarbeitet den Empfang von Handlungsanforderungen
von verschiedenen Benutzern, um Kanäle von verschiedenen Quellen
wie Drucktastern, Hot Key-Sequenzen, Abtasten und dem OSD-Menü zu verteilen. 17 veranschaulicht
solch ein Modul.
-
In 17 ist
es das Ziel, die verschiedenen Subsysteme wie den Hot Key-Handler
etc., voneinander und von dem Verteiler-Handler getrennt zu halten.
Die Mentalität
eines Schwarzen Brettes wird verwendet, so dass jedes Modul/jeder
Handler, der extern von dem Verteiler-Handler 97 ist, mittels
API 96 eine Handlungsanforderung an das Schwarze Brett
des Verteiler-Handlers verschicken kann. Der Verteiler-Handler, der von der
Hauptaufgabenschleife aufgerufen wird, überprüft das Schwarze Brett auf alle
Handlungsanforderungen, die aufgegeben sein könnten. Die Handlungsanforderungen
bestehen wenigstens aus der Nummer des Benutzers, der die Anforderung
abgibt, und dem gewünschten
Zielkanal.
-
Jede
Verteilereinheit, ob Basis oder gestuft, ist dafür verantwortlich, beide Benutzerpfade
innerhalb dieser Einheit zu verfolgen. Mit anderen Worten, jede
Einheit muss wissen, welcher PC gegenwärtig von welchem Satz lokaler
oder entfernter Peripheriegeräte
ausgewählt
ist.
-
Ein
serielles Anschlussmodul kann auch verwendet werden, um den seriellen
Ein-/Ausgabeanschluss auf
dem Verteilerkasten handzuhaben, einschließlich Anwendungen wie OSD-Dienstprogramme
oder „Power Commander" Dienstprogramme,
die kommerziell von Cybex Computer Products, Corp. etc. angeboten
werden. 16 stellt den seriellen Anschluss 89,
die Unterbrechungsbehandlungsnoutine 88, den Handler 87 und die
API 86 dar, die an beispielhafte Dienstprogramme wie das
OSD-Dienstprogramm 84 und
den Power Commander 85 angeschlossen ist. Das serielle
Anschlussmodul stellt einen Mechanismus für verschiedene Anwendungen
bereit, um den externen seriellen Anschluss (DB-9) zu benutzen und
mit ihm zu kommunizieren. Serielle Anschlussdaten werden mittels
Unterbrechungen versandt und empfangen.
-
Bei
einer alternativen Ausführungsform
der gestuften (kaskadierten) Struktur von 6 beinhalten
die vorliegenden Verteiler ein Verfahren, um den Anschluss eines
weiteren Verteilerprodukts zu erfassen. Dieses Verfahren gründet auf
der Verwendung der Read ID-Tastaturanweisung. Unter Bezugnahme auf 18 ist
gemäß der IBM
Tastaturspezifikation die Standardantwort auf die Read ID-Tastaturanweisung
ein konstanter 16 Bit-Wert (0 × 83AB).
Früher
war man sich so sicher, dass alle Tastaturen gleichförmig auf
das Read ID antworten, dass KVM-Verteilerprodukte die Read ID-Anweisung
nicht ausgaben, sondern stattdessen die bekannte Antwort an den
zugeordneten Computer emulierten. Dieses Verhalten wurde ausgenutzt,
indem Verteilerprodukte entwickelt wurden, die mit einer Hersteller-ID
(höherwertiges
Byte) und einem Produktcode (niederwertiges Byte) als Antwort auf
die dritte aufeinanderfolgende Read ID-Anweisung antworteten.
-
Insgesamt
funktionierte der Ansatz gut, außer dass einige PCs (beispielsweise
der IBM 9585 und der IBM 300XL) ebenfalls 3 aufeinandertolgende
Read ID-Anweisungen in ihrer Hochfahr-Sequenz ausgeben. Daher bestimmten
frühere
KVM-Verteiler, welche
die 3-Read ID-Anweisungstechnik verwendeten, manchmal irrtümlich, sie
wären an
ein weiteres ähnliches
KVM-Verteilerprodukt angeschlossen, wenn nur ein PC angeschlossen
war. Die Anzahl von ausgegebenen Read ID-Anweisungen wird auf 10
gesteigert, wie in 18 gezeigt. Die größte Anzahl
von Read ID-Anweisungen,
deren Ausgabe von einem PC bekannt ist, ist 5 durch den IBM 9585.
-
In
einer Anstrengung, den Kommunikationsverkehr zwischen den KVM-Verteilerkästen zu
verringern, kann ein Steno-Protokoll implementiert werden, um es
dem Basiskasten zu erlauben, mit dem gestuften („tiered") Kasten mit nur geringem Overhead zu
kommunizieren. Ein solches Steno kann ein geschichtetes Protokoll
verwenden, welches aus einem Präfixbyte
gefolgt von einem Anweisungsbyte besteht. Das Anweisungsbyte weist
die geschichtete Einheit an, verschiedene Aufgaben wie Kanalverteilung
durchzuführen.
Zusätzliche Präfixbytes
können
verwendet werden, um das geschichtete Protokoll zu verbessern.
-
Wie
zuvor beschrieben verwendet die vorliegende Erfindung auch Flash-Speicher-Aufrüstung. Es
wird davon ausgegangen, dass derzeit Rose Electronics aus Houston
eine Flash-Aufrüstung
in einem KVM-Verteiler namens Ultraview anbietet, wobei davon ausgegangen
wird, dass dieser dem Benutzer zwei Verfahren der Flash-Aufrüstung anbietet:
- 1) Verwendung eines Terminalprogramms (wie
Hyperterminal), um eine ASCII-Textdatei zu versenden, wobei der
Terminalschirm verwendet wird, um den Benutzer über den Fortschritt auf dem
Laufenden zu halten;
- 2) Verwenden einer Dateikopie, um eine ASCII-Textdatei zu senden,
wobei LEDs verwendet werden, um den Benutzer über den Fortschritt auf dem
Laufenden zu halten.
-
Ein
Problem bei diesem Verfahren ist, dass die Benutzerschnittstellen
unzulänglich
sind, um die Dateiübertragung
zu überwachen.
Weiterhin ist keine Datenflusssteuerung eingebaut, was bedeutet,
dass Menüdaten
aufgrund von langsamer Kommunikationsanbindung oder überladenen
Bussen beim Herunterladen verloren gehen können. Das Problem wird dadurch
verschlimmert, dass die Unzulänglichkeit
der Benutzerschnittstelle den Benutzer ohne gutes Feedback darüber lässt, dass
ein Datenabladen erfolglos war und warum.
-
Bei
einer ersten alternativen Ausführungsform
von 21, dem Herunterladen von Flash, wird ein die ASCII-Dateiübertragung
verwendendes Terminalprogramm (wie ProComm, Hyperterminal, etc.)
verwendet, jedoch mit auf der Embedded-Seite entwickelter Unterstützung von
ASCII-Dateitransport. Eine solche Unterstützung kann entweder ein X-Modem
Protokoll oder eine verlangsamte Baudrate sein. Alternativ hierzu
kann das Terminalprogramm mit dem über einen dedizierten Flash-Herunter ladebetrieb
(siehe Element 47 von 9) verfügenden Prozessor 38 verwendet
werden, der nicht von einem Flash-Download überladen wird.
-
Bei
einer zweiten alternativen Ausführungsform
wird ein DOS-basiertes Dienstprogramm für den PC-Download bereitgestellt.
Dies verbessert die Benutzerschnittstelle und weist eine integrierte
Flusssteuerung auf.
-
Bei
einer dritten alternativen Ausführungsform
wird eine benutzerspezifische Windows-Anwendung für das PC-Herunterladen
bereitgestellt. Diese stellt die benutzerfreundlichste, einfachste
GUI für
eine integrierte Flusssteuerung bereit.
-
In
jedem Fall lädt
ein Bootstrap Loader (BSL) die Flash-Programmierroutinen und den
Programmcode mittels einer seriellen Schnittstelle an den KVM-Verteiler,
um den On-Chip Flash-Speicher
des Prozessors 38 zu programmieren. Die Flash-Programmierroutinen
und der Programmiercode steuern dann zukünftige Flash-Aufrüstungen
mittels der Ausführungsform
von 21.
-
Während die
Erfindung in Verbindung mit dem beschrieben wurde, was derzeit als
die praktischste und bevorzugteste Ausführungsform angesehen wird,
versteht es sich, dass die Erfindung durch die offenbarte Ausführungsform
nicht eingeschränkt
werden soll, sondern ganz im Gegenteil ist es beabsichtigt, verschiedene
Veränderungen
und äquivalente
Anordnungen, die innerhalb des Sinngehalts und des Umfangs der beigefügten Ansprüche enthalten
sind, abzudecken.