-
Die Erfindung betrifft ein Endgerät für ein Datenverarbeitungssystem
mit einem Prozessor zum Erzeugen von Datenpaketen, die von einem
Pufferspeicher zeitweilig aufgenommen werden, um anschließend auf
einem externen Bus versendet zu werden, bzw. ein Endgerät, das Datenpakete
aus einem externen Bus empfängt,
diese in einem Pufferspeicher zeitweilig speichert und sie schließlich aus dem
Pufferspeicher liest und verarbeitet. Die Erfindung betrifft auch
ein Verfahren, bei dem Datenpakete erzeugt, zeitweilig in einem
Pufferspeicher gespeichert und anschließend auf einen externen Bus
gesendet werden, bzw. ein Verfahren, bei dem Datenpakete aus einem
externen Bus empfangen, in einem Pufferspeicher zeitweilig gespeichert
und anschließend
aus dem Speicher gelesen und verarbeitet werden. Bei dem erfindungsgemäßen Endgerät kann es sich
insbesondere um ein programmiertes Steuergerät für ein Kraftfahrzeug handeln,
und das erfindungsgemäße Verfahren
kann z. B. eingesetzt werden, um ein solches Steuergerät während des
Betriebs des Kraftfahrzeuges zu testen und vom Steuergerät gesteuerte
Vorgänge
zu optimieren.
-
Betriebsvorgänge wie insbesondere Zündung und/oder
Einspritzung an einer von einem solchen Steuergerät gesteuerten
Brennkraftmaschine lassen sich mit der Erfindung optimieren, indem
einzelne Regelparameter bzw. Kennfelder, auf die der Prozessor des
Steuergeräts
zum Steuern der Betriebsvorgänge
zugreift, von einem externen Applikationsgerät aus schrittweise verstellt
werden und die Auswirkung dieser Verstellung gemessen wird, bis ein
Optimum erreicht ist. Entsprechend werden Softwarefunktionen neu
entwickelt und optimiert. Hierzu überträgt das Steuergerät interne
Werte zu einem externen Rechner, der entsprechende Funktionen berechnet
und seine Resultate zurück
auf das Steuergerät überträgt.
-
Aus der
DE 39 17 979 C2 ist eine
Emulationsvorrichtung für
ein Steuergerät,
insbesondere ein Zünd- und/oder Einspritzsteuergerät für Brennkraftmaschinen,
bekannt. Bei dieser Emulationsvorrichtung ist eine Datenmanipulationsvorrichtung
vorgesehen, die einen Schreib/Lesespeicher aufweist, welcher im
Betrieb der Vorrichtung einen Daten/Programm-Lesespeicher ersetzt, auf den ein Mikroprozessor
des Steuergerätes
zugreifen würde,
wenn er nicht an die Emulationsvorrichtung angeschlossen wäre. Ein
Bediengerät,
das in der Lage ist, Daten im Schreib/Lesespeicher zu verändern, ist
mit letzterem über
einen Bus verbunden. Diese Vorrichtung ist zwar in der Lage, die
Daten im Schreib/Lesespeicher, auf die der Mikroprozessor zugreift,
schnell zu verändern
und so z. B. Kennfelder für
eine Steuerungsaufgabe auszuwechseln; sie erfordert zu ihrer Anwendung
aber stets einen körperlichen Zugriff
auf die Platine des Steuergeräts,
um dort die Emulationsvorrichtung anstelle des Daten/Programm-Lesespeichers anzuschließen, und
sie belastet elektrisch des Bus des Steuergeräts, was diesen verlangsamen
kann.
-
In der
DE 195 00 453 A1 wird ein
Verfahren zur Optimierung von Daten und/oder Programmteilen für programmierte
Steuergeräte
vorgeschlagen, das bei der Applikation von Kraftfahrzeugsteuergeräten eingesetzt
werden kann. Bei dem Verfahren wird das Steuergerät über eine
Schnittstelle mit einem externen Applikationsgerät verbunden. Mit Hilfe dieses Applikationsgerätes werden
die Änderungen
der zu optimierenden Daten und/oder Programmteile eingegeben. Auf
Seiten des Steuergeräts
werden die zu optimierenden Daten und/oder Programmteile im Hintergrund
in einen Bereich des Daten- und/oder Programm-Schreib/Lesespeichers
des Steuergerätes
geladen, während
das Steuergerät
gleichzeitig im Vordergrund auf eine in einem anderen Bereich des Speichers
gespeicherte ältere
Version dieser Daten und/oder Programmteile zugreifen kann. Nachdem die
neuen Daten oder Programmteile vollständig in den Speicher geladen
sind, findet eine Umschaltung statt, so dass das Steuerprogramm
auf diese neuen Daten anstatt auf die ältere Version zugreift. Diese Technik
erfordert auf Seiten des Steuergeräts, dass die Übertragung
der zu optimierenden Daten und Programmteile anders gehandhabt wird
als die der Daten, die das Steuergerät zur Ausführung seiner Steueraufgaben
mit angeschlossenen Sensoren und Aktoren austauscht. D. h. für die Kommunikation
mit dem Applikationsgerät
sind eine spezielle Schnitt stelle und gegebenenfalls spezielle Programmfunktionen erforderlich,
die zu entwickeln und in das Steuergerät einzufügen arbeits- und kostenaufwändig ist,
die aber bei einem fertig entwickelten Steuergerät nicht mehr benötigt werden
und allenfalls noch als kostentreibender Ballast mitgeschleppt werden
-
Aufgabe der vorliegenden Erfindung
ist, ein Endgerät
und ein Verfahren zur Verfügung
zu stellen, mit denen verschiedenste Datentypen, die sich in den Anforderungen
an ihre Verarbeitungszeiten stark unterscheiden können, in
einheitlicher Weise in das Endgerät eingespeist bzw. aus diesem
ausgegeben werden können.
-
Die Aufgabe wird durch ein Endgerät mit den Merkmalen
des Anspruchs 1 gelöst.
Die Aufgabe wird auch durch ein Endgerät mit den Merkmalen des Anspruchs
2 gelöst.
Ferner wird die Aufgabe durch ein Verfahren mit den Merkmalen des
Anspruchs 10 sowie durch ein Verfahren mit den Merkmalen des Anspruchs
11 gelöst.
-
Bei dem erfindungsgemäßen Endgerät bzw. mit
dem erfindungsgemäßen Verfahren
kann ein Prozessor zum Empfangen von Daten von externen Sendern
bzw. zum Senden von Daten an externe Empfänger völlig identische Programmfunktionen nutzen,
egal welches die Anforderungen an die Verarbeitungszeit der Daten
bzw. die Dauer ihrer Übertragung
auf dem Bus sind oder welcher Art (z. B. ein Sensor oder Aktor zum
Erfassen bzw. Einstellen von Betriebsparametern des Kraftfahrzeugs
oder ein externes Applikationsgerät) die Sender bzw. Empfänger sind.
Der Prozessor kann Datenpakete, egal, welche Priorität er ihnen
zuweist, jederzeit an die Schnittstelle senden, da die Kommunikation
zwischen Prozessor und Busschnittstelle nicht durch eventuelle Kapazitätsengpässe des
externen Busses eingeschränkt
ist, und die Busschnittstelle besorgt die Weiterleitung der Daten
unter Berücksichtigung der
ihnen vom Prozessor zugewiesenen Priorität. Umgekehrt kann die Busschnittstelle
den Prozessor vor auf dem externen Bus eintreffenden Daten geringer
Priorität
abschirmen, solange Daten höherer
Priorität
zur Bearbeitung anstehen, so dass die gesamte Verarbeitungskapazität des Prozessors
zu deren Bearbeitung zur Verfügung
steht.
-
Die Tatsache, dass neue Daten vor
ihrer Übernahme
durch den Prozessor von der Busschnittstelle gepuffert werden, erlaubt
es dem Prozessor ferner, vor der Übernahme solcher Daten, insbesondere
wenn sie Kennkurven oder Teile des vom Prozessor auszuführenden
Programms verkörpern,
eine Plausibilitätskontrolle
der Daten durchzuführen
und die Annahme von Daten zu verweigern, bei denen die Plausibilitätskontrolle
vermuten lässt,
dass sie zu einer Beeinträchtigung
eines Betriebes einer vom Steuergerät gesteuerten Vorrichtung führen könnten.
-
Bevorzugterweise ist der Pufferspeicher
in mehrere Bereiche unterteilt, wobei jedem Bereich ein Prioritätsstatus
zugeordnet ist und jeder Bereich vorgesehen ist, um Datenpakete
mit dem betreffenden Prioritätsstatus
aufzunehmen. Vorzugsweise sind diese Bereiche als FIFO-Speicher
für die
Datenpakete organisiert.
-
Vorzugsweise ist ein Speicherabschnitt
vorgesehen, in dem zu jedem Prioritätsstatus die zugeordneten Bereiche
des Pufferspeichers verzeichnet sind. Anhand des in diesem Speicherabschnitt
vorgesehenen Verzeichnisses über
die zugeordneten Bereiche ist die Busschnittstelle in der Lage,
eintreffende Datenpakete – vom
Prozessor oder vom externen Bus – zu sortieren und in den entsprechenden
Bereichen im Pufferspeicher abzulegen.
-
Vorzugsweise ist der Prozessor eingerichtet, um
mehrere Prozesse gleichzeitig auszuführen, und jedem Bereich des
Pufferspeichers ist ferner einer der Prozesse zugeordnet, um Datenpakete
dieses Prozesses aufzunehmen. Ein solcher Prozess kann z. B. dazu
dienen, Messwerte eines bestimmten an das Endgerät angeschlossenen Sensors abzufragen, einen
angeschlossenen Aktor anzusteuern oder Bereiche eines Speichers
des Prozessors mit über
den externen Bus von einem Applikationsgerät empfangenen Daten zu überschreiben,
die Programmcode oder Kennkurven für den Betrieb des Prozessors
darstellen.
-
Bevorzugterweise existiert ein Speicherabschnitt,
in dem zu jedem Prozess die zugeordneten Bereiche des Pufferspeichers
verzeichnet sind. Ebenso wie oben für die Priorität beschrieben
kann auch mit einem solchen Speicherabschnitt geregelt werden, wo
die Busschnittstelle vom Prozessor oder vom externen Bus empfangene
Datenpakete puffert.
-
In dem Speicherabschnitt kann ferner
eine Angabe, ob die Bereiche eingehende oder ausgehende Datenpakete
enthalten, und/oder eine maximale Anzahl der Datenpakete in den
einzelnen Bereichen und/oder eine maximale Größe eines Datenpaketes verzeichnet
sein.
-
Besonders bevorzugt unterstützt die
Busschnittstelle mehrere Übertragungsarten,
die sich voneinander hinsichtlich eines verwendeten Protokolls,
Datenformats oder auch – wenn
die Busschnittstelle den Zugriff auf mehrere Busse erlaubt – des verwendeten
Busses oder durch andere Parameter unterscheiden können, und
wählt eine Übertragungsart
für die Übertragung
eines Datenpakets anhand von dessen Prioritätsstatus aus. Eine solche Entsprechung
zwischen der vom Prozessor vorgegebenen Priorität eines zu sendenden Datenpakets
und der von der Schnittstelle verwendeten Übertragungsart macht es einfach,
Daten, die unterschiedlichen Anforderungen hinsichtlich Übertragungsverzögerung,
Rate etc. unterliegen und ggf. von unterschiedlichen auf dem Prozessor
laufenden Anwendungen erzeugt werden, in angemessener Weise zu übertragen.
-
Ebenso vorteilhaft unterstützt die
Busschnittstelle mehrere Übertragungsarten
und ordnet eintreffende Datenpakete anhand ihrer Übertragungsart
in einen Bereich ein. Auch in diesem Fall kann eine Übertragungsart
jeweils einer bestimmten Anwendung entsprechen, für die die
Daten bestimmt sind, so dass anhand der Übertragungsart auf die Anwendung
geschlossen werden kann und das Datenpaket, welches für diese
Anwendung bestimmte Daten enthält,
in ei nen entsprechenden Bereich des Pufferspeichers einsortiert
werden kann.
-
Die Erfindung soll im folgenden anhand
einer Figur näher
erläutert
werden. Es zeigt:
-
1 eine
Schemazeichnung eines Datenverarbeitungssystems mit einem erfindungsgemäßen Endgerät.
-
In 1 ist
ein Datenverarbeitungssystem mit einem erfindungsgemäßen Steuergerät 1,
einem externen Bus 7 und einem abgesetzten Rechner 8 dargestellt.
Der Rechner 8 ist über
den Bus 7 mit einer Busschnittstelle 6 des Steuergeräts 1 verbunden. Er
stellt ein Applikationsgerät
dar, das es erlaubt, zu Entwicklungs- und Optimierungszwecken in
den Betrieb des Steuergeräts 1 einzugreifen. Über die
Busschnittstelle 6 werden vom Prozessor 2 des
Steuergeräts 1 erzeugte
Datenpakete 3 in den Bus 7 eingespeist und über diesen
zum Rechner 8 versendet. Umgekehrt verschickt der Rechner 8 Datenpakete 4 über den
Bus 7 zur Busschnittstelle 6, welche die Datenpakete 4 dann
an den Prozessor 2 übergibt.
-
Die Busschnittstelle 6 und
der Prozessor 2 sind über
einen (nicht dargestellten) internen Bus des Steuergeräts 1 mit
einem Pufferspeicher 5 verbunden. Der Pufferspeicher 5 kann
zusammen mit dem Prozessor 2 innerhalb eines einzigen elektronischen Bauelements
vorgesehen sein. Der Pufferspeicher 5 ist logisch in diverse
Bereiche aufgeteilt, darunter ein Informationsblock 9 und
eine Mehrzahl von Warteschlangen 10, 11. Der Informationsblock 9 weist
für jede
Warteschlange 10, 11 einen Eintrag auf, der folgende
Angaben enthält:
-
- – Richtung
der Warteschlange (vom Prozessor 2 zum externen Bus 7 oder
umgekehrt),
- – Startadresse
von Statusinformationen der Warteschlange,
- – Startadresse
der in der Warteschlange gepufferten Datenpakete,
- – maximal
zulässige
Anzahl von Paketen in der Warteschlange,
- – maximal
zulässige
Größe eines
Pakets in der Warteschlange,
- – Priorität der Warteschlange,
- – gegebenenfalls
Zuordnung der Warteschlange zu einem vom Prozessor 2 ausgeführten Prozess.
-
Im Statusinformationsbereich 12 jeder
Warteschlange 10, 11 ist für jedes Datenpaket der Warteschlange
ein Statusbit verzeichnet, das angibt, ob der Prozessor 2 oder
die Busschnittstelle 6 Zugriff auf das Datenpaket hat.
-
Bei der nun folgenden Beschreibung
der Funktionsweise des Steuergeräts 1 wird
zunächst der
Fall betrachtet, dass der Prozessor 2 ein Datenpaket auf
dem Bus 7 senden will. Auf den Prozessor 2 laufen
verschiedene Prozesse ab, z. B. solche, bei denen Messdaten von
(nicht dargestellten) mit dem Steuergerät 1 verbundenen Sensoren
erfasst oder Steuerparameter über
den Bus 7 an Aktoren am Steuergerät 1 gesendet werden,
oder solche, bei denen der Prozessor 2 die Inhalte von
vom externen Rechner 8 spezifizierten Speicherbereichen
an diesen überträgt oder
spezifizierte Speicherbereiche mit von dem Rechner 8 gesendeten
Daten überschreibt. Da
die An forderungen an das Zeitverhalten dieser verschiedenen Prozesse
unterschiedlich sind, ist jedem Prozess ein Prioritätsniveau
zugeordnet, das von Prozess zu Prozess verschieden sein kann.
-
Um ein von einem solchen Prozess
erzeugtes Datenpaket zu senden, wählt der Prozessor 2 zunächst unter
den diversen Warteschlangen diejenige aus, deren Übertragungsrichtung
vom Prozessor 2 zum externen Bus 7 verläuft und die dem auslösenden Prozess
oder dessen Prioritätsniveau
zugeordnet ist. Zu jeder solchen Warteschlange existiert ein Zeiger,
der innerhalb der Warteschlange auf denjenigen Speicherbereich mit
der für
die Pakete dieser Warteschlange maximal zulässigen Größe zeigt, in den das nächste zu
sendende Paket eingetragen werden muss. Bevor der Prozessor 2 das
Paket in den vom Zeiger bezeichneten Speicherbereich einträgt, liest
er im Statusinformationsbereich 12 der Warteschlange das
Statusbit des von dem Zeiger bezeichneten Speicherbereichs. Wenn
dieses Statusbit angibt, dass der Prozessor 2 keine Schreibberechtigung
auf den Speicherbereich hat, so bedeutet dies, das in dem Speicherbereich
noch ein zu sendendes Datenpaket enthalten ist; d. h, die Warteschlange
ist voll.
-
Wenn das Statusbit angibt, dass der
Prozessor zum Schreiben in den Speicherbereich berechtigt ist, so
trägt er
das zu sendende Datenpaket dort ein, ändert das zugeordnete Statusbit
auf den Wert, der anzeigt, dass er keine Schreibberechtigung hat,
und stellt den Zeiger um einen Schritt weiter auf einen nachfolgenden
Speicherbereich der Warteschlange oder, falls es sich bei dem gerade
beschriebenen um den letzten Speicherbereich der Warteschlange handelt,
auf deren ersten Speicherbereich. Um ein weiteres Datenpaket zu
senden, wiederholt der Prozessor 2 die oben beschriebenen
Schritte.
-
Um die vom Prozessor 2 in
die verschiedenen Sende-Warteschlangen
eingereihten Datenpakete auf dem Bus 7 zu übertragen,
führt die
Busschnittstelle 6 für
jeden auf dem Bus zum Senden eines Paketes zur Verfügung stehenden
Zeitschlitz das folgende Verfahren durch: Zunächst liest sie das Statusbit
desjenigen Speicherbereichs der Sende-Warteschlange mit der höchsten Priorität, auf welchen
ein dieser Warteschlange zugeordneter Sendezeiger zeigt. Wenn dieses
Statusbit angibt, das der Prozessor 2 nicht berechtigt
ist, diesen Bereich zu beschreiben, so bedeutet dies, das er ein
zu sendendes Paket enthält.
In diesem Fall liest die Busschnittstelle das betreffende Paket
aus der Warteschlange, gibt es auf den Bus 7 aus, verändert das
Statusbit des betreffenden Speicherbereichs, um anzuzeigen, dass
nun wieder der Prozessor 2 berechtigt ist, in diesen Speicherbereich
zu schreiben, und stellt den Sendezeiger auf den Speicherbereich,
der sich an den gerade gesendeten anschließt.
-
Wenn die Busschnittstelle 6 beim
Lesen des Statusbits feststellt, dass sie auf den betreffenden Speicherbereich
nicht zugriffsberechtigt ist (bzw. dass der Prozessor 2 berechtigt
ist, in diesen Speicherbereich zu schreiben), so bedeutet dies, dass
die betreffende Warteschlange leer ist. Wenn dies der Fall ist,
wiederholt die Busschnittstelle 6 die oben beschriebenen
Schritte für
die Warte schlange mit der nächst
niedrigeren Priorität,
so lange, bis eine Warteschlange gefunden ist, die ein zu sendendes Paket
enthält,
oder bis festgestellt wird, das alle Warteschlangen leer sind.
-
Die Busschnittstelle 6 kann
ausgelegt sein, um eine Mehrzahl von unterschiedlichen Übertragungsarten
auf dem Bus 7 zu unterstützen, die sich z. B. hinsichtlich
ihrer Paketgröße, ihrer
Empfänger oder
der Art der vom Empfänger
an ihnen durchzuführenden
Verarbeitung unterscheiden können.
Jeder Sende-Warteschlange
ist ein solches Format fest zugeordnet. Die Busschnittstelle 6 vermag
so allein anhand der Identität
der Warteschlange, aus der sie ein Datenpaket liest, zu erkennen,
in welcher Weise das Datenpaket auf dem Bus 7 übertragen
werden muss. Die verschiedenen Warteschlangen können z. B. lediglich anhand
ihrer Priorität
charakterisiert sein, und mehrere Prozesse auf den Prozessor 2 können berechtigt
sein, in eine gleiche Warteschlange zu schreiben, wobei dann die
Pakete dieser unterschiedlichen Prozesse von der Busschnittstelle 6 in gleicher
Weise gehandhabt werden. Alternativ ist es jedoch auch möglich, eine
Mehrzahl von Warteschlangen eines gleichen Prioritätsniveaus
vorzusehen, von denen jede einem spezifischen Prozess (oder auch
einer Gruppe von Prozessen) des Prozessors 2 zugeordnet
ist, wobei jeder einzelnen Warteschlange ein eigenes Format für die Übertragung
auf dem Bus 7 zugeordnet ist. So ist es möglich, Datenpakete
in unterschiedlichen Formaten auf einem gleichen Prioritätsniveau
zu übertragen.
Wenn mehrere Warteschlangen eines gleichen Prioritätsniveaus
vorhanden sind, so darf die Busschnittstelle 6 sie nicht jedes
Mal in der gleichen Reihenfolge auf eventuell zu sendende Datenpakete überprüfen, da
hieraus letztlich wieder eine höhere
Priorisierung der zuerst überprüften Warteschlange
resultieren würde.
Eine effektive Gleichbehandlung kann erreicht werden, wenn bei jeder Überprüfung auf
zu sendende Datenpakete die Reihenfolge der Warteschlangen gleicher Priorität permutiert
wird, z. B. derart, das wenn auf einem gegebenen Prioritätsniveau
drei Warteschlangen A, B, C existieren, diese einmal in der Reihenfolge
ABC, dann BCA, CAB und schließlich
wieder ABC durchgeprüft
werden.
-
Es wird nun die Datenübertragung
in Gegenrichtung, über
den Bus 7 zum Prozessor 2 betrachtet. Wenn die Busschnittstelle 6 ein
Datenpaket auf den Bus 7 empfängt, so extrahiert sie daraus
zunächst eine
Prioritätsinformation.
Die Prioritätsinformation kann
in einem Signalisierungsteil des Datenpakets expliziet angegeben
sein, sie kann sich auch implizit aus einem für die Übertragung des Pakets auf dem Bus 7 verwendeten
Format ergeben, wenn die Busschnittstelle 6 unterschiedliche
Paketformate unterstützt.
Anhand der Prioritätsinformation
wählt die Busschnittstelle 6 unter
den Warteschlangen 11, 12 eine Empfangs-Warteschlange
mit der passenden Priorität
aus. Zu jeder Empfangs-Warteschlange verfügt die Busschnittstelle 6 über einen
Zeiger, der auf den jeweils als nächstes beschreibbaren Speicherbereich
der betreffenden Warteschlange zeigt. Sie liest zunächst das
Statusbit des von dem der ausgewählten
Warteschlange entsprechenden Zeiger bezeichneten Speicherbereichs,
um festzustellen, ob dieser beschrieben werden darf oder nicht.
Wenn das Statusbit anzeigt, das der Speicherbereich nicht beschrieben
werden darf, so bedeutet dies, dass die Warteschlange voll ist,
und die Busschnittstelle 6 schickt an den Sender des betreffenden
Pakets eine Meldung zurück,
dass das Paket nicht angenommen werden konnte. Wenn der Speicherplatz
beschrieben werden darf, wird das Paket darin eingetragen, das Statusbit
wird verändert,
um anzuzeigen, dass nun nur der Prozessor 2 zugriffsberechtigt
ist, und der Zeiger wird wie oben beschrieben weiter gestellt.
-
Der Prozessor 2 geht beim
Empfangen von Datenpaketen in ähnlicher
Weise vor wie die Busschnittstelle 6 beim Senden: Er überprüft zunächst anhand
des Statusbits eines durch einen Lesezeiger bezeichneten Speicherbereichs
der Warteschlange der höchsten
Priorität,
ob der Speicherbereich ein zu lesendes Paket enthält. Wenn
ja, so wird es gelesen und verarbeitet, das zugehörige Statusbit
wird wieder verändert,
so dass der betreffende Bereich von der Busschnittstelle 6 überschrieben
werden kann, und der Lesezeiger wird weiter gestellt. Wenn sich
die Warteschlange als leer erweist, wird der gleiche Vorgang an
der Warteschlange mit der nächstniedrigeren
Priorität
wiederholt, so lange, bis in einer Warteschlange ein zu verarbeitendes
Paket gefunden wird oder bis festgestellt wird, das sämtliche
Warteschlangen leer sind.