-
Die
Erfindung betrifft im Allgemeinen USB-(universaler serieller Bus)Steuerungseinrichtungen
(„Controller”) und insbesondere
das Bereitstellen einer OTG-(On-The-Go)Funktion.
-
Der
universelle serielle Bus wurde ursprünglich 1995 entwickelt, um
einen externen Erweiterungsbus zu definieren, der die Anbindung
weiterer peripherer Komponenten an ein Computersystem erleichtert.
Die USB-Technik ist in PC-(Personalcomputer)Host-Steuerungshardware
und Software und durch für
Peripherkomponenten geeignete Master-Slave-Protokolle eingerichtet
und führt
zu robusten Verbindungen und Verbindungskabelanordnungen. USB-Systeme
sind mittels Mehrfachverteiler bzw. Hubs erweiterbar.
-
In
USB-Systemen besteht die Aufgabe der Systemsoftware darin, eine
vereinheitlichte Sicht der Eingangs/Ausgangs-Architektur für alle Softwareanwendungen
durch Verbergen hardwareimplementationsspezifischer Details bereitzustellen.
Insbesondere wird die dynamische Anbindung und Ankopplung von peripheren
Komponenten verwaltet und mit der Peripherie kommuniziert, um deren
Identität
zu ermitteln. Während
der Laufzeit initiiert der Host-Rechner Transaktionen zu spezifischen
Peripherkomponenten und jede periphere Komponente empfängt seine Transaktionen
und antwortet entsprechend.
-
Verteiler
bzw. Hubs sind in dem System mit integriert, um eine zusätzliche
Verbindungsfunktionalität
für USB-Peripherkomponenten
zu schaffen und um die angeschlossenen Geräte mit Leistung zu versorgen.
Die Peripherkomponenten sind untergeordnete Einheiten, die reagieren
müssen,
um von dem Host-Rechner gesendete Transaktionen anzufordern. Derartige
Anforderungstransaktionen beinhalten Anforderungen für detaillierte
Information über das
Gerät und
seine Konfiguration.
-
Obwohl
diese Funktionen und Protokolle bereits in der USB 1.1-Spezifikation
eingerichtet waren, wurde diese Technik weiter verbessert, um eine Schnittstelle
mit höherer
Leistungsfähigkeit
zu schaffen. 1 zeigt ein beispielhaftes USB
2.0-System, das eine Host-Steuerung 100, eine Reihe von USB-Geräten 115, 120, 125, 130 und
zwei Verteiler 105, 110 aufweist. In dem System
aus 1 sind die Verteiler 105, 150 eingefügt, um die
Ver bindungsfunktionalität
zu verbessern, wobei in anderen USB-2.0-Systemen die USB-Geräte direkt
mit der Host-Steuerung 100 verbunden werden können.
-
Wie
zuvor erwähnt
ist, stellt USB 2.0 eine Schnittstelle mit höherer Leistungsfähigkeit
bereit und die Verbesserung hinsichtlich der Geschwindigkeit kann
bis zu einem Faktor 40 betragen. Wie ferner aus 1 ersichtlich
ist, ist USB 2.0 rückwärts kompatibel
mit USB 1.1, da angeschlossene USB 1.1-Geräte 120, 125, 130 von
der gleichen Host-Steuerung 100 angesteuert werden können. Es
können
sogar USB 1.1-Verteiler 110 verwendet werden.
-
Wie
man aus 1 erkennen kann, kann ein USB-1.1-Gerät 120 direkt
mit einem USB-2.0-Verteiler 105 verbunden
werden. Ferner kann dieses Gerät auch
direkt mit der Host-Steuerung 100 verbunden werden.
Dies wird durch die Fähigkeit
von USB-2.0-Host-Steuerungen
und entsprechenden Verteilern ermöglicht, die höhere oder
auch geringere Übertragungsgeschwindigkeiten
zwischen einzelnen Geräten
vereinbaren können.
-
In 2 ist
die Systemsoftware und Hardware eines USB-2.0-Systems dargestellt.
Die Systemkomponenten können
hierarchisch durch Definieren mehrerer Ebenen organisiert werden,
wie dies in der Figur gezeigt ist.
-
In
der obersten Ebene läuft
die Client-Treibersoftware (im Folgenden auch Kliententreibersoftware
genannt) 200 auf dem Host-PC und ist einem speziellen USB-Gerät 230 zugeordnet.
Die Klientensoftware ist typischerweise ein Teil des Betriebssystems
oder wird von dem Gerät
bereitgestellt.
-
Der
USB-Treiber 205 ist ein Systemsoftwarebustreiber, der die
Details des speziellen Host-Steuerungstreibers 210, 220 für ein spezielles
Betriebssystem zusammengefasst aufweist. Die Host-Steuerungstreiber 210, 220 schaffen
eine Softwareebene zwischen einer spezifischen Hardware 215, 225, 230 und
dem USB-Treiber 205, um eine Treiber-Hard-Schnittstelle bereitzustellen.
-
Während die
bisher erläuterten
Ebenen durch Software implementiert sind, enthält die oberste Hardwarekomponentenebene
die Host-Steuerungen 215, 225. Diese Steuerungen
sind mit dem USB-Gerät 230 verbunden,
das die Endanwenderfunktion ausführt.
-
Wie
aus der Figur ersichtlich ist, gibt es eine Host-Steuerung 225,
die eine erweiterte Host-Steuerung
EHC für
die Hochgeschwindigkeits-USB-2.0-Funktion ist. Diese Hoststeuerung arbeitet
entsprechend der EHCI (erweiterte Host-Steuerungsschnittstelle)
Spezifikation für
USB 2.0. Auf der Softwareseite besitzt die Host-Steuerung 225 einen
speziellen zugeordneten Host-Steuerungstreiber (EHCD) 220.
-
Ferner
gibt es Host-Steuerungen 215 für Operationen mit voller und
geringer Geschwindigkeit. Die UHCI (universale Host-Steuerungsschnittstelle) oder
OHCI (offene Host-Steuerungsschnittstelle) sind
zwei industrielle Standards, die in den universellen oder offenen
Host-Steuerungen (UHC/OHC) 215 zur Bereitstellung von USB-1.1-Host-Steuerungsschnittstellen
angewendet werden. Die Host-Steuerungen 215 weisen zugeordnete
universelle/offene Host-Steuerungstreiber (UHCD/OHCD) 210 in
der untersten Softwareebene auf.
-
Daher
umfasst das USB-2.0-verträgliche Hoststeuerungssystem
eine Treibersoftware und eine Host-Steuerungshardware, die mit der
EHCI-Spezifikation verträglich
sein muss. Obwohl diese Spezifikation die Schnittstelle auf Registerebene
und zugeordnete im Speicher abgelegte Datenstrukturen definiert,
definiert diese oder beschreibt nicht die Hardwarearchitektur, die
zum Aufbau einer kompatiblen Host-Steuerung erforderlich ist.
-
In 3 sind
die Hardware-Komponenten eines typischen Hauptplatinenaufbaus dargestellt. Die
grundlegenden Elemente, die auf einer Hauptplatine bzw. Motherboard
vorzufinden sind, beinhalten die CPU (zentrale Recheneinheit) 300,
eine Nordbrücke 305,
eine Südbrücke 310,
und einen Systemspeicher 315. Die Nordbrücke 305 ist
für gewöhnlich ein einzelner
Chip in einem Kernlogikchipsatz, der den Prozessor 300 mit
dem Systemspeicher 315 und dem AGP (beschleunigter Graphikport)
und dem PCI (periphere Komponentenschnittstelle) Bus verbindet. Der
PCI-Bus wird in Personalcomputern häufig zum Bereitstellen eines
Datenweges zwischen dem Prozessor und peripheren Einheiten, etwa
Videokarten, Klangkarten, Netzwerkschnittstellenkarten und Modems
verwendet. Der AGP-Bus ist ein Hochgeschwindigkeitsgraphikerweiterungsbus,
der den Anzeigeadapter und den Systemspeicher 315 direkt
verbindet. Der AGP arbeitet unabhängig von dem PCI-Bus. Es ist
anzumerken, dass andere Hauptplatinenkonfigurationen möglich sind,
die keine Nordbrücke
darin aufweisen, oder die eine Nordbrücke ohne AGB- oder PCI-Optionen
aufweisen.
-
Die
Südbrücke 310 ist
für gewöhnlich der Chip
in einem Systemkernlogikchipsatz, der den IDE ("Integrated Drive Electronics") oder EIDE (erweiterten
IDE-)Bus, den USB-Bus, der eine Unterstützung für die „einfügen und benutzen" bzw. plug and play-Funktion
liefert, steuert eine PCI-ISA (Industriestandardarchitektur) Brücke verwaltet
die Tastatur/Maus- Steuerung,
stellt Leistungsverwaltungsfunktionen bereit und steuert andere
periphere Komponenten.
-
Die
USB-Funktionalität
wird häufig
in einer Südbrückeneinrichtung
oder in anderen damit verbundenen Chips eingerichtet, die ein Teil
des Chipsatzes eines Personalcomputers sein können. Wie zuvor beschrieben
ist, liefert diese Funktion eine anwenderfreundliche Schnittstelle
zum Austauschen von Daten zwischen dem Computer, der die eingebaute
Südbrücke oder
vergleichbare Chips aufweist, und den peripheren Komponenten.
-
Um
Geräte
mit geringem Leistungsbedarf begrenzte Host-Fähigkeiten zu verleihen, wurde
die „On-The-Go"-Ergänzung zu
der USB-2.0-Spezifikation entworfen. Die Ergänzung definiert zwei Protokolle:
SRP ("Session Request
Protocol"), die
ein Periphergerät
beim Host anfragen lässt,
die USB-Leistungsversorgung einzuschalten, und HNP ("Host Negotiation
Protocol"), das
es einem peripheren Gerät erlaubt,
der USB-Host zu werden. Somit erlaubt die Ergänzung zu der USB-2.0-Spezifikation,
dass ein tragbares Gerät
die Rolle eines beschränkten USB-Host
annimmt, ohne die Last für
die Unterstützung
aller USB-Funktionen eines Personalcomputers zu tragen.
-
Unter
anderem spezifiziert die OTG-Ergänzung
Geräte
mit einer doppelten Rolle, die mit voller Geschwindigkeit (und optional
mit hoher Geschwindigkeit) als periphere Komponenten betrieben werden
können
und ferner mit voller Geschwindigkeit (und optional mit geringer
und hoher Geschwindigkeit) als Host betrieben werden können. Ferner
ist ein A-Gerät
als ein Host zu Beginn einer Sitzung spezifiziert. Unter gewissen
Bedingungen überlässt das A-Gerät die Rolle
der Host-Steuerung einem B-Gerät mit
doppelter Rolle. Ein B-Gerät
ist zu Beginn einer Sitzung eine periphere Komponente. Wenn das
Gerät als
ein Gerät
mit doppelter Rolle vorgesehen ist, kann es von dem A-Gerät die Rolle
des Host erteilt bekommen.
-
Die
beiden oben erwähnten
Protokolle SRP und HNP sind in der OTG-Ergänzung mittels Zustandsdiagrammen
beschrieben. Diese Zustandsdiagramme definieren mehrere OTG-Zustände und
die Bedingungen, unter denen Übergänge zwischen
diesen Zuständen
auftreten. Das Einrichten einer bzw. mehrerer Zustandsmaschinen,
die mit den in der OTG-Ergänzung spezifizierten
Zustandsdiagrammen kompatibel sind, stellt sich jedoch im Allgemeinen
als äußerst komplex
dar. Insbesondere kann das Einrichten der Zustandsmaschine(n) Modifizierungen an
den Schaltungen erfordern, die die konventionelle USB- Funktion bereitstellen.
Dies kann zu einem erhöhten
Schaltungsentwicklungsaufwand und Herstellungskosten führen.
-
Aus
der
US 2003/0204652
A1 ist ein Datentransfersteuergerät bekannt sowie zugehöriges Elektronikequipment
und ein zugehöriges
Verfahren.
-
Die
WO 2004/012090 A1 beschreibt
einen Dual-Role-kompatiblen USB-Hub und ein zugehöriges Verfahren.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Der
Erfindung liegt die Aufgabe zugrunde, eine verbesserte USB-Steuerungseinrichtung
zum Bereitstellen einer OTG-Funktion bereitzustellen.
-
Diese
Aufgabe wird durch den im unabhängigen
Patentanspruch angegebenen Gegenstand gelöst. Bevorzugte Ausgestaltungen
finden sich in den Unteransprüchen.
-
In
einer Ausführungsform
wird eine USB-Steuerungseinrichtung mit OTG-Funktionalität bereitgestellt.
Die USB-Steuerungseinrichtung umfasst eine Host-Steuerungseinheit
mit einer EHCI-kompatiblen
Host-Steuerung, die ausgebildet ist, eine Host-Funktionalität einzurichten,
um einen Datentransfer zu und/oder von mindestens einem USB-Periphergerät durchzuführen. Die
USB-Steuerungseinrichtung
umfasst ferner eine OTG-Steuereinheit, die ausgebildet ist, eine
OTG-Zustandsmaschine
einzurichten, um den Betrieb der Host-Steuerungseinheit zu steuern.
Die OTG-Steuerungseinheit ist ausgebildet, die OTG-Zustandsmaschine
teilweise in Hardware und teilweise in Software einzurichten.
-
In
einer weiteren Ausführungsform
wird eine USB-Steuerungseinrichtung bereitgestellt, die eine OTG-Funktionalität aufweist.
Die USB-Steuerungseinrichtung umfasst eine Host-Steuereinheit, die eine EHCI-kompatible
Host-Steuerung aufweist, die ausgebildet ist, eine Host-Funktionalität einzurichten,
um einen Datentransfer zu und/oder von mindestens einem USB-Periphergerät durchzuführen. Die USB-Steuerungseinrichtung
umfasst ferner eine OTG-Steuerungseinheit, die ausgebildet ist,
den Betrieb der Host-Steuerungseinheit zu steuern. Die OTG-Steuerungseinheit
umfasst ein OTG-Steuerregister, das Steuerinformationen zur Steuerung
des Betriebs der OTG-Steuerungseinheit enthält, und ein OTG- Statusregister, das
Statusinformationen der OTG-Steuerungseinheit enthält. Das
OTG-Steuerregister
und das Statusregister sind mittels Software zugänglich.
-
Gemäß einer
weiteren Ausführungsform
umfasst eine USB-Steuerungseinrichtung eine Host-Steuereinheit,
die eine EHCI-kompatible Host-Steuerung aufweist, die ausgebildet
ist, eine Hostfunktionalität
einzurichten, um einen Datentransfer zu und/oder von mindestens
einem USB-Periphergerät
auszuführen.
Die USB-Steuerungseinrichtung umfasst ferner eine Gerätesteuerungseinheit, die
ausgebildet ist, eine Gerätefunktion
einzurichten, um einen Datentransfer zu und/oder von mindestens einem
USB-Host-Gerät
auszuführen.
Ferner umfasst die USB-Steuerungseinrichtung einen Anschlussport-Multiplexer,
der ausgebildet ist, einen physikalischen Anschlussport entweder
der Host-Steuerungseinheit oder der Gerätesteuerungseinheit zuzuweisen,
und umfasst eine OTG-Steuerungseinheit, die ausgebildet ist, eine
OTG-Funktionalität
einzurichten. Die OTG-Steuerungseinheit ist in dem Anschlussport-Multiplexer
enthalten.
-
In
einer noch weiteren Ausführungsform
enthält
ein computerlesbares Speichermedium Instruktionen, die, wenn sie
von einem Prozessor ausgeführt werden,
den Prozessor veranlassen, eine USB-Steuerungseinrichtung anzusteuern,
die eine OTG-Funktionalität
aufweist, indem zumindest ein Teil einer OTG-Zustandsmaschine zum
Steuern des Betriebs einer EHCI-kompatiblen Host-Steuerung eingerichtet wird.
Gemäß einer
noch weiteren Ausführungsform enthält ein computerlesbares
Speichermedium Instruktionen, die, wenn sie von einem Prozessor
ausgeführt
werden, den Prozessor veranlassen, eine USB-Steuerungseinrichtung anzusteuern, die
eine OTG-Funktionalität
aufweist, indem auf ein OTG-Steuerregister und ein Statusregister
der USB-Steuerungseinrichtung zugegriffen wird. Das OTG-Steuerregister
und das Statusregister enthalten OTG-Steuerungs- und Statusinformationen,
die zum Einrichten der OTG-Funktionalität geeignet sind.
-
Ferner
wird in einer Ausführungsform
ein Verfahren zum Schaffen einer OTG-Funktionalität in einer
USB-Steuerungseinrichtung bereitgestellt, die ein OTG-Steuerregister
und ein OTG-Statusregister aufweist, auf die beide durch einen Softwaretreiber zugegriffen
werden kann. Das Verfahren umfasst das Lesen mittels des Softwaretreibers
des OTG-Statusregisters
in Reaktion auf das Empfangen eines Interrupts von der USB-Steuerungseinrichtung,
und das Schreiben mittels des Softwaretreibers in das OTG- Steuerregister, um
die USB-Steuerungseinrichtung zu zwingen, ihren OTG-Zustand zu ändern.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
begleitenden Zeichnungen sind hierin mit aufgenommen und bilden
einen Teil der Beschreibung zum Zwecke des Erläuterns der Prinzipien der Erfindung.
Die Zeichnungen sollen die Erfindung nicht auf die dargestellten
und beschriebenen Beispiele, wie die Erfindung praktiziert und angewendet werden
kann, einschränken.
Weitere Merkmale und Vorteile gehen aus der folgenden detaillierteren
Beschreibung der Erfindung hervor, wie sie auch in den begleitenden
Zeichnungen dargestellt ist, wobei:
-
1 ein
beispielhaftes USB-2.0-kompatibles System zeigt;
-
2 die
Hardware- und Softwarekomponentenebenen in dem System aus 1 zeigt;
-
3 eine
typische Hauptplatinenkonfiguration darstellt;
-
4 eine
Blockansicht zeigt, die die Komponenten einer USB-Steuerungseinrichtung
mit OTG-Funktion gemäß einer
Ausführungsform
zeigt;
-
5 ein
Blockdiagramm darstellt, das die Komponenten der Host-Steuerung
zeigt, die ein Teil der Anordnung aus 4 gemäß einer
Ausführungsform
ist;
-
6 eine
OTG-Steuerung gemäß einer Ausführungsform
zeigt; und
-
7 ein
Flussdiagramm ist, das zeigt, wie ein softwaregesteuerter Zustandswechsel
gemäß einer
Ausführungsform
erreicht werden kann.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Es
werden nun die anschaulichen Ausführungsformen der vorliegenden
Erfindung mit Bezug zu den Zeichnungen beschrieben, in denen gleiche Elemente
und Strukturen durch gleiche Bezugszeichen benannt sind.
-
Es
sei nun auf die Zeichnungen und insbesondere auf 4 verwiesen;
eine USB-Steuerungseinrichtung 400 gemäß einer
Ausführungsform
umfasst eine Host-Steuerungseinheit 415, eine Gerätesteuerungseinheit 410,
eine Brücke 405 und
eine Anschlussportmultiplex-Steuerung 420.
Die Anschlussportmultiplexsteuerung 420 der vorliegenden
Ausführungsform
umfasst eine OTG-Steuerung 425, die eine OTG-Funktion in
der USB-Steuerungseinrichtung 400 einrichtet. Wie aus der
folgenden Beschreibung hervorgeht, ermöglicht das Hinzufügen der OTG-Steuerung 425 zu
der Anschlussportmultiplex-Steuerung 420, dass die OTG-Funktion
mit geringstem Aufwand erreicht wird, das standardmäßige oder
auf dem Markt verfügbare
Schaltungen verwendet werden können,
um die Host- und Gerätesteuerungseinheiten 415, 410 mit
nur minimalem zusätzlichen
Hardwareaufwand einzurichten.
-
In
der vorliegenden Ausführungsform
ist die Host-Steuerungseinheit 415 eine EHC/OHC-Kombination und die
Anschlussportmultiplex-Steuerung 420 steuert den Zugriff
der Host-Steuerungseinheit 415 und
der Gerätesteuerungseinheit 410 auf
den gemeinsam benutzten physikalischen Anschluss. Wie nachfolgend
detaillierter erläutert
ist, umfasst die Host-Steuerungseinheit 415 zu
diesem Zwecke Port-Router-Fähigkeiten.
Die Gerätesteuerungseinheit 410 ist
mit der Host-Steuerungseinheit 415 mittels einer Geräte-UTMI
(USB-2.0-transeiver Makrozellenschnittstelle) Schnittstelle verbunden.
-
Die
Brücke 405 kann
für viele
Anwendungen verwendbar sein und muss nicht auf das USB-2.0-Subsystem der vorliegenden
Ausführungsform
eingeschränkt
sein. Die Hauptaufgabe der Brücke 405 besteht
darin, Busprotokolle zu konvertieren. Zusätzlich kann diese als ein Verteiler
oder Decodierer dienen, um mehrere Anschlussports eines Protokolls
einem Anschlussport eines anderen Protokolls zuzuordnen. In der
vorliegenden Ausführungsform können die
mehreren Anschlussports nicht paketbasierte Busanschlussports mit
Anhäufungs-
und Verteilungsfunktionen sein, während der andere Anschlussport
strikt paketbasiert sein kann.
-
Die
Gerätesteuerungseinheit 410 wird
verwendet, um die Gerätefunktion
einzurichten, um damit einen Datentransfer zu und/oder von einem USB-Host-Gerät auszuführen. Die
Gerätesteuerungseinheit 410 kann
mehrere direktionale logische Endpunkte unterstützen.
-
Die
Host-Steuerungseinheit 415 wird verwendet, um die Host-Funktionalität einzurichten,
um einen Datentransfer zu und/oder von einem oder mehreren USB-Periphergeräten auszuführen. Wie
im Folgenden erläutert
ist, kann die Host-Steuerungseinheit 415 zwei (oder mehr)
USB-Anschlussports, eine
EHC- und eine OHC-zugeordnete Steuerung unterstützen.
-
In 5 sind
die wesentlichen Komponenten der Host-Steuerung 415 gemäß einer
Ausführungsform
gezeigt. Im Allgemeinen umfasst die Host-Steuerung 415, 500 drei
Hauptkomponenten: die erweiterte Host-Steuerung (EHC) 225,
eine oder mehrere zugeordnete Host-Steuerung 215 und den Port-Router 515.
-
Die
erweiterte Host-Steuerung 225 handhabt den USB-2.0-Hochgeschwindigkeitsdatenverkehr.
-
In
der begleitenden bzw. Co-Host-Steuerungseinheit 215 der
vorliegenden Ausführungsform gibt
es zwei OHCI-kompatible Host-Steuerungen, d. h. OHC0 505 und
OHC1 510. Diese Steuerungen handhaben den gesamten USB-1.1-kompatiblen
Datenverkehr und können
die alte Tastaturemulation für Umgebungen
ohne USB-Funktion enthalten.
-
Der
Port-Router 515 ordnet die physikalischen Port-Schnittstellen
ihren jeweiligen Besitzern zu. Wenn ein USB-2.0-sensitiver Treiber
in dem System vorhanden ist, wird dieser die Anschlussports entweder
einer Co-Host-Steuerung 505, 510 für Geräte mit geringer
und hoher Geschwindigkeit und Verteiler bzw. Hubs (USB-1.1-Datenverkehr)
oder dem EHC 225 für
Hochgeschwindigkeitsgeräte
und Verteiler zuordnen.
-
D.
h., die in 5 gezeigte USB-2.0-Host-Steuerung
entspricht der EHCI-Spezifikation und ermöglicht es, bestehende OHCI USB-1.1-Host-Steuerungen
mit minimalen Änderungen,
die zur Verbindung mit dem Port-Router-Block 515 anstelle
der physikalischen USB-1.1-Geräte
notwendig sind, zu verwenden.
-
Die
USB-2.0-kompatible Host-Steuerung aus 5 kann als
Hardware-Architektur definiert sein, um eine EHCI-kompatible Host-Steuerung
zur Integration in eine Südbrücke 310 einzurichten.
Die Host-Steuerung liegt dann zwischen den USB-2 analogen Eingabe/Ausgabe-Stiften
und einem Verbindungsschnittstellenmodul zur stromaufwärtigen Verbindung
in Richtung des Systemspeichers, beispielsweise eine Verbindung
mit einer Nordbrücke
herzustellen, wenn in dem System eine vorhanden ist.
-
Wie
aus 5 erkennbar ist, besitzt der Port-Router 515 weitere
Schnittstellen zu der Gerätesteuerungseinheit 410 und
der Anschlussportmultiplexsteuerung 420 (die in der vorliegenden
Ausführungsform
die OTG-Steuerung 425 enthält). Die Schnittstelle zu der
Gerätesteuerung
ist die oben erwähnte
UTMI-Schnittstelle. Die Schnittstelle zu der Anschlussportmultiplexsteuerung
ist eine Steuerschnittstelle für
das Umschalten zwischen Host und Gerät.
-
Es
sei wieder auf 4 verwiesen; in der vorliegenden
Ausführungsform
kann es die wesentliche Funktion der Anschlussportmultiplexsteuerung sein,
den gemeinsam genutzten physikalischen Anschlussport entweder der
Host-Steuerungseinheit 415 oder der Gerätesteuerungseinheit 410 zuzuweisen.
In der vorliegenden Ausführungsform
wird diese Zuweisung in Reaktion auf Software-Instruktionen durchgeführt, die
in der Anschlussportmultiplexsteuerung 420 empfangen werden.
-
Um
ihre Funktionalität
zu erreichen, umfasst in der vorliegenden Ausführungsform die Anschlussportmultiplexsteuerung 420 Register,
auf die mittels Software zugreifbar ist, etwa ein „Fähigkeits"-register und ein
Multiplexer-Steuerregister. Auf beide Register ist mittels Software
zugreifbar, um Daten aus gegebenen Registerfeldern auszulesen und
Daten in derartige Felder zu schreiben. Anzumerken ist jedoch, dass
zumindest einige der Felder Nur-Lese-Felder sein können.
-
In
dem Fähigkeitsregister
der Anschlussportmultiplexsteuerung kann ein Registerfeld vorgesehen
sein, um automatische Pull-up-Aktivierungsinformationen zu speichern,
die verwendet werden können,
um zu steuern, wie Pull-up-Widerstände der USB-Steuerungseinrichtung
aktiviert werden, wenn ein Anschlussport der Gerätesteuerungseinheit 410 zugewiesen
wird. Die automatische Pull-up-Aktivierungsinformation kann anzeigen,
ob Software erforderlich ist, um das Pull-up- bzw. das Hochziehen
zu Aktivieren, oder ob das Hochziehen aktiviert wird, wenn die Spannung
an dem USB-Anschlussport in einem zulässigen Spannungsbereich liegt.
-
Es
können
weitere Registerfelder in dem Fähigkeitsregister
der Anschlussportmultiplexsteuerung vorgesehen sein, um Überstrompolaritäten und Informationen
hinsichtlich der Handhabung von zu hohen Strömen zu speichern. Beispielsweise
kann Information gespeichert sein, um zu steuern, wie die Überstromberichterstattung
für gewisse
Zustände gehandhabt
wird. Des weiteren kann das Fähigkeitsregister
Information hinsichtlich der Anschlussportenergiepolarität und der
Handhabung zum Steuern, wie die Anschlussportenergiesteuerungsinformation von
der Host-Steuerung zugewiesen wird, enthalten.
-
Ein
Multiplexersteuerungsregister der Anschlussportmultiplexsteuerung 420 kann
Registerfelder enthalten, die anzeigen, ob die Spannung an dem USB-Anschlussport
in einem zulässigen
Bereich (d. h. über
4,4 Volt) liegt, sie kann Pull-up-Aktivierungsinformation enthalten,
die anzeigt, ob das Hochziehen aktiviert oder deaktiviert ist, und
sie kann Anschlussportmultiplexersteuerungsinformation enthalten,
die anzeigt, welcher Steuerungseinheit ein Anschlussport zugewiesen
ist, falls dies der Fall ist.
-
Wie
zuvor beschrieben ist, wird die OTG-Protokollunterstützung in
der vorliegenden Ausführungsform
als Teil der Anschlussportmultiplexsteuerung 420 eingerichtet.
Dies ermöglicht
das Verwenden bestehender oder verfügbarer Einheiten, um die Steuerungen 410, 415 einzurichten.
Ferner ermöglicht
die OTG-Steuerungseinheit 425 der vorliegenden Ausführungsform,
dass ein Teil der OTG-Zustandsmaschinen, die in der OTG-Ergänzung spezifiziert
sind, durch Software eingerichtet werden. Um es einem USB-Softwaretreiber
zu ermöglichen,
einen Teil einer OTG-Zustandsmaschine
einzurichten, kann die OTG-Steuerungseinheit 425 Status-
und Steuerungsmöglichkeiten
bereitstellen, die nunmehr mit Bezug zu 6 detaillierter
beschrieben werden.
-
Wie
daraus hervorgeht, besitzt die OTG-Steuerungseinheit 425 eine
Reihe von Registern 600 bis 620, auf die mittels
Zugriff in einem Nur-Lese-Modus oder in einem Schreibzugriffsmodus
zugegriffen werden kann. Wie in 6 gezeigt ist,
enthalten die Register ein OTG-Statusregister 600, ein
OTG-Steuerregister 605, ein OTG-Zeitgeberregister 610,
ein OTG-Interruptregister 615 und ein OTG-Interruptaktivierungsregister 620.
-
Es
sei zunächst
das OTG-Statusregister 600 erläutert, auf das durch Software
in einem Nur-Lese-Modus
zugegriffen werden kann; dieses Register enthält Statusinformationen der
OTG-Steuerungseinheit 425 in
einer Reihe von Registerfeldern.
-
In
einem ersten OTG-Statusregisterfeld kann eine Zeitgeberüberlaufinformation
gespeichert werden. Diese Information kann durch Hardware so gesteuert
werden, dass ein Bit gesetzt wird, wenn ein OTG-Zeitgeber abgelaufen
ist. Das Bit kann zurückgesetzt
werden, wenn der Zeitgeber gerade zählt oder in einem angehaltenen
Zustand ist.
-
In
einem weiteren Registerfeld kann das OTG-Statusregister 600 Informationen über den Deaktivierungszustand
des Anschlussports enthalten, die anzeigt, ob ein der Bus-Steuerungseinheit 415 zugeordneter
Anschlussport oder ein der Gerätesteuerungseinheit 410 zugeordneter
Anschlussport deaktiviert ist oder von der entsprechenden Steuerungseinheit
zu deaktivieren ist. Genauer gesagt, wenn der Anschlussport dem
Host zugeordnet ist, ist das Bit des Feldes für die Anschlussportdeaktivierung
gesetzt, wenn die entsprechende Steuerung den Anschlussport deaktiviert
hat. Wenn der Anschlussport im Gerät zugeordnet ist, wird das
Bit gesetzt, wenn die Steuerung einen Deaktivierungszustand auf
dem Bus erkannt hat.
-
Ein
weiteres Registerfeld des OTG-Statusregisters 600 kann
Anschlussportverbindungsinformation enthalten, die eine Zuordnung
eines Anschlussports zu der Host-Steuerungseinheit 415 oder
zu der Gerätesteuerungseinheit 410 kennzeichnet.
Genauer gesagt, wenn der Anschlussport mit dem Host verbunden ist,
wird das Bit des Registerfelds gesetzt, wenn die geeignete Host-Steuerung
eine Verbindung zu einem entfernten Gerät errichtet hat. Wenn der Anschlussport
einem Gerät
zugeordnet ist, wird das Bit gesetzt, wenn die Gerätesteuerung
von dem entfernten Host kontaktiert wurde.
-
Es
ist anzumerken, dass das Anschlussportverbindungsregisterfeldbit
zu jeder Zeit mittels Software überschrieben
werden kann, obwohl auf dieses Registerfeld lediglich mittels Software
in einem Nur-Lese-Modus zugegriffen werden kann. Um dies zu erreichen,
kann das OTG-Steuerregister 605 ein (beschreibbares) Registerfeld
enthalten, das verwendet werden kann, um den Wert des Anschlussportverbindungsregisterfelds
des OTG-Statusregister zu überschreiben.
Dies wird nachfolgend detaillierter beschrieben.
-
Es
können
weitere Registerfelder in dem OTG-Statusregister 600 vorgesehen
sein, um Statusinformationen über
die OTG-Steuerungseinheit 425 bereitzustellen. Beispielsweise
kann ein Registerfeld vorgesehen sein, das FS(Vollgeschwindigkeits-)Ausgabe-Freigabe- Information, Anschlussportgeschwindigkeitsinformation
und Information, die anzeigt, ob gewissen Leistungszustände oder
Spannungswerte erreicht sind, enthalten.
-
Es
sei nun auf das OTG-Steuerregister 605 verwiesen, das Steuerinformationen
zum Steuern des Betriebs der OTG-Steuerungseinheit 425 enthält. Wiederum
können
hier eine große
Anzahl von Registerfeldern vorgesehen sein. Beispielsweise kann
ein Registerfeld vorhanden sein, das Informationen über den
Zeitgeberzählerzustand
und Steuerinformationen in Bezug darauf, ob ein Anschlussport eingeschaltet
ist oder nicht, ob gewisse Steuerungseinheiten zugewiesen sind oder
nicht, oder ob eine automatische oder durch Software gesteuerte Pull-up-Operation
freigegeben ist, enthält.
-
Anzumerken
ist, dass einige der Registerfelder des OTG-Steuerungsregisters 605 Aliase
von den Anschlussportmultiplexsteuerungsregistern, die zuvor erläutert sind,
sein können,
um sowohl eine Hardwareimplementierung als auch eine Softwaresteuerung
der OTG-Technologie zu vereinfachen.
-
Das
OTG-Steuerregister 605 kann ferner ein Schreibanschlussverbindungsregisterfeld
aufweisen, das Schreibanschlussverbindungsinformationen enthält. Wie
zuvor erwähnt
ist, kann dieses Registerfeld verwendet werden, um den Wert des
Anschlussportverbindungsregisterfelds des OTG-Statusregisters 600 zu überschreiben.
D. h., Software kann in das Schreibanschlussverbindungsregisterfeld
des OTG-Steuerregisters 605 schreiben, um das entsprechende
Registerfeldbit des OTG-Statusregisters 600 zu setzen oder
zurückzusetzen.
Diese Funktionalität
ermöglicht
eine Änderung
eines Anschlussportverbindungsstatusses mittels Software, obwohl das
OTG-Statusregister 600 ein Nur-Lese-Register ist.
-
Genauer
gesagt, wenn der Anschlussport dem Host zugeordnet ist, wird das
Anschlussportverbindungsstatusregisterfeldbit gesetzt, wenn der
Anschluss von dem EHC eingenommen wird und erfolgreich in den HS-(Hochgeschwindigkeits-)Zustand
gebracht wurde. Wenn ferner der Anschlussport dem Host zugeordnet
ist, kann das Statusregisterbit gesetzt werden, wenn die OHC gerade
eine Verbindung erkannt hat. Wenn der Anschlussport dem Gerät zugeordnet
ist, wird das Statusregisterbit gesetzt, wenn eine stromabwärtige Aktivität an dem
USB erkannt wird. Wenn der Anschlussport dem Host zugeordnet ist,
wird das Statusregisterbit zurückgesetzt,
wenn der Port von der EHC eingenommen wird und gerade eine Verbindungsunterbrechung
erkannt hat. In ähnlicher
Weise wird das Bit zurückgesetzt, wenn
die OHC gerade eine Verbindungsunterbrechung erkannt hat. Ferner
kann das Bit zurückgesetzt
werden, sobald die Spannung an dem USB-Anschlussport unter 0,8 Volt
fällt.
Alle diese Funktionen können
mittels Hardwaresteuerung erreicht werden.
-
Das
Schreibanschlussverbindungsregisterfeld des OTG-Steuerregisters 605 ergibt
zusätzlich die
Möglichkeit,
das Statusbit durch Software zu ändern.
Dies wird zu einer zusätzlichen
Flexibilität
für die
OTG-Steuerungsfunktion, so dass Softwaretreiber das USB-Steuergerät zwingen
können,
spezielle Anschlussportverbindungszustände einzunehmen.
-
Es
sei nun wieder auf 6 verwiesen; die OTG-Steuerungseinheit 425 kann
weitere Register aufweisen. Beispielsweise kann das OTG-Zeitgeberregister 610 Registerfelder
aufweisen, um den aktuellen Zeitgeberwert (der ein Nur-Lese-Wert
sein kann) und einen Vorgabewert zu speichern, um einen Vorgabewert
für das
Herunterzählen
einzuladen. Das OTG-Interrupt-Register 615 kann Informationen
in seinen Feldern enthalten, die anzeigen, ob der Zeitgeber abgelaufen
ist, ob sich Anschlussportdeaktivierungs- oder Verbindungszustände geändert haben,
ob eine Empfängeraktivität erkannt
wird, ob die Anschlussportgeschwindigkeit sich geändert hat,
ob eine HS-Verbindungsunterbrechung erkannt wird, ob sich ein Leitungszustand
geändert
hat, oder ob gewisse Spannungsbereiche vorhanden sind. Das OTG-Interruptaktivierungsregister 620 kann
Interruptaktivierungsinformation in seinen Registerfeldern speichern,
die angibt, ob ein globaler Interruptmechanismus aktiviert ist,
oder ob Interruptereignisse, für
die Information in dem OTG-Interruptregister 615 gespeichert
ist, aktiviert sind.
-
Gemäß der obigen
Beschreibung der diversen Ausführungsformen
wird eine USB-Steuerungseinrichtungstechnik
bereitgestellt, um die OTG-Funktion in einer Weise einzurichten,
die das Steuern der Komponenten mit einer Zustandsmaschine ermöglicht,
die teilweise als Hardware und teilweise als Software eingerichtet
ist. Zu diesem Zwecke können Steuer-
und Statusinformationen zwischen dem Prozessor, der die Softwaretreiber
abarbeitet, und der OTG-Steuerungseinheit 425 mittels OTG-Status- und
Steuerregister 600, 605 (und optional anderen OTG-Registern)
ausgetauscht werden. Die Steuerregisterbits steuern interne und
externe Schalter, und die Statusregisterbits zeigen den Zustand
relevanter Signale der OTG-Steuerungseinheit 425 an.
-
In
einer Ausführungsform
besitzt das OTG-Steuerregister 605 zwei Adressen. Das Schreiben
in eine Adresse setzt ausgewählte
Bits, während das
Schreiben in die andere Adresse die ausgewählten Bits zurücksetzt.
Dieses Schema liefert eine maximale Kompatibilität zu anderen Komponenten der USB-Steuerungseinrichtung.
-
Ferner
kann Register-Aliasing verwendet werden, um möglichst viel Flexibilität in Bezug
auf Systemkonfigurationen, die auswählbar sind, zu erreichen. Beispielsweise
kann eine Konfiguration gewählt
werden, die eine statische Anschlussportzuordnung aufweist, beispielsweise
um nicht mehr als eine Gerätefunktion
bereitzustellen. In diesem Falle stellt das BIOS (grundlegendes
Eingabe/Ausgabe-System) den Anschlussportmultiplexer entsprechend
zu dem Zeitpunkt ein, wenn das Computersystem hochgefahren wird.
Der Registerinhalt wird dann nie geändert, solange das System in
Betrieb ist. Wenn jedoch eine andere Konfiguration gewählt wird,
in der die OTG-Funktion verwendet wird, fungiert der USB-Anschlussport
als ein Geräteanschlussport
oder als ein Host-Anschlussport, abhängig von den Anforderungen
des Anwenders, und diese können
sich im Laufe der Zeit ändern.
Der Anschlussportmultiplexer wird dann von einem OTG-Treiber angesteuert.
Somit ermöglicht
es das Register-Aliasing, dass BIOS-Zugriffe und OTG-Treiberzugriffe auch
auf Registerebene getrennt sind. Dies macht es möglich, dass das BIOS ohne Kenntnis über den
OTG-Treiber handelt.
-
In
einer Ausführungsform
kann die USB-Steuerungseinrichtung die folgenden USB-Konfigurationen unterstützen: (i)
mindestens einen Host-Anschlussport und einen peripheren Geräteanschlussport,
(ii) zwei oder mehr Host-Anschlussports, und (iii) einen Geräteanschlussport
mit zweifacher Funktion und mindestens einen weiteren Host-Anschlussport.
Der Geräteanschlussport
mit zweifacher Funktion kann auch als peripherer Geräteanschlussport
mit SRP-Funktion
verwendet werden.
-
Wenn
die USB-Steuerungseinrichtung der vorliegenden Ausführungsform
so konfiguriert wird, dass diese einen zugeordneten USB-Host-Anschlussport
zusätzlich
zu einem Geräteanschlussport
mit doppelter Funktion aufweist, kann der Softwaretreiber eine OTG-Zustandsmaschine
beibehalten, die von der Host-Steuerungszustandsmaschine getrennt
ist.
-
Wie
zuvor erwähnt
ist, werden Ausführungsformen
bereitgestellt, die die OTG-Zustandsmaschine(n)
teilweise in Hardware und teilweise in Software einrichten. Dies
kann erreicht werden, indem einige der Zustände in Hardware und andere
Zustände
in Software eingerichtet werden. Wenn z. B. das Beispiel einer Gerätezustandsmaschine
mit doppelter Funktion genommen wird, so kann der Softwaretreiber
alle Zustände
einrichten, mit Ausnahme der Zustände a_suspend, a_peripheral
und b_wait_acon. Diese drei Zustände
können
dann mittels Hardware eingerichtet werden. Des weiteren kann die
OTG-Zustandsmaschine
bzw. -maschinen teilweise in Hardware und teilweise in Software
eingerichtet werden, indem einige aber nicht alle der Zustandsübergänge, die
für die
OTG-Zustandsmaschine(n)
spezifiziert sind, in Software eingerichtet werden.
-
In 7 ist
ein Flussdiagramm gezeigt, das darstellt, wie ein softwaregesteuerter
Zustandsübergang
stattfinden kann. Im Schritt 700 erkennt die OTG-Steuerungseinheit 425 ein
Ereignis, das erfordern kann, dass die Softwarezustandsmaschine
ihren Zustand ändert.
Die OTG-Steuerungseinheit 425 speichert dann die entsprechende
Statusinformation in dem OTG-Statusregister 600 (Schritt 705)
und gibt einen Interrupt an den Prozessor aus (Schritt 710).
In Reaktion auf den Interrupt liest der USB-Softwaretreiber das
Statusregister im Schritt 715 aus, veranlasst die geeignete
Zustandsänderung
auf der Grundlage des aktuellen Zustandes und des Statusregisterinhalts
(Schritt 720) und schreibt in das OTG-Steuerregister 605, um die
Schaltereinstellungen zu ändern,
d. h. um die geeigneten Änderungen an
der OTG-Hardware durchzuführen
(Schritt 725).
-
Obwohl
die Erfindung in Bezug auf die physikalischen Ausführungsformen
beschrieben ist, die in Übereinstimmung
mit der Erfindung aufgebaut sind, so erkennt der Fachmann, dass
diverse Modifizierungen, Variationen und Verbesserungen der vorliegenden
Erfindung im Lichte der obigen Lehren im Bereich der angefügten Patentansprüche durchgeführt werden
können,
ohne von dem Grundgedanken und beabsichtigten Schutzbereich der
Erfindung abzuweichen. Ferner sind jene Bereiche, von denen angenommen
wird, dass der Fachmann damit vertraut ist, hierin nicht beschrieben,
um die hierin beschriebene Erfindung nicht unnötig zu verdunkeln. Daher ist
die Erfindung als nicht durch die speziellen anschaulichen Ausführungsformen
eingeschränkt
zu sehen, sondern diese ist lediglich durch den Schutzbereich der
angefügten
Patentansprüche
definiert.