-
Die
Erfindung bezieht sich auf ein Bus-System, insbesondere auf einen
Bus-Controller,
und auf ein Gerät
mit dem Bus-Controller.
-
Die
Erfindung bezieht im besonderen auf eine integrierte Schaltung,
die als ein Host-Controller innerhalb eines elektronischen Gerätes benutzt
werden kann, um den Wirkungsgrad des Betriebes des Gerätes zu verbessern.
-
In
einem konventionellen elektronischen Gerät, das als USB-Host arbeitet,
ist der Prozessor in der Lage, Daten in einen Systemspeicher zu
schreiben. Eine integrierte Schaltung als Host-Controller ist dann
in der Lage, die Daten direkt aus dem Systemspeicher zu lesen. Um
dies durchzuführen,
muss der Host-Controller die Master-Funktion für den Systemspeicher übernehmen.
Da der Systemspeicher jedoch von der integrierten Schaltung des
Host-Controllers und dem Systemprozessor gemeinsam benutzt wird,
ergibt diese Forderung, dass der Host-Controller in der Lage sein solle, die
Master-Funktion über
den Systemspeicher zu übernehmen,
die Benutzung eines Bus-Masters, der spezifisch für den Systemprozessor
ist. Während
der Host-Controller die Master-Funktion über den Systemspeicher übernimmt,
kann darüber
hinaus die Kernfunktion des Gerätes,
das unter Steuerung durch den Systemprozessor läuft, unterbrochen werden.
-
US 2002/0116565 beschreibt
einen USB-Host-Controller für
die Benutzung in eingebetteten Systemen, in denen bis zu 16 Transaktionen
zusammengefasst werden, um die Häufigkeit
von Interrupts des Mikroprozessors zu reduzieren.
-
Nach
einem Aspekt der vorliegenden Erfindung ist eine integrierte Schaltung
als Host-Controller nicht in der Lage, die Master-Funktion über den Systemspeicher übernehmen,
sondern arbeitet statt dessen nur als Folgegerät. Der eingebettete Prozessor
ist dann dazu ausgebildet, die Daten in die integrierte Schaltung
des Host-Controllers in der Form von transfer-basierten Transaktionen
zu schreiben.
-
Gemäß der vorliegenden
Erfindung ist ein Host-Controller zur Benutzung in einem Bus-Kommunikationsgerät, welches
einen Host-Mikroprozessor und einen Systemspeicher enthält, vorgesehen. Der
Host-Controller enthält:
eine erste Schnittstelle zur Verbindung mit einem Speicherbus, der
den Host-Mikroprozessor
und den Systemspeicher derart verbindet, dass der Host-Controller in der
Lage ist, nur als Folgegerät
auf dem Speicherbus zu arbeiten. Es ist ein interner Speicher zum
Speichern einer Mehrzahl von transfer-basierten Transfer-Deskriptoren
vorgesehen, die durch die erste Schnittstelle empfangen wurden,
und eine zweite Schnittstelle zur Verbindung mit einem externen
Bus. Der Host-Controller ist dazu ausgebildet, gespeicherte transfer-basierte
Transfer-Deskriptoren
auszuführen,
den Inhalt der gespeicherten transfer-basierten Transfer-Deskriptoren
bei deren Ausführung
zu aktualisieren und die aktualisierten, gespeicherten transfer-basierten Transfer-Deskriptoren
in den Systemspeicher zu kopieren. Der interne Speicher ist in zwei
Teile geteilt und dazu ausgebildet, transfer-basierte Transfer-Deskriptoren-Header
in einem ersten Teil zu speichern und transfer-basierte Transfer-Deskriptoren-Nutzdaten
in einem zweiten Teil zu speichern. Der erste Teil des internen
Speichers ist in zwei Sub-Teile unterteilt und speichert Transfer-Deskriptoren-Header,
welche sich auf periodische Übertragungen
beziehen, in einem ersten Sub-Teil, und Transfer-Deskriptoren-Header, welche sich
auf asynchrone Übertragungen
beziehen, in einem zweiten Sub-Teil. Gemäß einem zweiten Aspekt der
Erfindung ist ein Bus-Kommunikationsgerät mit einem
Host-Controller, wie oben beschrieben, vorgesehen.
-
Die
Erfindung wird nachfolgend unter Bezug auf die beigefügten Zeichnungen
beschrieben.
-
1 zeigt
ein Blockschaltbild eines USB-Hosts nach einem Aspekt der vorliegenden
Erfindung,
-
2 zeigt
ein schematisches Diagramm eines Host-Controllers nach einem anderen
Aspekt der vorliegenden Erfindung,
-
3 zeigt
ein Blockschaltbild einer alternativen Form eines Host-Controllers nach
einem Aspekt der vorliegenden Erfindung.
-
4 zeigt
die Struktur des Speichers in dem Host-Controller der 2 oder 3.
-
5 zeigt
eine Darstellung, die das Format der Software in dem Gerät nach 1 darstellt.
-
6 stellt
das Format der von dem Host-Mikroprozessor in den Host-Controller geschriebenen
Daten dar.
-
7 zeigt die Struktur eines Transfer-Deskriptor-Headers,
mit dem Daten übertragen
werden.
-
8 ist
eine schematische Darstellung von zu übertragenden Daten, die in
dem Speicher der 4 gespeichert sind.
-
9 stellt
ein Verfahren dar, durch das die Daten nach 8 übertragen
werden können.
-
1 ist
ein Blockdiagramm der relevanten Teile eines elektronischen Gerätes 10,
das als USB-Host arbeitet. Die Erfindung ist insbesondere anwendbar
auf Geräte
wie Mobiltelefone oder PDAs, in denen funktionale Grenzen des Mikroprozessors und
des Systemspeichers relevanter sind als etwa in Personalcomputern
(PCs). Die Erfindung ist jedoch in beliebigen anderen Geräten anwendbar,
die als USB-Hosts arbeiten können.
-
Es
ist offensichtlich, dass das Gerät 10 viele Merkmale
haben wird, die nicht in 1 gezeigt sind, da sie zum Verständnis der
Erfindung nicht relevant sind.
-
Das
Gerät 10 weist
einen Mikroprozessor 20 auf, der einen Prozessorkern 22 hat,
der über
einen Standard-Systembus 23 mit einer LCD-Steuerung 24,
einem DMA-Master 25 und einer Speichersteuerung 26 verbunden
ist. Die Speichersteuerung 26 ist mit einem Systemspeicher 30 mittels
eines peripheren Busses 32 verbunden.
-
Ein
Host-Controller 40 ist auch über den peripheren Bus oder
Speicherbus 32 mit dem Host-Mikroprozessor 20 und
dem Systemspeicher 30 verbunden. Der Host-Controller 40 weist
eine Schnittstelle für
einen USB-Bus 42 auf, durch die er mit mehreren USB-Einheiten
verbunden werden kann. In der dargestellten Ausführungsform ist der Host-Controller 40 ein
USB 2.0-Host-Controller.
-
Wie
es üblich
ist, ist der Host-Controller dazu ausgebildet, Daten abzurufen,
die von dem Prozessor 20 in geeignetem Format vorbereitet
wurden, um diese Daten über
die Bus-Schnittstelle zu übertragen.
In USB-Übertragungen
existieren zwei Kategorien von Daten-Transfers, nämlich asynchroner Transfer
und periodischer Transfer. Steuer- und Massendaten werden unter
Benutzung des asynchronen Transfers übertragen, während ISO-
und Interrupt-Daten unter Benutzung des periodischen Transfers übertragen
werden. Eine Queue-Transaction-Deskriptor
(qTD) Datenstruktur wird für
den asynchronen Transfer benutzt, und eine Isochronous-Transaction-Deskriptor
(iTD)-Datenstruktur wird für
den periodischen Transfer benutzt.
-
Der
Prozessor 20 bereitet die Daten in der geeigneten Struktur
vor und speichert sie in dem Systemspeicher 30, und der
Host-Controller 40 muss dann die Daten aus dem Systemspeicher
abrufen.
-
2 zeigt
eine detailliertere Darstellung der Struktur des eingebetteten USB-Host-Controllers 40.
-
Wie
schon oben erwähnt,
hat der Host-Cotroller 40 eine Verbindung für den Speicherbus 32, der
mit einer Schnittstelle 44 verbunden ist, die einen Memory-Mapped-Input/Output,
eine Memory-Management-Unit und einen Slave-DMA-Controller aufweist. Die Schnittstelle 44 hat
auch eine Verbindung 46 für Steuer- und Interrupt-Signale sowie Register 48,
die die RAM-Struktur und die Arbeitsregister des Host-Controllers 40 unterstützen.
-
Die
Schnittstelle 44 ist mit dem auf dem Chip angeordneten
RAM 50 des Host-Controllers
verbunden; es handelt sich hier in der bevorzugten Ausführung um
ein Zwei-Anschluss-RAM, wie nachfolgend noch im Einzelnen beschrieben
wird. Der Speicher 50 ist mit der Steuerlogikeinheit 52 des
Host-Controllers verbun den, die auch eine Schnittstelle für den USB-Bus 42 enthält. Steuersignale
können
von den Registern 48 über
einen internen Bus 54 an die Logikeinheit 52 gesendet
werden.
-
Wie
oben erwähnt,
ist der auf dem Chip angeordnete Speicher 50 in diesem
Fall ein Zwei-Anschluss-RAM, der ein gleichzeitiges Schreiben und Lesen
von Daten in dem Speicher ermöglicht.
-
3 zeigt
eine alternative Ausführungsform
der Erfindung, in der gemeinsame Bezugszeichen die gleichen Merkmale
wie in 2 anzeigen. In diesem Fall ist der Speicher 56 auf
dem Chip ein Einzel-Anschluss-RAM, und zu schreibende und zu lesende
Daten in dem Speicher 56 werden durch einen Arbitrierer 58 übertragen,
der wiederum effektiv einen gleichzeitigen Zugriff zu dem Speicher 56 ermöglicht.
-
4 zeigt
die Struktur des auf dem Chip angeordneten Speichers. Soweit es
um die in 4 gezeigte Struktur geht, ist
diese die gleiche, unabhängig
davon, ob der auf dem Chip angeordnete Speicher ein Zwei-Anschluss-RAM 50 der 2 oder
ein Einzel-Anschluss-RAM 56 der 3 ist.
-
Wie 4 zeigt,
ist der RAM effektiv in zwei Teile aufgeteilt, nämlich einen ersten Teil 70,
der Header- und Statusinformationen für die gespeicherten Transfer-Deskriptoren TD1,
TD2, ..., TDn enthält,
und einen zweiten Teil 76, der die Nutzdaten für solche gespeicherten
Transfer-Deskriptoren TD1, TD2, ..., TDn enthält. Der erste Teil ist noch
einmal unterteilt in einen Abschnitt 72, der sich auf asynchrone
(Massen-)Transfers bezieht, und einen Abschnitt 74, der sich
auf periodische (isochrone und Interrupt-)Transfers bezieht.
-
Diese
Struktur des RAMs hat den Vorteil, dass der Host-Mikroprozessor 20 auf
einfache Weise die Transfer-Deskriptor-Header zusammen schreiben
und lesen kann. Diese Struktur erleichtert es auch, dass die sich
auf die periodischen Transfers beziehenden Header nur einmal in
jedem Mikro-Frame abgetastet werden, während sich auf asynchrone Transfers
beziehende Header in einem Mikro-Frame kontinuierlich
abgetastet werden.
-
Dies
bedeutet, dass die Zeit zwischen Transaktionen kurz ist und, was
gleichermaßen
wichtig ist, sie ist von einer Transaktion zur anderen gleich.
-
5 ist
eine schematische Darstellung, die zum Teil die auf dem Host-Controller 40 laufende Software
zeigt, um das Arbeitsverfahren des Gerätes gemäß der Erfindung zu erläutern.
-
Der
Host-Controller 40 läuft
mit der USB-Treiber-Software 80 und mit der USB-Enhanced-Host-Controller-Schnittstellen-Software 82,
die im allgemeinen üblich
sind.
-
Gemäß der vorliegenden
Erfindung läuft
der Host-Controller jedoch auch mit USB-EHCI-Schnittstellen-Software 84,
die eine Liste von transfer-basierten Transfer-Deskriptoren für jeden
Endpunkt vorbereitet, an den Daten zu übertragen sind.
-
Die
EHCI-Schnittstellen-Software 84 wird so geschrieben, dass
sie die Parameter benutzt, die durch den EHCI-Host-Stapel 82 für die existierenden periodischen
und asynchronen Headers erzeugt werden, und sie kann für alle verschiedenen
Formen von USB-Transfers benutzt werden, insbesondere USB-Transfers
mit hoher Geschwindigkeit wie isochrone, Massen-, Interrupt- und
Steuer- sowie Start/Stop-Split-Transaktionen.
-
Der
Host-Mikroprozessor 20 schreibt die tranfer-basierten Transfer-Deskriptoren über den
peripheren Bus 32 in den RAM 50 oder 58 des Host-Controllers,
ohne dass der Host-Controller 40 die Masterfunktion für den Bus 32 übernehmen muss.
In anderen Worten, der Host-Controller 40 arbeit nur in
untergeordneter Position. Die tranfer-basierten Transfer-Deskriptoren
können
dann in den RAM 50 oder 58 des Host-Controllers 40 gespeichert und
gelisted werden.
-
In
vorteilhafter Weise wird der einbebaute Speicher 50 oder 58 des
Host-Controllers 40 in
dem Host-Mikroprozessor 20 abgebildet, was es dem Host-Mikroprozessor 20 erleichtert,
die Transaktionen zu planen.
-
Wie
oben beschrieben wurde, bedeutet darüber hinaus die Benutzung eines
Zwei-Anschluss-RAMs 50 oder eines Einzel-Anschluss-RAMs 56 und
eines Arbitrierers 58, dass der Host-Mikroprozessor 20 Daten
in einen anderen Blockraum einschreiben kann, während ein transfer-basierter
Transfer-Deskriptor durch den Host-Controller 40 ausgeführt wird.
-
6 stellt
das Format eines USB-Rahmens dar, der in mehrere Mikro-Rahmen unterteilt
ist, in die Daten vom Host-Controller 40 über den
USB-Bus 42 übertragen
werden. Wie bekannt, können
Mehrfach-Transaktionen, einschließlich Transaktionen verschiedener
Transferarten, innerhalb eines Mikro-Rahmens ausgesendet werden.
Wiederum, wie allgemein bekannt, wird ein isochroner Transfer mit hoher
Geschwindigkeit immer zuerst durchgeführt, gefolgt von einem Interrupt-Transfer
mit hoher Geschwindigkeit und Start-Split und Complete-Split-Transfers mit
voller und niedriger Geschwindigkeit, wobei Massendaten mit hoher
Geschwindigkeit die restliche Zeit des Mikro-Rahmens einnehmen.
-
Das
transfer-basierte Protokoll erlaubt es dem Host-Mikroprozessor 20,
einen 1 ms langen Rahmen von Daten in den RAM 50 oder 58 des Host-Controllers
einzuschreiben (vorausgesetzt, dass der RAM groß genug ist, um diese Daten
zu halten), so dass dieser über
den USB-Bus 42 ohne weitere Intervention vom Host-Mikroprozessor übertragen
werden kann.
-
7 stellt das transfer-basierte Protokoll zur
Unterstützung
von USB-Übertragungen
mit hoher Geschwindigkeit dar, wobei 7a das
Format eines 16-Byte-Headers eines transfer-basierten Transfer-Deskriptors
für einen
Endpunkt in Übereinstimmung
mit dem Protokoll zeigt und 7b und 7c die Inhalte der Header-Felder beschreiben.
Der transfer-basierte Protokoll-Header besteht aus Parametern, die
dieselbe Definition wie die konventionelle USB-EHCI-Software haben, wodurch die Transfer-Deskriptoren
auf einfache Weise konstruiert werden können.
-
Das
transfer-basierte Protokoll stellt außerdem sicher, dass Daten auf
einer fairen Basis an jeden Endpunkt gesendet werden können.
-
8 zeigt
eine Situation, in der die einem ersten Transfer-Deskriptor TD1
zugeordneten Nutzdaten in drei Pakete PL1, PL2 und PL3 von je 64 Bytes
eingeteilt werden. Die einem zweiten Transfer-Deskriptor TD2 zugeordneten
Nutzdaten enthalten nur ein Paket PL1 von 32 Bytes. Die einem dritten Transfer-Deskriptor TD3 zugeordneten
Nutzdaten werden in zwei Pakete PL1 und PL2 von je 8 Bytes eingeteilt,
und die einem vierten Transfer-Deskriptor TD4 zugeordneten Nutzdaten
werden in vier Pakete PL1, PL2, PL3 und PL4 von je 16 Bytes eingeteilt.
-
9 stellt
das Verfahren dar, durch das diese Datenpakete aus dem RAM 50 oder 56 zu
ihren entsprechenden Endpunkten in entsprechenden Geräten transferiert
werden, die mit dem Host verbunden sind.
-
Wie
durch den Pfeil 90 in 8 angedeutet wird,
tritt ein zyklischer Prozess auf. Zum Ersten, im Schritt 91,
wird das dem ersten Transfer-Deskriptor TD1 zugeordnete erste Paket
PL1 transferiert. Der Transfer-Deskriptor enthält eine Aktive Flag, die HOCH
gesetzt wird, um anzuzeigen, dass diesem Transfer-Deskriptor noch
weitere Daten zugeordnet sind.
-
Zum
Zweiten, im Schritt 92, wird das dem zweiten Transfer-Deskriptor
TD2 zugeordnete erste Paket PL1 transferiert. Dieser Transfer-Deskriptor enthält nun eine
Aktive Flag, die durch den Host-Controller 40 NIEDRIG gesetzt
wird, um anzuzeigen, dass der Transfer der diesem zweiten Transfer-Deskriptor
TD2 zugeordneten Nutzdaten abgeschlossen ist.
-
Als
nächstes,
in den Schritten 93 und 94, werden die ersten
Nutzdaten-Pakete PL1, die den dritten und vierten Transfer-Deskriptoren
TD3 bzw. TD4 zugeordnet sind, transferiert. Wiederum enthält je der
dieser Transfer-Deskriptoren eine Aktive Flag, die HOCH gesetzt
wird, um anzuzeigen, dass noch mehr Nutzdaten zu übertragen
sind, die jedem dieser Transfer-Deskriptoren zugeordnet sind.
-
Als
nächstes,
im Schritt 95, wird das dem ersten Transfer-Deskriptor
TD1 zugeordnete zweite Paket PL2 von Nutzdaten transferiert. Die
Aktive Flag bleibt HOCH, weil immer noch mehr der Nutzdaten übertragen
werden müssen,
die diesem Transfer-Deskriptor zugeordnet sind.
-
Der
Transfer von Nutzdaten, die dem zweiten Transfer-Deskriptor TD2
zugeordnet sind, wurde abgeschlossen, so dass im Schritt 96 das
dem dritten Transfer-Deskriptor
TD3 zugeordnete zweite Paket PL2 von Nutzdaten transferiert wird.
Dieses Mal wird die Aktive Flag in dem Transfer-Deskriptor NIEDRIG gesetzt,
um anzuzeigen, dass der Transfer der diesem dritten Transfer-Deskriptor
TD3 zugeordneten Nutzdaten abgeschlossen ist.
-
In
Schritt 97 wird das dem vierten Transfer-Deskriptor TD4
zugeordnete zweite Paket PL2 von Nutzdaten transferiert und die
Aktive Flag bleibt HOCH.
-
Im
Schritt 98 wird das dem ersten Transfer-Deskriptor TD1
zugeordnete dritte Paket PL3 von Nutzdaten transferiert und die
Aktive Flag wird auf NIEDRIG gesetzt, um anzuzeigen, dass der Transfer der
diesem ersten Transfer-Deskriptor zugeordneten Nutzdaten abgeschlossen
ist.
-
In
den Schritten 99 und 100 werden die dritten und
vierten Nutzlast-Pakete PL3 und PL4, die dem vierten Transfer-Deskriptor
TD4 zugeordnet sind, transferiert, wobei die Aktive Flag im Schritt 100 NIEDRIG
gesetzt wird, um anzuzeigen, dass der Transfer der diesem vierten
Transfer-Deskriptor TD4 zugeordneten Nutzdaten abgeschlossen ist.
-
Während der
Ausführung
der transfer-basierten Transfer-Deskriptoren wird der Inhalt der transfer-basierten
Transfer-Deskriptoren durch die Logikeinheit 52 des Host-Controllers
aktualisiert. Zum Beispiel wird die Aktive Flag innerhalb des Transfer-Deskriptor-Headers
NIEDRIG gesetzt, wenn der Transfer der dem Transfer-Deskriptor zugeordneten
Nutzdaten abgeschlossen ist. Die USB-EHCI-Schnittstellen-Software 84 formatiert
die aktualisierten transfer-basierten Transfer-Deskriptoren wieder
in ein Format, das durch den konventionellen EHCI-Host-Stapel 82 verarbeitet
werden kann, und die aktualisierten transfer-basierten Transfer-Deskriptoren
werden wieder zurück
in den Systemspeicher 30 kopiert.
-
Es
wurde ein Host-Controller geschaffen, der den Einschluss einer USB-Host-Funktionalität mit hoher
Geschwindigkeit ermöglicht,
insbesondere in Systemen, die nicht mit einem PC aufgebaut sind.