-
Stand der Technik
-
Die Erfindung betrifft eine Schnittstelleneinheit nach dem Oberbegriff des Anspruchs 1.
-
Systeme, die an einem Bussystem angeordnet sind und einen Speicherdirektzugriff (DMA = direct memory access) über das Bussystem durchführen, sind bekannt. Insbesondere ist bekannt, dass durch eine Vielzahl sogenannter DMA-Einheiten an einem Bussystem die Zugriffskonflikte auf das Bussystem zunehmen.
-
Um Netzwerkverkehr von unterschiedlichen Teilnetzen oder unterschiedlichen Netzwerktypen, wie bspw. CAN (controller area network), Flexray und/oder Ethernet, zu beobachten, werden bspw. an einem Personal Computer mehrere Schnittstellenkarten benötigt, die verwaltet werden müssen.
-
Gateway-Einheiten, die zwischen verschiedenen Teilnetzen, auch unterschiedlicher Netzwerktypen, wie bspw. CAN (controller area network), Flexray und/oder Ethernet, müssen stets an die gewünschte Kommunikation zwischen den Teilnetzen angepasst werden, womit die entsprechende Logik in Software ausgeführt wird.
-
Offenbarung der Erfindung
-
Das der Erfindung zu Grunde liegende Problem wird durch eine Schnittstelleneinheit nach dem Anspruch 1 gelöst. Vorteilhafte Weiterbildungen sind in den Unteransprüchen angegeben. Für die Erfindung wichtige Merkmale finden sich in der nachfolgenden Beschreibung und in den Zeichnungen, wobei die Merkmale in Alleinstellung als auch in unterschiedlichen Kombinationen für die Erfindung wichtig sein können, ohne dass hierauf nochmals explizit hingewiesen wird.
-
Dadurch, dass eine Schnittstelleneinheit einen Speicherdirektzugriff auf den Datenspeicher in Abhängigkeit von einer vorab zwischen einer Applikation und der Datentransporteinheit vereinbarten Kennung durchführt, wird es möglich, nur eine Schnittstelleneinheit zwischen einem Bussystem und der Datentransporteinheit vorzusehen, mittels derer eine Kommunikation mit unterschiedlichen Teilnetzen oder Netztypen hergestellt werden kann.
-
Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in den Figuren der Zeichnungen dargestellt sind. Alle beschriebenen oder dargestellten Merkmale bilden für sich oder in beliebiger Kombination den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung in den Patentansprüchen oder deren Rückbeziehung sowie unabhängig von ihrer Formulierung oder Darstellung in der Beschreibung oder Zeichnung. Für funktionsäquivalente Größen und Merkmale werden in allen Figuren auch bei unterschiedlichen Ausführungsformen die gleichen Bezugszeichen verwendet. Nachfolgen werden beispielhafte Ausführungsformen der Erfindung unter Bezugnahme auf die Zeichnung erläutert. In der Zeichnung zeigen;
-
1 in schematischer Ansicht ein Kommunikationssystem;
-
2 in schematischer Ansicht einen Teil einer Schnittstelleneinheit;
-
3 in schematischer Ansicht den Versand eines Datensegments;
-
4 in schematischer Ansicht einen weiteren Teil der Schnittstelleneinheit; und
-
5 in schematischer Ansicht einen Empfang eines Datensegments.
-
1 zeigt in schematischer Ansicht ein Kommunikationssystem 2. Eine Schnittstelleneinheit 4 ist an einem Bussystem 6 angeordnet. Das Bussystem 6 kann bspw. ein PCI-Bus oder ein proprietärer Bus eines Mikrocontrollers sein. An das Bussystem 6 sind eine Prozessoreinheit 8 und ein Datenspeicher 10 angeschlossen. Auf der Prozessoreinheit 8 sind mehrere Applikationen 12a, 12b und 12c lauffähig. Die Prozessoreinheit 8, der Datenspeicher 10 sowie das Bussystem 6 bilden eine Kommunikationseinheit 14, die bspw. als Gateway in Form eines Mikrokontrollers oder aber als Personal Computer ausgestaltet sein kann. Die Kommunikationseinheit 14 kann die Schnittstelleneinheit 4 und/oder eine Datentransporteinheit 20 umfassen.
-
Die Schnittstelleneinheit 4 ist mit der Datentransporteinheit 20 verbunden und ist damit zwischen der Datentransporteinheit 20 und dem Bussystem 6 anordenbar. Die Datentransporteinheit 20 ist auch als Netzwerkprozessor bezeichenbar. Neben der Schnittstelleneinheit 4 sind weitere Kommunikations-Schnittstellen 22a, 22b und 22c an die Datentransporteinheit 20 angeschlossen. Die Kommunikations-Schnittstellen 20 können sowohl unterschiedlichen Netzwerktypen, die bspw. CAN, FlexRay oder Ethernet und/oder unterschiedlichen Teilnetzwerken der vorgenannten Netzwerktypen zugeordnet sein. Selbstverständlich sind weitere Netzwerktypen denkbar, für die eine entsprechende Schnittstelleneinheit 22 vorhanden sein kann. Vor Inbetriebnahme des Kommunikationssystems 2 wird zwischen einer der Applikationen 12a–12c und der Datentransporteinheit 20 eine Kennung chid vereinbart, die für eine oder mehrere Datensegmente gültig ist. Die Schnittstelleneinheit 4 führt während des Betriebs des Kommunikationssystems 2 einen Speicherdirektzugriff über das Bussystem 6 auf den Datenspeicher 10 in Abhängigkeit von der vorab zwischen der Applikation 12a, 12b, 12c und der Datentransporteinheit 20 vereinbarten Kennung chid durch.
-
Da die Schnittstelleneinheit 4 und die Datentransporteinheit 20 bevorzugt in Hardware ausgeführt sind, kann durch die vorab vereinbarte Kennung chid für ein oder mehrere Datensegmente erreicht werden, dass eine Arbitrierung auf dem Bussystem 6 für einen Speicherdirektzugriff durch die Schnittstelleneinheit 4 für mehrere Kommunikations-Schnittstellen 22 stark vereinfacht wird, wodurch die Datenverarbeitung schneller und effizienter über das Bussystem 6 abgewickelt werden kann. Damit kann vorteilhaft eine Vielzahl von Kommunikationsschnittstellen 22 auf eine Schnittstelleneinheit 4 und damit die Kommunikationseinheit 14 abgebildet werden. Die vorab vereinbarte Kennung chid ist auch als channel identifier bezeichenbar. Damit ergeben sich auch Vorteile für die Datentransporteinheit 20, da diese deterministische Abarbeitungsschritte enhalten kann und damit in Hardware ausführbar ist.
-
2 zeigt in schematischer Form einen Ausschnitt 24 der Schnittstelleneinheit 4. In dem Block 26 ist ein Block 28, eine Ausgabeeinheit 30 und ein Block 32 gezeigt. Des Weiteren ist ein Eingangs-Deskriptor-Pool 34 gezeigt. Zum Versenden eines Datensegments aus dem Datenspeicher 10 an die Datentransporteinheit 20 wird aus einem Deskriptor des Eingangs-Deskriptor-Pools 34 die Speicherbereichadresse des Datensegments im Datenspeicher 10 und die vereinbarte Kennung chid ermittelt und dem Block 28 übergeben. Die Schnittstelleneinheit 10 bzw. der Block 28 liest ein Datensegment gemäß dem Pfeil 36 in Form eines Speicherdirektzugriffs über das Bussystem 6 aus dem Datenspeicher 10 und stellt das Datensegment gemäß dem Pfeil 38 in eine Warteschlage 40 der Ausgabeeinheit 30. Ein Deskriptor in dem Eingangs-Deskriptor-Pool umfasst die Speicherbereichadresse des Datensegments und der vereinbarten Kennung sowie weitere Größen. Der Deskriptor wird von dem Block 32 an den Block 28 übergeben. Entsprechend wird anhand des Deskriptors mittels des Blocks 28 ein zu dem Datensegment, das gemäß des Pfeils 26 ausgelesen wurde, passender Header erzeugt, der gemäß dem Pfeil 42 in eine Warteschlange 44 eingestellt wird. Der Block 46 erzeugt gemäß einem Pfeil 48 für die Datentransporteinheit 20 passende Datentransporteinheit-Datensegmente, die jeweils das Datensegment der Warteschlage 40 und den dazu passenden Header der Warteschlange 44 umfassen. Der Header kann eine die Ausgabeeinheit identifizierende Information devid, auch als device identification bezeichenbar, umfassen. Damit wird das Datensegment aus der Warteschlange 40 mit einem zugehörigen Header, der die vereinbarte Kennung chid umfasst, als Datentransporteinheit-Datensegment der Datentransporteinheit 20 bereitgestellt.
-
Gemäß einem Pfeil 50 kann der Eingangs-Deskriptor-Pool 34 von der Prozessoreinheit 8 ausgelesen und beschrieben werden. Für diesen Schreib- und Lesezugriff auf den Eingangs-Deskriptor-Pool 34 gemäß dem Pfeil 50 fungiert die Schnittstelleneinheit 4 an dem Bussystem 6 als Bus-Slave. Für den lesenden Speicherdirektzugriff auf den Datenspeicher 10 gemäß einem Pfeil 27 greift die Schnittstelleneinheit 26 als Bus-Master auf das Bussystem 6 zu. Mithin ist das Bussystem 6 als Multi-Master-Bus ausgebildet. Selbstverständlich kann das Bussystem 6 auch andere Busvermittlungsverfahren aufweisen bzw. unterstützen und ist nicht auf einen Multi-Master-Bus beschränkt.
-
5 zeigt beispielhaft eine Interaktion zwischen der Schnittstelleneinheit 4 und der Kommunikationseinheit 14 umfassend die Prozessoreinheit 8 und den Datenspeicher 10.
-
3 ist auf das Versenden eines Datensegments aus den Datenspeicher 10. In einem Ausschnitt des Datenspeichers 10 sind ein erstes Datensegment 52 und ein letztes Datensegment 54 eines Datenblocks 56 gezeigt. Es wird im Folgenden ein Versand des Datenblocks 56 mit einer Vielzahl von Datensegmenten beschrieben. Die Datensegmente 52–54 sind Teil des Datenblocks 56. Für jedes der Datensegmente 52–54 ist in dem Eingangs-Deskriptor-Pool 34 ein entsprechender Deskriptor 62–64 hinterlegt. Die Kommunikationseinheit 14 hinterlegt zum Versenden des jeweiligen Datensegments 52–54 durch eine entsprechende Applikation 12, die auf der Prozessoreinheit 8 ausgeführt wird, die Deskriptoren 62–64. Hierzu hinterlegt die Kommunikationseinheit 14 eine Speicherbereichadresse des Datensegments 52, 54 im Datenspeicher 10 sowie die vereinbarte Kennung chid. Des Weiteren wird in dem Deskriptor 62–64 hinterlegt, welche Position das jeweilige Datensegment 52–54 in dem Datenblock 56 hat. Bspw. wird in dem Deskriptor 62–64 hinterlegt, ob ein Datensegment 52–54 ein erstes Datensegment wie das Datensegment 52 ist. Bspw. wird in dem Deskriptor 62–64 hinterlegt, ob ein Datensegment 52–54 ein letztes Datensegment wie das Datensegment 54 ist. Des Weiteren wird in einem der Deskriptoren 52–54 jeweils die Größe des Datensegments 52–54 hinterlegt. Des Weiteren kann auch die Speicherbereichadresse bzw. die Speicheranfangsadresse der Datensegmente 52–54 hinterlegt werden. Dieser beschreibende Zugriff auf ist gemäß dem Pfeil 66 gezeigt.
-
Möchte eine Applikation 12, die auf der Prozessoreinheit 8 läuft, einen Datenblock 56 versenden, so speichert die Applikation 12 den Datenblock 56 in dem Datenspeicher 10. Danach werden gemäß dem Pfeil 66 die den Datenblock 56 hinsichtlich Speicherbereich und vereinbarter Kennung chid nötigen Informationen in den Eingangs-Deskriptor-Pool 34 geschrieben. Des Weiteren wird in dem jeweiligen Deskriptor 62–64 die Versandbereitschaft des jeweiligen Datensegments 52–54 signalisiert.
-
Ist das jeweilige Segment 52–54 über den zugehörigen Deskriptor 62–64 als versandbereit markiert, so kann die Schnittstelleneinheit 4 gemäß dem Pfeil 68 einen Speicherdirektzugriff auf den Datenspeicher 10 gemäß dem Pfeil 26 ausführen. Entsprechend wird ausgehend vom Deskriptor 62 bis zum Deskriptor 64 gemäß einem Pfeil 70 der gesamte Datenblock 56 aus dem Datenspeicher 10 ausgelesen. Das Auslesen des Datenblocks 56 geschieht hierbei segmentweise bzw. deskriptorweise, wodurch vorteilhaft ein paralleles Befüllen des Datenblocks 56 durch die Applikation 12 und ein Leeren des gleichen Datenblocks 56 durch die Schnittstelleneinheit 4 möglich ist. Nach dem Auslesen und Weiterleiten eines Datensegments 52, 54 gemäß dem Pfeil 26 wird die Versandbereitschaft von der Schnittstelleneinheit 4 in dem jeweiligen Deskriptor 62–64 gelöscht. Die Versandbereitschaft kann von der Kommunikationseinheit 14 überwacht werden, indem die Versandbereitschaft des jeweiligen Deskriptors 62–64 überwacht wird. Durch die segmentweise Verarbeitung und den Deskriptor-Pool 34 wird die Verarbeitung der in dem Datenspeicher 10 liegenden Datensegmente bzw. Datenblöcke vereinfacht, was eine Hardware-Ausführung des Schnittstelleneinheit 4 und damit ein schnelles Abarbeiten zum Versand von Datensegmenten 52–54 ermöglicht.
-
4 zeigt in schematischer Ansicht einen Ausschnitt 74 der Schnittstelleneinheit 4. In einem Block 76 werden in einer Eingabeeinheit 80 gemäß dem Pfeil 28 einem Block 84 Datentransporteinheit-Datensegmente ausgehend von der Datentransporteinheit 20 zugeführt. Die Datentransporteinheit-Datensegmente gemäß dem Pfeil 28 enthalten Headerinformationen, die in eine Warteschlange 86 der Eingabeeinheit 80 eingestellt werden und die vereinbarte Kennung chid enthalten. Die Datensegmente im Sinne der vorliegenden Beschreibung, d.h. in Form von Daten, die in dem Datenspeicher 10 abgelegt werden sollen, werden von den Block 84 in eine Warteschlange 88 eingestellt. Ein Ausgangs-Deskriptor-Pool 90 wird von einem Block 92 gemäß der Headerinformationen aus der Warteschlange 86 gemäß eines Pfeils 94 gefüllt. Dabei wird die vereinbarte Kennung chid aus dem empfangenen Header dem Deskriptor-Pool 90 zugeführt. Des Weiteren wird auf Basis des Headers aus der Warteschlange 86 eine Information, die die Position des Datensegments 52, 54 in dem Datenblock 56 bestimmt, in den zugehörigen Deskriptor des Deskriptorpools 90 geschrieben. Ein Block 96 erhält gemäß einem Pfeil 98 die Datensegmente aus der Warteschlange 88.
-
Ein Deskriptor wird von einer entsprechenden Applikation 20 bzw. von der Kommunikationseinheit 14 gemäß einem Pfeil 100 mit einer Speicherbereichadresse gefüllt, die auf einen zu beschreibenden Bereich in dem Datenspeicher 10 zeigt. Mittels des Deskriptors aus dem Ausgangs-Deskriptorpool 90 kann der Block 96 gemäß dem Pfeil 102 mittels eines Speicherdirektzugriffs auf dem Datenspeicher 10 zugreifen und das Datensegment 52, 54 an die durch den Deskriptor bereitgestellte Speicheradresse schreiben.
-
Der Block 92 pflegt den Ausgangs-Deskriptor-Pool 90 und signalisiert gemäß einem Pfeil 104 an die Eingabeeinheit 80, dass freie Deskriptoren, die auf freie Speicherbereiche in dem Datenspeicher 10 zeigen, vorhanden sind.
-
Die Schnittstelleneinheit 4 bzw. der Block 76 bzw. der Block 96 greift für den Schreibzugriff für ein Datensegment 52, 54 gemäß dem Pfeil 102 in Form eines Speicherdirektzugriffs auf den Datenspeicher 10 als Bus-Master auf das Bussystem 6 zu. Für Schreib- und Lesezugriffe auf den Ausgangs-Deskriptor-Pool 90 greift die Schnittstelleneinheit 4 bzw. der Block 76 gemäß dem Pfeil 100 als Bus-Slave auf das Bussystem 6 zu.
-
Der Block 96 prüft in dem Deskriptorpool 90, ob ein Deskriptor vorhanden ist, der auf einen freien Speicherbereich in dem Datenspeicher 10 zeigt. Ist ein solcher Deskriptor vorhanden, der auf einem freien Speicherbereich in dem Datenspeicher 10 zeigt, so signalisiert der Block 92 gemäß dem Pfeil 104 im Block 80 und/oder in nicht gezeigter Form der Datentransporteinheit 20, dass der Datenspeicher 10 empfangsbereit ist.
-
Gemäß dem Pfeil 28 wird ein Datentransporteinheit-Datensegment von der Datentransporteinheit 20 empfangen. Die Payload des Datentransporteinheit-Datensegment wird als Datensegment 52, 54 über die Warteschlange 88 und den Block 96 mit Hilfe eines passenden Deskriptors in den Datenspeicher 10 in den Datenspeicher 10 transferiert. Dieser Schreibzugriff wird in dem entsprechenden Deskriptor registriert. Die entsprechende Applikation 12 kann über den Deskriptor, für den ein Schreibzugriff auf den Datenspeicher 10 erfolgt ist, die Information enthalten, welcher Datenbereich bzw. Datenspeicherbereich in den Datenspeicher 10 gefüllt wurde, auf diesen zugreifen und das Datensegment 52, 54 auslesen. Darüber hinaus enthält der Deskriptor die entsprechende Länge des Datensegments 52, 54 sowie die vorab vereinbarte Kennung chid. Nachdem die Applikation 12 das Datensegment 52, 54 aus dem Datenspeicher 10 gelesen hat, kann die Applikation 12 in dem Deskriptor das Datensegment 52, 54 als frei markieren oder den entsprechenden Deskriptor löschen. Sobald der Block 96 das letzte Datensegment 54 eines Datenblocks 56 erkennt, wird eine Interrupt-Information generiert. Anhand dieser Interrupt-Information kann die entsprechende Applikation 12, die für das Datensegment 52, 54 zuständig ist, aktiviert werden. Selbstverständlich kann auch eine Anzahl dieser Interrupt-Informationen gesammelt werden und bei Erreichen einer bestimmten Anzahl ein Interrupt an die Applikation 12 bzw. an die Prozessoreinheit 8 geschickt werden. Der Deskriptorpool 34 wie auch der Deskriptorpool 90 können als Ringpuffer ausgeführt sein und können sowohl von der Schnittstelleneinheit 4 als auch von der Prozessoreinheit 8 gelesen und beschrieben werden.
-
5 zeigt in schematischer, beispielhafter Form die Kommunikation zum Empfangen mindestens eines Datensegments 52, 54 von der Datentransporteinheit 20 in den Datenspeicher 10. Der Datenblock 56 umfasst das erste Datensegment 52, das letzte Datensegment 54 sowie weitere dazwischenliegende Datensegmente.
-
Die Kommunikationseinheit 14 schreibt zum Empfang von Datensegmenten gemäß einem Pfeil 106 Deskriptoren 108 bis 110 in den Deskriptorpool 90, wobei ein Deskriptor jeweils eine Speicheradresse für die zunächst noch leeren Speicherbereiche für die Datensegmente 52–54 umfasst. Die Schnittstelleneinheit 4 überwacht den Deskriptorpool 90 und signalisiert der Einheit 80, wenn freie Speicherbereiche in dem Datenspeicher 10 vorhanden sind. Nach der Signalisierung freier Speicherbereiche kann mit dem Speicherdirektzugriff gemäß dem Pfeil 112 begonnen werden. Nach dem Schreiben eines Datensegments 52–54 wird in dem entsprechenden Deskriptor 108–110 von der Schnittstelleneinheit 4 der Schreibzugriff registriert. Entsprechend kann die Kommunikationseinheit 14 einem Deskriptor 108–110 entnehmen, ob das entsprechende Datensegment 52–54 bereits in den Datenspeicher 10 geschrieben wurde.
-
Der Eingangs-Deskriptorpool 34 der 2 und 3 wird bevorzugt von einer der Applikationen 12 in einer absteigenden Adressreihenfolge beschrieben, wobei mit einem letzten Deskriptor 64 für ein letztes Datensegment 54 begonnen wird und mit einem ersten Deskriptor 62 für ein erstes Datensegment 52 geendet wird. Die Schnittstelleneinheit 4 liest die Deskriptoren 62–64 in aufsteigender Reihenfolge ausgehend von dem ersten Deskriptor 62 bis zu dem letzten Deskriptor 64 aus.
-
Der Block 92 dagegen befüllt bei ankommenden Datensegmenten gemäß dem Pfeil 28 aus 4 den Ausgangs-Daten-Pool 90 in aufsteigender Reihenfolge beginnend mit einem ersten Deskriptor 108 und endend mit einem letzten Deskriptor 110.