-
Die
vorliegende Erfindung bezieht sich auf einen Host und eine Vorrichtung,
die für
eine serielle Datenkommunikation verbunden sind. Insbesondere bezieht
sie sich auf die Erweiterung der Norm des universellen seriellen
Busses (USB) "Universal
Serial Bus Specification Revision 2.2".
-
Die
Erfinder haben ein Gebiet identifiziert, in welchem die aktuelle
USB-Spezifikation verbessert werden könnte. Aktuell muss, wenn ein
USB-Host Daten an ein Ziel in einer angeschlossenen USB-Vorrichtung sendet,
der Prozessor der Vorrichtung unterbrochen werden, um die Daten
vom Puffer, in dem sie temporär gespeichert
sind, wenn sie empfangen werden, an ihre Ziel zu übertragen.
Der USB-Host kann somit zur Verarbeitungsbelastung der angeschlossenen
Vorrichtung beitragen. Somit kann ein Datentransfer dazu führen, dass
eine Anwendung, die auf dem Prozessor läuft, hängen bleibt, oder dass es andere
unerwünschte
Effekte gibt.
-
Es
würde wünschenswert
sein, den Mechanismus, mit dem Daten zwischen Host und Vorrichtung übertragen
werden, zu verbessern.
-
Es
würde wünschenswert
sein, einen Mechanismus zu liefern, mit dem der Host unerwünschte Konsequenzen,
die sich in der Vorrichtung aus dem Datentransfer ergeben, reduzieren
kann.
-
Gemäß einem
ersten Aspekt der Erfindung wird eine Vorrichtung für ein Anschließen an einen
Host für
eine serielle Datenkommunikation geliefert, umfassend:
eine
vorbestimmte Datenstruktur, die anzeigt, ob die Vorrichtung einen
direkten Speicherzugriff unterstützt oder
nicht; und Mittel für
das Übertragen
der vorbestimmten Datenstruktur an den Host.
-
Die
Mittel für
das Übertragen
können
auf eine Anfrage vom Host reagieren, beispielsweise kann bei USB
die Vorrichtung durch den Host abgefragt werden. Die vorbestimmte
Datenstruktur kann eine aus einer Vielzahl von Datenstrukturen sein,
die zu einem Zeitpunkt an den Host übertragen werden. Diese Datenstrukturen
liefern vorzugsweise die Fähigkeiten
der Vorrichtung an den Host. Die Vorrichtung kann eine USB-Vorrichtung
sein, der Host kann ein USB-Host sein, und die Datenstrukturen können eine
Serie von USB-Deskriptoren
sein, die bei der Spezifikation der Vorrichtung geliefert werden.
Die vorbestimmte Datenstruktur kann ein nicht standardmäßiger Deskriptor
sein, der einen anderen, vorzugsweise vorhergehenden, Deskriptor
erweitert.
-
Gemäß einem
zweiten Aspekt der vorliegenden Erfindung wird ein Host für ein Anschließen an eine Vorrichtung
für eine
serielle Datenkommunikation geliefert, umfassend:
Übertragungsmittel
für das Übertragen
einer Datenstruktur von der Vorrichtung an den Host, dadurch gekennzeichnet,
dass sie Identifikationsmittel umfasst, die betriebsfähig sind,
um eine übertragene
Datenstruktur als eine vorbestimmte Datenstruktur zu identifizieren,
die anzeigt, dass die Vorrichtung einen direkten Speicherzugriff
unterstützt.
-
Die Übertragungsvorrichtung
kann ausgebildet sein, um, die Vorrichtung aufzufordern, mindestens
die vorbestimmte Datenstruktur zu senden, beispielsweise wird beim
USB die Vorrichtung vom Host abgefragt. Die vorbestimmte Datenstruktur
kann eine aus einer Vielzahl von Datenstrukturen sein, die zum gleichen
Zeitpunkt zum Host übertragen
wurden. Diese Datenstrukturen liefern vorzugsweise die Fähigkeiten
der Vorrichtung an den Host. Die Vorrichtung kann eine USB-Vorrichtung
sein, der Host kann ein USB-Host sein, und die Datenstruktur kann
eine Serie von USB-Deskriptoren
sein, die bei der Spezifizierung der Vorrichtung geliefert werden.
Die vorbestimmte Datenstruktur kann ein nicht standardmäßiger Deskriptor
sein, der einen anderen, vorzugsweise vorausgehenden, Deskriptor
erweitert. Der Host kann weiter Zuweisungsmittel für das Zuweisen von
Aufgaben, die sich auf den Datentransfer von/zu der Vorrichtung
beziehen, in Abhängigkeit
vom Inhalt der vorbestimmte Datenstruktur umfassen.
-
Gemäß einem
dritten Aspekt der vorliegenden Erfindung wird ein System geliefert,
das einen Host, eine Vorrichtung, die eine vorbestimmte Datenstruktur
umfasst, und serielle Daten, die zwischen dem Host und der Vorrichtung
verbunden sind, aufweist, umfassend:
Mittel für das Übertragen
der vorbestimmten Datenstruktur van der Vorrichtung an den Host über die
seriellen Datenverbindung, wobei die vorbestimmte Datenstruktur
anzeigt, ob die Vorrichtung einen direkten Speicherzugriff unterstützt oder
nicht.
-
Ausführungsformen
der Erfindung liefern einen Mechanismus, mit dem ein Host bestimmt,
ob die angeschlossene-Vorrichtung
einen direkten Speicherzugriff (DMA) für gewisse Funktionen unterstützt. Mit
dieser Information kann der Host wählen, ob er mit einer Schnittstelle/einem
Endpunkt der Vorrichtung, die DMA unterstützt, oder mit einer Schnittstelle/einem
Endpunkt der Vorrichtung, die DMA nicht unterstützt, kommuniziert. Dies ermöglicht eine
Flexibilität
des Hosts beim zeitlichen Steuern des Transfers der Daten über den
Bus, der den Host und die Vorrichtung verbindet, und ermöglicht es
dem Host, die Verwendung der Vorrichtung zu optimieren. Die Verwendung
einer Schnittstelle/eines Endpunkts, die oder der DMA unterstützt, durch
den Host reduziert die Belastung des Prozessors der Vorrichtung,
da Prozessorunterbrechungen nicht länger erforderlich sind, um
die Daten an ihr Ziel zu übertragen.
Dies ist insbesondere vorteilhaft für mobile Vorrichtung, wie mobile
zellulare Telefone, die Prozessoren niedriger Leistung haben können, die
verwendet werden, um gleichzeitig Anwendungen des Benutzers ablaufen
zu lassen.
-
In
den meisten USB-Vorrichtungen wird, wenn ein DMA unterstützt wird,
dieser sowohl durch die inneren als auch äußeren Endpunkte unterstützt. In
einer bevorzugten Ausführungsform
bestimmt der Host, ob eine Schnittstelle DMA unterstützt, wobei
angenommen wird, dass wenn die Schnittstelle DMA unterstützt, dann
sowohl die inneren als auch äußeren Endpunkte
DMA unterstützten.
Dies liefert eine vereinfachte Implementierung der Erfindung.
-
Für ein besseres
Verständnis
der vorliegenden Erfindung und um zu verstehen, wie diese zur Wirkung gebracht
werden kann, wird nun beispielhaft auf die begleitenden Zeichnungen
Bezug genommen:
-
1 ist
eine schematische Darstellung eines USB-Systems; und
-
2 zeigt
die Information, die von der Vorrichtung an den Host übertragen
wird.
-
1 zeigt
eine Vorrichtung für
den Anschluss eines Hosts 16 für eine serielle Kommunikation,
umfassend: Mittel 27 für
das Übertragen
einer vorbestimmten Datenstruktur 46, 56, die
anzeigt, ob die Vorrichtung einen direkten Speicherzugriff unterstützt oder
nicht, an den Host. Sie zeigt auch einen Host 16 für das Anschließen an eine
Vorrichtung 14 für
eine serielle Datenkommunikation, umfassend: Übertragungsmittel 26 für das Übertragen
einer vorbestimmten Datenstruktur 46, 56, die
anzeigt, ob die Vorrichtung einen direkten Speicherzugriff auf den
Speicher 29 unterstützt
oder nicht, von der Vorrichtung 14 an den Host 16.
-
Der
universelle serielle Bus (USB) ist ein Kabelbus, der einen Datenaustausch
zwischen einem Host-Computer 20 und einem großen Bereich
von gleichzeitig zugänglichen
peripheren Geräten 14 unterstützt. Die
angeschlossenen peripheren Geräte 14 teilen
die USB-Bandbreite durch ein vom Host zeitlich gesteuertes, auf
einem Token basierendes Protokoll. Der Bus 12 erlaubt es,
dass periphere Geräte
angeschlossen, konfiguriert, verwendet, gelöst werden können, während der Host und andere periphere
Geräte
in Betrieb sind.
-
1 ist
eine schematische Darstellung eines universellen seriellen Bussystems
(USB-System) 10, das eine USB-Verbindung 12, die
ein USB-Gerät 14 mit
einem USB-Host 16 verbindet, umfasst. Der USB-Host kann
ein Computer 20 sein, der einen Bus 22 aufweist,
der einen Prozessor 24 mit einer USB-Host-Steuerurg 26 und
einem Speicher 28 verbindet. Die USB-Host-Steuerurg 26 verbindet
den Computer 20 mit der USB-Verbindung 12.
-
In
diesen Beispiel umfasst die Vorrichtung 14 eine Schnittstelle 27,
die mit der Verbindung 12 einen Bus 23 verbindet,
der die Schnittstelle 27 mit einem Prozessor 25 und
einem Speicher 29 verbindet. Die Schnittstelle kann auf
den Speicher 29 zugreifen, um unter Verwendung eines- direkten
Speicherzugriffs (DMA) direkt zu lesen oder zu schreiben, oder dies
unter Verwendung des Busses 23 tun, der sich unter der Steuerung
des Prozessors 25 befindet.
-
Das
USB-System 10 überträgt Daten
in einem bitseriellen Format zwischen dem USB-Host 16 und dem
USB-Gerät 14.
Es gibt nur einen Host in einem USB-System und dieser ist der Master
des Busses. Der USB ist ein abgefragter Bus und der Host initiiert
alle Datenübertragungen,
die von einem Endpunkt gelesen oder zu ihm geschrieben werden.
-
Ein
Endpunkt ist eine Quelle oder Senke von Daten. Jeder Endpunkt weist
einen Speicherpuffer auf, der die Daten puffert, bevor er sie an
ihr endgültiges
Ziel bringt. Der Host kann Daten an den Speicherpuffer senden oder
Daten vom Speicherpuffer anfordern.
-
Die
Datenübertragung
zwischen einem Host 16 und einer Vorrichtung 14 geschieht
zwischen dem Host 16 und einem Datenendpunkt und wird als
eine Pipe bezeichnet. Die Pipe bestimmt die Richtung des Datenflusses,
den Typ des Datenflusses, beispielsweise Masse (bulk), isochron
oder Steuerung, und wie viel Bandbreite der Datenübertragung
zugewiesen wird.
-
Wenn
die USB-Vorrichtung 14 anfänglich mit dem System 10 verbunden
wird, so findet eine Busspezifizierung statt. Dies ist das Verfahren,
bei dem der Vorrichtung eine Adresse zugewiesen wird, und bei der Daten
von der Vorrichtung an den Host gesendet werden, die die Fähigkeiten
der Vorrichtung identifizieren und eine Kommunikation zwischen dem
Host und der Vorrichtung ermöglichen.
-
Der
USB-Host 16 kommuniziert mit einer USB-Vorrichtung 14 durch
das Senden von Paketen an die USB-Vorrichtung 14, die unter
Verwendung der zugeordneten Adresse adressiert sind.
-
Alle
USB-Vorrichtungen müssen
eine speziell bezeichnete Pipe am Endpunkt null unterstützen. Verbunden
mit dem Endpunkt Null ist die Information, die erforderlich ist,
um die Vorrichtung dem Host bei der Spezifizierung vollständig zu
beschreiben. Diese Information umfasst die Vorrichtungs-, Konfigurations-, Schnittstellen-
und Endpunkt-Deskriptoren.
Die Deskriptoren geben die Attribute der USB-Vorrichtung an den Host weiter.
-
Ein
Deskriptor ist eine Datenstruktur mit einem definierten Format.
Jeder Deskriptor beginnt mit einem bytebreiten Feld, das die Gesamtzahl
der Bytes im Deskriptor enthält,
gefolgt von einem byte-breiten Feld, das den Deskriptortyp identifiziert.
-
Ein
Vorrichtungs-Deskriptor identifiziert die Vorrichtung eindeutig
und informiert den Host über
die Anzahl der Konfigurationen, die die Vorrichtung aufweist.
-
Ein
Konfigurations-Deskriptor informiert den Host über die verschiedenen mögliche Konfigurationen der
Vorrichtung, beispielsweise mit eigener Energieversorgung und/oder über den
Bus mit Energie versorgt. Er informiert den Host auch über die
Anzahl der Schnittstellen, die sie hat.
-
Jede
Schnittstelle ist eine Gruppierung von Endpunkten in eine funktionale
Gruppe, die ein einziges Merkmal der Vorrichtung ausführt. Beispielsweise
würde in
einer kombinierten Fax/Scanner/Drucker-Vorrichtung eine Schnittstelle
und ein Schnittstellen-Deskriptor für jeweils die Faxfunktion,
die Scannerfunktion und die Druckerfunktion bestehen. Der Fax-Schnittstellen-Deskriptor
spezifiziert den inneren Endpunkt und den äußeren Endpunkt, der für das Faxen
verwendet wird. Der Scanner-Schnittstellen-Deskriptor spezifiziert.
die verschiedenen Endpunkte, die für das- Scannenverwendet werden.
Der Drucker-Schnittstellen-Deskriptor spezifiziert die zusätzlichen
Endpunkte, die für
das Drucken verwendet werden.
-
Gemäß einer
ersten Ausführungsform
der Erfindung wird ein neuer nicht standardmäßiger DMA-Deskriptor definiert.
Dieser Deskriptor wird verwendet, um den Schnittstellen-Deskriptor zu erweitern,
und er gibt dem Host an, ob ein DMA auf dieser Schnittstelle verfügbar ist
oder nicht. Der DMA-Deskriptor
folgt dem Schnittstellen-Deskriptor, den er erweitert, sofort während der
Spezifizierung.
-
2 zeigt
die Information, die von der Vorrichtung an den Host während des
Spezifizierungsverfahrens übertragen
und am Endpunkt Null der Vorrichtung gespeichert wird. Die Information 30 umfasst
im dargestellten Beispiel einen Vorrichtungs-Deskriptor 32,
einen Konfigurations-Deskriptor 34, einen ersten Schnittstellen-Deskriptor 40 und
einen zweiten Schnittstellen-Deskriptor 50, erste und zweite
Endpunkt-Deskriptoren 42 und 44, die mit der ersten
Schnittstelle verbunden sind, und dritte und vierte Schnittstellen-Deskriptoren 52 und 54,
die mit der zweiten Schnittstelle verbunden sind. Der erste Endpunkt-Deskriptor 42 und
der zweite Endpunkt-Deskriptor 44 folgen dem Deskriptor 40 der
Schnittstelle, mit der sie verbunden sind. Der dritte Endpunkt-Deskriptor 52 und
der vierte Endpunkt-Deskriptor 54 folgen
dem Deskriptor 50 der Schnittstelle, mit der sie verbunden
sind. Ein erster DMA-Deskriptor 46, der mit der ersten
Schnittstelle verbunden ist, folgt sofort und erweitert den ersten
Schnittstellen-Deskriptor 40. Ein zweiter DMA-Deskriptor 56,
der mit der zweiten Schnittstelle verbunden ist, folgt sofort und
erweitert den zweiten Schnittstellen-Deskriptor 50.
-
Ein
DMA-Deskriptor ist eine Datenstruktur mit einem definierten Format.
Er beginnt mit einem byte-breiten Feld, das die Gesamtzahl der Bytes
im Deskriptor enthält,
gefolgt von- einem byte-breiten Feld, das den Typ des Deskriptor
identifiziert.
-
Das
Format des Deskriptors ist folgendes:
bFunktionLänge | 0 × 04 |
bDeskriptorTyp | 0 × 24 |
bDeskriptorUntertyp | O × FD |
bDMA
verfügbar | 0 × 00/0 × 01 |
-
Der
Wert für
bFunktionLänge
wird durch die Spezifikation des universellen seriellen Busses bestimmt. Der
Wert für
bDeskriptorTyp wird auch durch die Spezifikation des universellen
seriellen Busses bestimmt und identifiziert die Kommunikationsvorrichtungsklasse.
Der Wert bDeskriptorUntertyp ist einer von vielen definierten Werten
in der Kommunikationsvorrichtungsklasse, die zur freien Verwendung
stehen. Er wird verwendet, um den DMA-Deskriptor zu identifizieren.
Der Wert von bDMAverfügbar
zeigt an, ob ein DMA von der Schnittstelle unterstützt wird
oder nicht (0 × 00
zeigt an: kein DMA, 0 × 01
zeigt an, dass der DMA eine Vorrichtungsklasse ist, die frei für die Verwendung
ist). Sie wird verwendet, um den DMA-Deskriptor zu identifizieren.
Der Wert von bDMA verfügbar
zeigt an, ob der DMA von der Schnittstelle unterstützt wird
oder nicht (0 × 00
zeigt an: kein DMA, 0 × 01
zeigt an: DMA ist verfügbar).
-
Der
Host identifiziert eindeutig den empfangenen Deskriptor als einen
DMA-Deskriptor aus den Feldern bDeskriptorTyp und bDeskriptorUntertyp.
-
In
dieser Ausführungsform
wird angenommen, dass wenn eine Schnittstelle den DMA unterstützt, jeder
der Endpunkte, die mit diesem Endpunkt verbunden sind, auch den
DMA unterstützt.
Der Host bestimmt, welche Schnittstellen fähig sind, DMA zu unterstützen. Der
Host weist eine Intelligenz auf, die unterschiedliche Datentransferaufgaben
an verschiedene Schnittstellen zuweist, so dass der Transfer der
Daten optimiert wird, ohne den Prozessor der Vorrichtung zu überlasten.
-
Gemäß einer
alternativen Ausführungsform
wird der DMA-Deskriptor
verwendet, um einen Endpunkt-Deskriptor statt einen Schnittstellen-Deskriptor
zu erweitern. In dieser Ausführungsform
folgt ein Endpunkt-Deskriptor sofort auf den Schnittstellen-Deskriptor,
und der DMA-Deskriptor, der mit einem Endpunkt verbunden ist, folgt
direkt auf den Endpunkt-Deskriptor
und erweitert ihn. Jeder Endpunkt-Deskriptor weist vorzugsweise
einen zugehörigen
DMA-Deskriptor auf. In dieser alternativen Ausführungsform wird angenommen, dass
die Tatsache, ob ein Endpunkt einer Schnittstelle einen DMA unterstützt oder
nicht, unabhängig
davon ist, ob die anderen Endpunkte der Schnittstelle den DMA unterstützen.