-
TECHNISCHES GEBIET
-
Diese Offenlegung bezieht sich auf den Entwurf eingebetteter Systemsoftware und insbesondere auf den Entwurf eingebetteter Systemsoftware unter Verwendung von Middleware-Systemen und -Verfahren.
-
HINTERGRUND
-
Ein Fahrzeug, wie z.B. ein PKW, ein LKW, ein Sportnutzfahrzeug, ein Geländewagen, ein Kleintransporter, ein Wasserfahrzeug, ein Flugzeug, ein Geländefahrzeug, ein Wohnmobil oder andere geeignete Fahrzeuge, enthält in der Regel verschiedene Steuergeräte, die so konfiguriert sind, dass sie entsprechende Funktionen des Fahrzeugs ausführen. Zum Beispiel können ein oder mehrere Steuergeräte so konfiguriert sein, dass sie Funktionen eines elektronischen Servolenkungssystems des Fahrzeugs ausführen. Eine Herausforderung beim Software-Engineering von Software, die von derartigen Steuergeräten ausgeführt wird, kann als „Trennung der Zuständigkeiten“ bezeichnet werden. Insbesondere ist es hilfreich, zu trennen, was die Software tun soll (z.B. Entwurf) und wie sie es tut (z.B. Implementierung).
-
Dies wird oft durch die Aufteilung der Software in „Schichten“ erreicht, wobei jede Schicht die komplexe Funktionalität der darunter liegenden Schichten abstrahiert und eine einfachere Schnittstelle zu den darüber liegenden bietet. Typischerweise wird eine solche Aufteilung der Software in Schichten mit Hilfe verschiedener Werkzeuge von Drittanbietern erreicht. AUTOSAR (Automotive Open System Architecture) definiert hierfür eine Struktur, und die Werkzeuge von Drittanbietern definieren eine Reihe von AUTOSAR-Komponenten. Solche Werkzeuge sind jedoch in der Regel komplex und teuer und erfordern Software-Knowhow und einen erheblichen Zeitaufwand für das Erlernen und Ausführen.
-
ZUSAMMENFASSUNG
-
Diese Offenlegung bezieht sich allgemein auf eingebettete Computersysteme.
-
Nach einem Aspekt der offengelegten Ausführungsformen steht ein modulares Middleware-System in wirksamer Kommunikation mit einer Anwendung und einer Plattform. Das modulare Middleware-System umfasst eine Vielzahl von Komponenten, die mit Hilfe von Middleware-Konfigurationswerkzeugen hinzugefügt oder entfernt werden können. Das modulare Middleware-System umfasst auch eine gemeinsame Schnittstelle, die der Anwendungslogik zugänglich ist und in ein idiomatisches Datenflussparadigma übersetzt werden kann, das der Anwendungslogik eigen ist.
-
Ein weiterer Aspekt der offengelegten Ausführungsformen beinhaltet ein computerimplementiertes Verfahren. Das Verfahren umfasst das Empfangen einer ersten Eingabe, die mindestens einen ausgewählten Steuergerätetyp angibt, und das Erzeugen eines Modells auf der Grundlage der ersten Eingabe, das ein Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht. Das Verfahren umfasst auch das Empfangen einer zweiten Eingabe, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps angibt, das Aktualisieren des Modells auf der Grundlage der zweiten Eingabe, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen, und das Kompilieren einer Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt, unter Verwendung des Modells. Das Verfahren umfasst auch das Hochladen der Binärdatei auf ein Steuergerät, das dem ausgewählten Steuergerätetyp entspricht.
-
Ein weiterer Aspekt der offengelegten Ausführungsformen umfasst ein System, das einen Prozessor und einen Speicher umfasst. Der Speicher enthält Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, den Prozessor dazu veranlassen: eine erste Eingabe zu empfangen, die mindestens einen ausgewählten Steuergerätetyp angibt; auf der Grundlage der ersten Eingabe ein Modell zu erzeugen, das ein Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; eine zweite Eingabe zu empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps angibt; auf der Grundlage der zweiten Eingabe das Modell zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps zu repräsentieren; unter Verwendung des Modells eine Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert; und die Binärdatei auf ein Steuergerät hochzuladen, das dem ausgewählten Steuergerätetyp entspricht.
-
Ein weiterer Aspekt der offengelegten Ausführungsformen beinhaltet eine Vorrichtung zur Modellierung eines Fahrzeugsteuergeräts. Die Vorrichtung umfasst einen Prozessor und einen Arbeitsspeicher. Der Arbeitsspeicher enthält Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, den Prozessor dazu veranlassen: eine erste Eingabe zu empfangen, die mindestens einen ausgewählten Steuergerätetyp anzeigt; auf der Grundlage der ersten Eingabe ein erstes Modell zu erzeugen, das ein erstes Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; auf der Grundlage der ersten Eingabe ein zweites Modell zu erzeugen, das ein zweites Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; eine zweite Eingabe zu empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt; auf der Grundlage der zweiten Eingabe das erste Modell und das zweite Modell zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps zu repräsentieren; unter Verwendung des ersten Modells eine erste Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt; unter Verwendung des zweiten Modells eine zweite Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt; die erste Binärdatei auf ein erstes Steuergerät eines Fahrzeugs hochzuladen, wobei das erste Steuergerät dem ausgewählten Steuergerätetyp entspricht; und die zweite Binärdatei auf ein zweites Steuergerät des Fahrzeugs hochzuladen, wobei das zweite Steuergerät dem ausgewählten Steuergerätetyp entspricht, wobei die von dem ersten Steuergerät ausgeführten Funktionen durch entsprechende Funktionen, die auf dem zweiten Steuergerät ausgeführt werden, verifiziert werden.
-
Diese und andere Aspekte der vorliegenden Offenlegung werden in der folgenden detaillierten Beschreibung der Ausführungsformen, der beigefügten Ansprüche und der begleitenden Figuren offengelegt.
-
Figurenliste
-
Die Offenlegung lässt sich am besten anhand der folgenden detaillierten Beschreibung verstehen, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird. Es wird betont, dass die verschiedenen Merkmale der Zeichnungen nach gängiger Praxis nicht maßstabsgetreu sind. Im Gegenteil, die Dimensionen der verschiedenen Merkmale sind der Klarheit halber willkürlich vergrößert oder verkleinert.
- 1 veranschaulicht allgemein ein Fahrzeug gemäß den Prinzipien der vorliegenden Offenlegung.
- FIG.. 2A-2C veranschaulichen allgemein ein Blockdiagramm einer Computerarchitektur gemäß den Prinzipien der vorliegenden Offenlegung.
- 3A stellt allgemein eine Rechenvorrichtung gemäß den Prinzipien der vorliegenden Offenlegung dar.
- 3B veranschaulicht allgemein einen Steuergerät nach den Prinzipien der vorliegenden Offenlegung.
- 4 ist ein Flussdiagramm, das allgemein ein Modellierungsverfahren für Steuergeräte nach den Prinzipien der vorliegenden Offenlegung veranschaulicht.
- 5 ist ein Flussdiagramm, das allgemein ein alternatives Modellierungsverfahren für Steuergeräte gemäß den Prinzipien der vorliegenden Offenlegung veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgende Diskussion richtet sich auf verschiedene Ausführungsformen der Offenlegung. Obwohl eine oder mehrere dieser Ausführungsformen bevorzugt sein können, sollten die offengelegten Ausführungsformen nicht so interpretiert oder anderweitig verwendet werden, dass sie den Umfang der Offenlegung, einschließlich der Ansprüche, einschränken. Darüber hinaus wird der Fachmann verstehen, dass die folgende Beschreibung eine breite Anwendung findet, und dass die Erörterung jeder Ausführungsform nur als Beispiel für diese Ausführungsform gedacht ist und nicht als Hinweis darauf, dass der Umfang der Offenbarung, einschließlich der Ansprüche, auf diese Ausführungsform beschränkt ist.
-
Wie beschrieben, enthält ein Fahrzeug, wie z.B. ein PKW, ein LKW, ein Sportnutzfahrzeug, ein Geländewagen, ein Kleintransporter, ein Wasserfahrzeug, ein Flugzeug, ein Geländefahrzeug, ein Wohnmobil oder andere geeignete Fahrzeuge, in der Regel verschiedene Steuergeräte, die so konfiguriert sind, dass sie entsprechende Funktionen des Fahrzeugs ausführen. Zum Beispiel können ein oder mehrere Steuergeräte so konfiguriert sein, dass sie Funktionen eines elektronischen Servolenkungssystems des Fahrzeugs ausführen. Eine Herausforderung beim Software-Engineering von Software, die von derartigen Steuergeräten ausgeführt wird, kann als „Trennung der Zuständigkeiten“ bezeichnet werden. Insbesondere ist es hilfreich, zu trennen, was die Software tun soll (z.B. Entwurf) und wie sie es tut (z.B. Implementierung).
-
Dies wird oft durch die Aufteilung der Software in „Schichten“ erreicht, wobei jede Schicht die komplexe Funktionalität der darunter liegenden Schichten abstrahiert und eine einfachere Schnittstelle zu den darüber liegenden bietet. Typischerweise wird eine solche Aufteilung der Software in Schichten mit Hilfe verschiedener Werkzeuge von Drittanbietern erreicht. AUTOSAR (Automotive Open System Architecture) definiert hierfür eine Struktur, und die Werkzeuge von Drittanbietern definieren eine Reihe von AUTOSAR-Komponenten. Solche Werkzeuge sind jedoch in der Regel komplex und teuer und erfordern Software-Knowhow und einen erheblichen Zeitaufwand für das Erlernen und Ausführen.
-
In typischen Software-Entwurfssystemen wird der Entwurf als eine Reihe von computersimulierten Modellen definiert, die manuell oder automatisch in Code konvertiert werden. In beiden Fällen (z.B. manuelle oder automatische Konvertierung in Code) ist eine gewisse Softwarekenntnis erforderlich sowie Spezialwissen, um jeden Teil des Entwurfs in das größere Projekt zu integrieren, was in der Regel ein rein manueller Prozess ist. Typischerweise bedeutet dies, dass es Wochen dauert, einen neuen Entwurf in eine ausführbare Binärdatei zu konvertieren, die auf der Hardware getestet werden kann. Darüber hinaus wird die Integrationsarbeit in der Regel für jedes weitere Projekt, in dem der Entwurf verwendet werden soll, erneut durchgeführt. Dies kann zeitaufwendig und fehleranfällig sein und dadurch zusätzliche Ressourcen kosten.
-
Dementsprechend können Systeme und Verfahren, wie die hier beschriebenen, die so konfiguriert sind, dass sie eine Middleware-Schnittstelle und eine Reihe von Werkzeugen bereitstellen, die die Komplexität der Integration verringern, wünschenswert sein. Middleware umfasst typischerweise eine Art von Software, die als Brücke zwischen einer Anwendung und der Plattform, auf der die Anwendung läuft, fungiert. Sie ist so konzipiert, dass sie das komplexe Innenleben der Software der Anwendung kapselt. In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine vereinfachte Middleware-Schnittstelle bieten. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine Reihe von Konfigurationswerkzeugen bereitstellen, die die Komplexität der Integration verringern.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass die Integrationszeiten verkürzt werden können (z.B. auf Minuten statt auf Wochen) und keine besonderen Softwarekenntnisse des Benutzers erforderlich sind. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine Plattform für schnelles Prototyping bieten, was die erforderlichen Ressourcen in Produktionsprogrammen (z.B. Software, Anwendungen und dergleichen) reduzieren kann.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass ein modulares System bereitgestellt wird, das es ermöglicht, Gerätetreiber und/oder andere Low-Level-Komponenten mit Hilfe von Middleware-Konfigurationswerkzeugen hinzuzufügen oder zu entfernen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass diese Komponenten sowie andere komplexe interne Algorithmen, die für eine Anwendung erforderlich sind, auf der Grundlage einer gewünschten Hardware-Plattform ausgewählt werden können. Die Anwendung kann eine Fahrzeugsteuerung (wie z.B. eine Motorsteuerung, eine Lenksystemsteuerung, eine andere geeignete Fahrzeugsteuerung) oder andere geeignete Steuerungsanwendungen, die eingebettete Systeme verwenden, umfassen.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine gemeinsame Schnittstelle bereitstellen, die für den Anschluss von Sensoren konfiguriert ist. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine oder mehrere Kommunikationsschnittstellen bereitstellen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine oder mehrere Eingabeschnittstellen und eine oder mehrere Ausgabeschnittstellen (E/A) bereitstellen, die für die Anwendungslogik (z.B. Softwarelogik) zugänglich sind, übersetzt in ein idiomatisches Datenflussparadigma, das der Anwendungslogik selbst eigen ist. Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine minimale Überarbeitung der Anwendungslogik auf verschiedenen Plattformen ermöglichen.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Architektur bereitstellen, die eine Spezifikation enthält, die die Schnittstelle zwischen der Middleware und der Anwendungslogik, die Schnittstelle zu Gerätetreibern und Hardware, eine oder mehrere andere Schnittstellen und/oder Begrenzungen eines Modells oder eine Kombination davon definiert.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Architektur bereitstellen, die Konfigurationswerkzeuge enthält, die von einem Benutzer (z. B. einem Designer oder einem anderen geeigneten Benutzer) zur Auswahl von Hardware und Peripheriegeräten verwendet werden können und die Schnittstelle eines computersimulierten Modells, das die Konfiguration darstellt, erzeugen.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Architektur bereitstellen, die eine Basissoftware beinhaltet, die Treiber, ein Betriebssystem und/oder alle anderen internen Softwarekomponenten umfasst, die ein Softwareprojekt selbst definieren (z.B. mit modularen Komponenten, die mit den Konfigurationswerkzeugen ausgewählt werden).
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Architektur bereitstellen, die Autocodierungswerkzeuge enthält, die die Fähigkeit bieten, ein computersimuliertes Modell in Code zu konvertieren, der in die Basissoftware integriert wird.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Architektur bereitstellen, die Konstruktionswerkzeuge einschließlich integrierter Werkzeuge zur Konstruktion eines Softwaresystems (z.B. entsprechend dem Softwareprojekt) umfasst.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine Benutzerschnittstelle bereitstellen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie von dem Benutzer über die Benutzerschnittstelle ausgewählte Hardware und Peripheriegeräte empfangen, die von dem Benutzer mit Hilfe der Konfigurationswerkzeuge über die Benutzerschnittstelle ausgewählt werden. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie die Konfigurationswerkzeuge verwenden, um die Komponenten des computersimulierten Modells auf der Grundlage einer ausgewählten Konfiguration zu erzeugen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie von dem Benutzer über die Benutzerschnittstelle ein computersimuliertes Modell mit der gewünschten Funktionalität empfangen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie Middleware-Werkzeuge des Benutzers zur Kompilierung einer Binärdatei erhalten (z.B. durch Empfang einer Ein-Klick-Anweisung zur Kompilierung vom Benutzer über die Benutzerschnittstelle).
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass der Benutzer Probleme lösen kann (z.B. wenn das Modell fehlschlägt) und/oder die Binärdatei auf die Hardware flashen kann (z.B. wenn das Modell erfolgreich ist). Die hierin beschriebenen Systeme und Verfahren können plattformunabhängig sein. Die Konfigurations- und Middleware-Werkzeuge können mit jeder geeigneten Software zur computersimulierten Modellierung implementiert sein. Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie dem Benutzer die Möglichkeit bieten, die Binärdatei ohne fortgeschrittene Softwarekenntnisse und ohne einen manuellen Softwareintegrationsprozess zu kompilieren.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine hybrid-deterministische eingebettete Software-Architektur bieten. Zum Beispiel kann eine nicht-deterministische Software-Architektur Software-Läufe ohne einen vorhersagbaren Zeitablauf beinhalten (z.B. typischerweise verwendet in einfacherer Elektronik mit einfacherem Code, wie z.B. einer Computertastatur). Das heißt, der Code läuft einfach, und jede zeitbezogene Funktionalität hängt von der Hardware des Mikrocontrollers oder Prozessors ab. Im Gegensatz dazu umfasst eine deterministische SoftwareArchitektur Software, die ein Betriebssystem verwendet, um Aufgaben periodisch auszuführen. Jede Funktion wird zu einer bestimmten Zeitspanne gestartet. Die deterministische Software-Architektur kann verschiedene periodische Raten bzw. Geschwindigkeiten für verschiedene Funktionen unterstützen. Wenn die Ausführung aller periodischen Funktionen beendet wurde, ist das mit der deterministischen Softwarearchitektur verbundene System bis zum Beginn der nächsten Periode inaktiv.
-
Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine Software-Architektur bereitstellen, die eine Kombination aus nicht-deterministischer und deterministischer Funktionsausführung verwendet. Beispielsweise können die hierin beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie Funktionen, die auf einer periodischen Ausführung beruhen, deterministisch ausführen, wie beschrieben. Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie feststellen, ob alle periodischen Funktionen ausgeführt worden sind, und als Reaktion auf die Feststellung, dass alle periodischen Funktionen ausgeführt worden sind, einen separaten Abschnitt eines nicht-deterministischen Codes ausführen. Der nicht-deterministische Code kann bis zum Beginn der nächsten Periode ausgeführt werden und nimmt die Ausführung wieder auf, sobald die periodischen Funktionen abgeschlossen sind.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass verfahrenstechnische Belange aus dem Modell entfernt werden können, was das Modell erheblich vereinfachen kann. Diese Vereinfachung erstreckt sich auch auf die Codegenerierung (z.B. kann ein viel größerer Teil der Architektur gleichzeitig oder im Wesentlichen gleichzeitig modelliert und automatisch codiert werden, wodurch die Notwendigkeit einer manuellen Integration entfällt).
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie eine erste Eingabe empfangen, die zumindest einen ausgewählten Steuergerätetyp anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie auf der Grundlage der ersten Eingabe ein Modell erzeugen, das ein Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie eine zweite Eingabe empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie auf der Grundlage der zweiten Eingabe das Modell aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie unter Verwendung des Modells eine Binärdatei kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie die Binärdatei auf ein Steuergerät hochladen, das dem ausgewählten Steuergerätetyp entspricht.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie als Reaktion auf die Aktualisierung basierend auf der zweiten Eingabe, das Modell bestimmen, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert, unabhängig davon, ob das Modell einen oder mehrere Fehler enthält. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie als Reaktion auf die Feststellung, dass das Modell einen oder mehrere Fehler enthält, eine Ausgabe erzeugen, die den einen oder die mehreren Fehler anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie als Reaktion auf die Ausgabe, die den einen oder mehrere Fehler anzeigt, eine dritte Eingabe empfangen, die mindestens eine Modifikation des Modells anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie das Modell auf der Grundlage der dritten Eingabe aktualisieren.
-
In einigen Ausführungsformen können die hier beschriebenen Systeme und Verfahren so konfiguriert sein, dass sie einen Zeitgeber auf eine vorbestimmte Zeitspanne einstellen. Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie deterministische Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne ausführen. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie als Reaktion auf eine Feststellung, dass alle deterministischen Funktionen des Modells ausgeführt wurden, und als Reaktion auf eine Feststellung, dass der Zeitgeber nicht abgelaufen ist, nicht-deterministische Funktionen des Modells ausführen.
-
1 illustriert allgemein ein Fahrzeug 10 gemäß den Prinzipien der vorliegenden Offenlegung. Das Fahrzeug 10 kann jedes geeignete Fahrzeug umfassen, wie z.B. einen PKW, einen LKW, ein Sportnutzfahrzeug, einen Kleintransporter, einen Geländewagen, jedes andere Personenfahrzeug, jedes geeignete Nutzfahrzeug oder jedes andere geeignete Fahrzeug. Obwohl das Fahrzeug 10 als Personenkraftwagen mit Rädern und für den Einsatz auf Straßen dargestellt ist, können die Prinzipien dieser Offenlegung auch auf andere Fahrzeuge wie Flugzeuge, Boote, Züge, Drohnen oder andere geeignete Fahrzeuge Anwendung finden.
-
Das Fahrzeug 10 beinhaltet eine Fahrzeugkarosserie 12 und eine Motorhaube 14. Ein Fahrgastraum 18 wird zumindest teilweise durch die Fahrzeugkarosserie 12 definiert. Ein weiterer Teil der Fahrzeugkarosserie 12 definiert einen Motorraum 20. Die Motorhaube 14 kann beweglich an einem Teil der Fahrzeugkarosserie 12 angebracht sein, so dass die Motorhaube 14 den Zugang zum Motorraum 20 ermöglicht, wenn sich die Motorhaube 14 in einer ersten oder offenen Stellung befindet, und die Motorhaube 14 den Motorraum 20 abdeckt, wenn sich die Motorhaube 14 in einer zweiten oder geschlossenen Stellung befindet. In einigen Ausführungsformen kann der Motorraum 20 auf dem hinteren Teil des Fahrzeugs 10 angeordnet sein, anders als dies allgemein dargestellt ist.
-
Der Fahrgastraum 18 kann hinter dem Motorraum 20 angeordnet sein, kann aber vor dem Motorraum 20 in Ausführungsformen angeordnet sein, bei denen der Motorraum 20 am hinteren Teil des Fahrzeugs 10 angeordnet ist. Das Fahrzeug 10 kann jedes geeignete Antriebssystem einschließlich eines Antriebssystems mit Verbrennungsmotor, einem oder mehreren Elektromotoren (z.B. ein Elektrofahrzeug), einer oder mehreren Brennstoffzellen, einem Hybridantrieb (z.B. ein Hybridfahrzeug) mit einer Kombination aus einem Verbrennungsmotor und einem oder mehreren Elektromotoren, und/oder jedes andere geeignete Antriebssystem umfassen.
-
In einigen Ausführungsformen kann das Fahrzeug 10 einen Benzin- oder Ottomotor enthalten, wie z.B. einen Funkenzündungsmotor. In einigen Ausführungsformen kann das Fahrzeug 10 einen Dieselkraftstoffmotor enthalten, wie z.B. einen Kompressionszündungsmotor. Der Motorraum 20 beherbergt und/oder umschließt zumindest einige Komponenten des Antriebssystems des Fahrzeugs 10. Zusätzlich oder alternativ dazu sind im Fahrgastraum 18 des Fahrzeugs 10 Bedienelemente für den Antrieb, wie ein Beschleunigungsstellglied (z.B. ein Gaspedal), ein Bremsenstellglied (z.B. ein Bremspedal), ein Lenkrad und andere derartige Bauteile angeordnet. Die Bedienelemente für den Antrieb können von einem Fahrer des Fahrzeugs 10 betätigt oder gesteuert werden und können direkt mit entsprechenden Bauteilen des Antriebssystems verbunden sein, wie z.B. einer Drosselklappe, einer Bremse, einer Fahrzeugachse, einem Fahrzeuggetriebe und dergleichen. In einigen Ausführungsformen können die Bedienelemente für den Antrieb Signale an einen Fahrzeugrechner übermitteln (z.B. drive by wire), der seinerseits die entsprechende Antriebskomponente des Antriebssystems steuern kann. In einigen Ausführungsformen kann das Fahrzeug 10 daher ein autonomes Fahrzeug sein.
-
In einigen Ausführungsformen enthält das Fahrzeug 10 ein Getriebe, das über ein Schwungrad oder eine Kupplung oder Fluidkupplung mit einer Kurbelwelle in Verbindung steht. In einigen Ausführungsformen enthält das Getriebe ein Schaltgetriebe. In einigen Ausführungsformen enthält das Getriebe ein Automatikgetriebe. Das Fahrzeug 10 kann im Falle eines Verbrennungsmotors oder eines Hybridfahrzeugs einen oder mehrere Kolben enthalten, die mit der Kurbelwelle zusammenwirken, um eine Kraft zu erzeugen, die durch das Getriebe auf eine oder mehrere Achsen übertragen wird und Räder 22 dreht. Wenn das Fahrzeug 10 einen oder mehrere Elektromotoren enthält, liefert eine Fahrzeugbatterie und/oder eine Brennstoffzelle Energie an die Elektromotoren, um die Räder 22 zu drehen.
-
Das Fahrzeug 10 kann automatische Fahrzeugantriebssysteme, wie z.B. einen Geschwindigkeitsregler, einen adaptiven Geschwindigkeitsregler, eine automatische Bremssteuerung, andere automatische Fahrzeugantriebssysteme oder eine Kombination davon enthalten. Das Fahrzeug 10 kann ein autonomes oder halbautonomes Fahrzeug oder ein anderer geeigneter Fahrzeugtyp sein. Das Fahrzeug 10 kann zusätzliche oder weniger Merkmale als die hier allgemein abgebildeten und/oder offengelegten enthalten.
-
In einigen Ausführungsformen kann das Fahrzeug 10 eine Ethernet-Komponente 24, einen Controller Area Network Bus (CAN-Bus) 26, eine Media Oriented Systems Transport Component (MOST-Komponente) 28, eine FlexRay-Komponente 30 (z. B. Brake-by-Wire-System und dergleichen) und eine Local Interconnect Network Component (LIN-Komponente) 32 enthalten. Das Fahrzeug 10 kann den CAN-Bus 26, die MOST-Komponente 28, die FlexRay-Komponente 30, die LIN-Komponente 32, andere geeignete Netzwerke oder Kommunikationssysteme oder eine Kombination davon verwenden, um verschiedene Informationen z. B. von Sensoren innerhalb oder außerhalb des Fahrzeugs an z. B. verschiedene Prozessoren oder Steuergeräte innerhalb oder außerhalb des Fahrzeugs zu übermitteln. Das Fahrzeug 10 kann zusätzliche oder weniger Merkmale als die hier allgemein abgebildeten und/oder offengelegten enthalten.
-
2A-2C veranschaulichen allgemein ein System 100, das eine Middleware 112 enthält. Das System 100 kann eine geeignete Rechenvorrichtung enthalten oder mit einer solchen ausgeführt werden, wie z.B. der Rechenvorrichtung 200, die allgemein in 3A dargestellt ist. Die Rechenvorrichtung 200 kann für die Durchführung der hier beschriebenen Systeme und Verfahren konfiguriert sein. Die Rechenvorrichtung 200 kann jede geeignete Rechenvorrichtung enthalten.
-
Die Rechenvorrichtung 200 kann einen Prozessor 202 enthalten, der so konfiguriert ist, dass er den Gesamtbetrieb der Rechenvorrichtung 200 steuert. Der Prozessor 202 kann jeden geeigneten Prozessor enthalten, wie z.B. die hier beschriebenen. Zusätzlich oder alternativ kann die Rechenvorrichtung 200 eine beliebige geeignete Anzahl von Prozessoren zusätzlich zu dem oder anders als der Prozessor 202 enthalten. Die Rechenvorrichtung 200 kann auch eine Benutzereingabevorrichtung 204 enthalten, die so konfiguriert ist, dass sie Eingaben von einem Benutzer der Rechenvorrichtung 200 empfängt und Signale, die die vom Benutzer empfangene Eingabe repräsentieren, an den Prozessor 202 übermittelt. Zum Beispiel kann die Benutzereingabevorrichtung 204 eine Taste, ein Tastenfeld, einen Wählschalter, einen Berührungsbildschirm, eine Audio-Eingabeschnittstelle, eine visuelle oder Bilderfassungs-Eingabeschnittstelle, eine Eingabe in Form von Sensordaten usw. enthalten.
-
Die Rechenvorrichtung 200 kann eine Anzeige 206 enthalten, die von dem Prozessor 202 gesteuert werden kann, um dem Benutzer Informationen anzuzeigen. Ein Datenbus 208 kann so konfiguriert sein, dass er einen Datentransfer zwischen mindestens einer Speichervorrichtung 210 und dem Prozessor 202 ermöglicht. Die Rechenvorrichtung 200 kann auch eine Netzwerkschnittstelle 212 enthalten, die so konfiguriert ist, dass die Rechenvorrichtung 200 mit verschiedenen anderen Rechenvorrichtungen oder Netzwerkvorrichtungen über eine Netzwerkverbindung, z.B. eine drahtgebundene oder drahtlose Verbindung, gekoppelt oder verbunden werden kann. In einigen Ausführungsformen enthält die Netzwerkschnittstelle 212 einen drahtlosen Sender/Empfänger.
-
Die Speichervorrichtung 210 kann eine einzelne Platte oder mehrere Platten (z.B. Festplatten), ein oder mehrere Halbleiter-Laufwerke, eine oder mehrere Hybrid-Festplatten und ähnliches umfassen. Die Speichervorrichtung 210 kann ein Speicherverwaltungsmodul enthalten, das eine oder mehrere Partitionen innerhalb der Speichervorrichtung 210 verwaltet. In einigen Ausführungsformen kann die Speichervorrichtung 210 Flash-Speicher, Halbleiterspeicher (Festkörperspeicher) oder ähnliches enthalten. Die Rechenvorrichtung 200 kann auch einen Arbeitsspeicher 214 enthalten. Der Arbeitsspeicher 214 kann einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM) oder eine Kombination davon enthalten. Der Arbeitsspeicher 214 kann Programme, Dienstprogramme oder Prozesse speichern, die von dem Prozessor 202 ausgeführt werden sollen. Der Arbeitsspeicher 214 kann eine flüchtige Datenspeicherung bieten und speichert Anweisungen, die sich auf den Betrieb der Rechenvorrichtung 200 beziehen.
-
Die Middleware 112 kann eine Art Software enthalten, die als Brücke zwischen einer Anwendung 114 und der Plattform 116, auf der sie läuft, fungiert. Die Middleware 112 kann so konzipiert sein, dass sie das komplexe Innenleben der Software kapselt. Die hier offen gelegte Middleware 112 kann bestehende Systeme verbessern, indem sie die Middleware-Schnittstelle weiter vereinfacht und eine Reihe von Werkzeugen bereitstellt, die die Komplexität der Integration verringern. Wenn dieses System 100 ordnungsgemäß ausgeführt wird, kann die Integration Minuten statt Wochen dauern, und der Benutzer muss unter Umständen keine besonderen Softwarekenntnisse besitzen. Diese Zeitersparnis schafft eine ideale Plattform für schnelles Prototyping und kann eine Anzahl von Ressourcen reduzieren, die für die Produktion von Programmen erforderlich sind.
-
Die Middleware 112 kann als modulares System betrieben werden. Beispielsweise können Gerätetreiber und andere Low-Level-Komponenten mit Hilfe von Middleware-Konfigurationswerkzeugen hinzugefügt oder entfernt werden, die dem Benutzer über eine Benutzerschnittstelle zur Verfügung gestellt werden. Diese Komponenten können (z.B. durch den Benutzer über die Benutzerschnittstelle) auf der Grundlage einer gewünschten Hardware-Plattform ausgewählt werden, ebenso wie andere komplexe interne Algorithmen, die für die Anwendung erforderlich sind (z.B. wie die hier beschriebenen). Die Hardware 16 kann jede geeignete Hardware umfassen, einschließlich, aber nicht beschränkt auf ein Fahrzeug-Steuergerät, wie z.B. das Steuergerät 300, wie es allgemein in 3B dargestellt ist. Das Steuergerät 300 kann jedes geeignete Steuergerät enthalten. Das Steuergerät 300 kann so konfiguriert sein, dass es z.B. verschiedene Aspekte des Fahrzeugs 10 steuert.
-
Das Steuergerät 300 kann einen Prozessor 302 und einen Arbeitsspeicher 304 enthalten. Der Prozessor 302 kann jeden geeigneten Prozessor, wie die hier beschriebenen, enthalten. Zusätzlich oder alternativ dazu kann das Steuergerät 300 eine beliebige geeignete Anzahl von Prozessoren enthalten, zusätzlich zu dem oder anders als der Prozessor 302. Der Arbeitsspeicher 304 kann eine einzelne Platte oder eine Vielzahl von Platten (z.B. Festplatten) umfassen und enthält ein Speicherverwaltungsmodul, das eine oder mehrere Partitionen innerhalb des Arbeitsspeichers 304 verwaltet. In einigen Ausführungsformen kann der Arbeitsspeicher 304 Flash-Speicher, Halbleiter-(Festkörper-)Speicher oder ähnliches enthalten. Der Arbeitsspeicher 304 kann einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM) oder eine Kombination davon enthalten. Der Arbeitsspeicher 304 kann Anweisungen enthalten, die, wenn sie von dem Prozessor 302 ausgeführt werden, den Prozessor 302 dazu veranlassen, zumindest verschiedene Funktionen des Fahrzeugs 10 auf der Grundlage der kompilierten Binärdatei zu steuern, wie beschrieben.
-
Es wird eine gemeinsame Schnittstelle 118 für Sensoren, Kommunikationsschnittstellen und E/A definiert, die für die Anwendungslogik zugänglich ist, übersetzt in ein idiomatisches Datenflussparadigma, das der Anwendungslogik selbst eigen ist. Diese Architektur ermöglicht eine minimale Nacharbeit in der Anwendungslogik über verschiedene Plattformen hinweg.
-
Die Middleware 112 kann aus einem oder mehreren Teilen oder Abschnitten davon bestehen. Beispielsweise kann eine Spezifikation die Schnittstelle zwischen der Middleware und der Anwendungslogik sowie die Schnittstelle zu Gerätetreibern und Hardware definieren. Die Spezifikation definiert auch etwaige Einschränkungen der Modelle. Zusätzlich oder alternativ können Konfigurationswerkzeuge von dem Benutzer über die Benutzerschnittstelle verwendet werden, um Hardware und Peripheriegeräte auszuwählen und eine Schnittstelle für ein computersimuliertes Modell zu erzeugen, das die Konfiguration repräsentiert, wie in Block 120 von 2B dargestellt. Zur Basissoftware können die Treiber, das Betriebssystem und alle anderen internen Komponenten gehören, die die Basis des Softwareprojekts selbst bilden (mit modularen Komponenten, die mit den Konfigurationswerkzeugen ausgewählt werden). Autocodierungswerkzeuge können die Fähigkeit bieten, ein computersimuliertes Modell in Code zu konvertieren, der in die Basissoftware integriert wird, wie in Block 122 und 124 von 2B gezeigt. Konstruktionswerkzeuge können integrierte Werkzeuge umfassen, die zum Aufbau des Systems eingesetzt werden.
-
In einigen Ausführungsformen erzeugen die Konfigurationswerkzeuge, nachdem der Benutzer ein oder mehrere Konfigurationswerkzeuge zur Auswahl von Hardware und Peripheriegeräten verwendet hat, die Komponenten des computersimulierten Modells auf der Grundlage der ausgewählten Konfiguration. Wie in Block 120 veranschaulicht, kann der Benutzer dann ein computersimuliertes Modell mit einem oder mehreren funktionalen Aspekten eines Steuergeräts, z.B. des Steuergeräts 300, erstellen, das durch das Modell repräsentiert wird. Der Benutzer verwendet die Middleware-Werkzeuge, um eine Binärdatei zu kompilieren, wie in Block 122 dargestellt. In einigen Ausführungsformen kann dies mit einem einzigen Klick auf eine Eingabevorrichtung der Rechenvorrichtung 200 erfolgen. Der Benutzer kann nach dem Testen alle Probleme lösen (z.B. wenn das Modell fehlschlägt). Wenn das Modell erfolgreich ist, kann der Benutzer die Binärdatei auf das Steuergerät 300 oder ein anderes geeignetes Steuergerät oder eine andere geeignete Hardware flashen, wie in Blöcken 124 und 126 gezeigt.
-
In einigen Ausführungsformen kann die Rechenvorrichtung 200 eine erste Eingabe empfangen, die mindestens einen ausgewählten Steuergerätetyp anzeigt. Beispielsweise kann der Benutzer die Benutzeroberfläche verwenden, um einen Steuergerätetyp auszuwählen. Der Steuergerätetyp kann dem Steuergerät 300 oder einem anderen geeigneten Steuergerät entsprechen. Es ist zu verstehen, dass der Benutzer jede andere geeignete Hardware abgesehen von einem Steuergerät auswählen kann.
-
Die Rechenvorrichtung 200 kann auf der Grundlage der ersten Eingabe ein Modell erzeugen, das das Steuergerät 300 darstellt (oder z.B. ein anderes geeignetes Steuergerät, das dem ausgewählten Steuergerätetyp entspricht). Die Rechenvorrichtung 200 kann eine zweite Eingabe empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps angibt. Die Rechenvorrichtung 200 kann auf der Grundlage der zweiten Eingabe das Modell aktualisieren, um den mindestens einen funktionalen Aspekt des Steuergeräts 300 darzustellen (oder z.B. ein anderes geeignetes Steuergerät, das dem ausgewählten Steuergerätetyp entspricht).
-
Die Rechenvorrichtung 200 kann unter Verwendung des Modells eine Binärdatei kompilieren, die zumindest den mindestens einen funktionalen Aspekt des Steuergeräts 300 darstellt. Die Rechenvorrichtung 200 kann die Binärdatei auf das Steuergerät 300 hochladen. Das Steuergerät 300 kann so konfiguriert sein, dass es entsprechend der Binärdatei arbeitet. Zum Beispiel kann die Binärdatei im Arbeitsspeicher 304 gespeichert sein. Der Prozessor 302 kann mit der Binärdatei verbundene Anweisungen ausführen. In einigen Ausführungsformen kann das Steuergerät 300 ein Steuergerät des Fahrzeugs 10 sein und so konfiguriert ein, dass es eine oder mehrere Fahrzeugsteuerungsfunktionen ausführt.
-
In einigen Ausführungsformen kann die Rechenvorrichtung 200 als Reaktion auf die Aktualisierung basierend auf der zweiten Eingabe das Modell bestimmen, das den mindestens einen funktionalen Aspekt des Steuergeräts 300 repräsentieren soll, unabhängig davon, ob das Modell einen oder mehrere Fehler enthält. Die hier beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie als Reaktion auf die Feststellung, dass das Modell einen oder mehrere Fehler enthält, eine Ausgabe erzeugen, die den einen oder die mehreren Fehler anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie als Reaktion auf die Ausgabe, die den einen oder mehrere Fehler anzeigt, eine dritte Eingabe empfangen, die mindestens eine Modifikation des Modells anzeigt. Die hierin beschriebenen Systeme und Verfahren können so konfiguriert sein, dass sie das Modell auf der Grundlage der dritten Eingabe aktualisieren.
-
In einigen Ausführungsformen kann die Rechenvorrichtung 200 einen Zeitgeber auf eine vorbestimmte Zeitspanne einstellen. Die Rechenvorrichtung 200 kann deterministische Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne ausführen. Die Rechenvorrichtung 200 kann als Reaktion auf die Feststellung, dass alle deterministischen Funktionen des Modells ausgeführt worden sind, und als Reaktion auf die Feststellung, dass der Zeitgeber nicht abgelaufen ist, nicht-deterministische Funktionen des Modells ausführen. Beispielsweise kann die Rechenvorrichtung 200 feststellen, ob alle deterministischen Funktionen ausgeführt wurden. Wenn die Rechenvorrichtung 200 feststellt, dass alle deterministischen Funktionen ausgeführt wurden, kann die Rechenvorrichtung 200 feststellen, ob der Zeitgeber abgelaufen ist. Wenn die Rechenvorrichtung 200 feststellt, dass der Zeitgeber nicht abgelaufen ist, kann die Rechenvorrichtung 200 nicht-deterministische Funktionen ausführen, bis der Zeitgeber abläuft. Wenn umgekehrt die Rechenvorrichtung 200 feststellt, dass nicht alle deterministischen Funktionen ausgeführt wurden oder dass der Zeitgeber abgelaufen ist, kann die Rechenvorrichtung 200 weiterhin deterministische Funktionen ausführen.
-
In einigen Ausführungsformen kann die Rechenvorrichtung 200 so konfiguriert sein, dass sie mehrere Modelle erzeugt, um Ausgaben des Modells mit zwei oder mehr geeigneten Steuergeräten zu verifizieren. Zum Beispiel kann die Rechenvorrichtung 200, wie beschrieben, die erste Eingabe empfangen. Die Rechenvorrichtung 200 kann auf der Grundlage der ersten Eingabe ein erstes Modell erzeugen, das ein erstes Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht, wie z.B. das Steuergerät 300. Die Rechenvorrichtung 200 kann dann, basierend auf der ersten Eingabe, ein zweites Modell erzeugen, das ein zweites Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht, wie z.B. ein weiteres Steuergerät des Fahrzeugs 10.
-
Die Rechenvorrichtung 200 kann eine zweite Eingabe erhalten, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt. Die Rechenvorrichtung 200 kann auf der Grundlage der zweiten Eingabe das erste Modell und das zweite Modell aktualisieren, um den mindestens einen funktionalen Aspekt des Steuergeräts 300 und des anderen Steuergeräts innerhalb des Fahrzeugs 10 darzustellen. Die Rechenvorrichtung 200 kann unter Verwendung des ersten Modells eine erste Binärdatei kompilieren, die zumindest den mindestens einen funktionalen Aspekt des Steuergeräts 300 darstellt. Die Rechenvorrichtung 200 kann unter Verwendung des zweiten Modells eine zweite Binärdatei kompilieren, die zumindest den mindestens einen funktionalen Aspekt des anderen Steuergeräts des Fahrzeugs 10 repräsentiert. Die Rechenvorrichtung 200 kann die erste Binärdatei auf das Steuergerät 300 hochladen. Die Rechenvorrichtung 200 kann die zweite Binärdatei auf das andere Steuergerät des Fahrzeugs 10 hochladen. Das Steuergerät 300 kann eine oder mehrere Ausgaben unter Verwendung verschiedener durch das Modell definierter Berechnungen und/oder Kalkulationen erzeugen (z.B. um verschiedene Aspekte des Fahrzeugs 10 zu steuern). Das andere Steuergerät des Fahrzeugs 10 kann so konfiguriert sein, dass es dieselben Ausgaben wie das Steuergerät 300 unter Verwendung einer oder mehrerer unterschiedlicher oder ähnlicher, durch das Modell definierter Berechnungen oder Kalkulationen erzeugt. Auf diese Weise können die durch das Modell definierten Ausgaben (z.B. das erste Modell und/oder das zweite Modell) verifiziert werden, indem die von dem Steuergerät 300 erzeugten Ausgaben mit den von dem anderen Steuergerät des Fahrzeugs 10 erzeugten Ausgaben verglichen werden.
-
In einigen Ausführungsformen können das System 100, die Rechenvorrichtung 200 und/oder das Steuergerät 300 die hier beschriebenen Verfahren ausführen. Die hier beschriebenen Verfahren, wie sie vom System 100, der Rechenvorrichtung 200 und/oder dem Steuergerät 300 ausgeführt werden, sind jedoch nicht als Einschränkung gedacht, und jede Art von Software, die auf einem Steuergerät oder Prozessor ausgeführt wird, kann die hier beschriebenen Verfahren ausführen, ohne vom Umfang dieser Offenlegung abzuweichen. Zum Beispiel kann ein Steuergerät, wie z.B. ein Prozessor, der Software innerhalb einer Rechenvorrichtung ausführt, die hier beschriebenen Verfahren ausführen.
-
4 ist ein Flussdiagramm, das allgemein das Modellierungsverfahren 400 für Steuergeräte gemäß den Prinzipien der vorliegenden Offenlegung veranschaulicht. Bei 402 empfängt das Verfahren 400 eine erste Eingabe, die mindestens einen ausgewählten Steuergerätetyp angibt. Zum Beispiel empfängt die Rechenvorrichtung 200 die erste Eingabe, die den ausgewählten Steuergerätetyp angibt.
-
Bei 404 erzeugt das Verfahren 400 auf der Grundlage der ersten Eingabe ein Modell, das ein dem ausgewählten Steuergerätetyp entsprechendes Steuergerät darstellt. Zum Beispiel erzeugt die Rechenvorrichtung 200 auf der Grundlage der ersten Eingabe ein Modell, das das Steuergerät 300 repräsentiert.
-
Bei 406 empfängt das Verfahren 400 eine zweite Eingabe, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt. Zum Beispiel empfängt die Rechenvorrichtung 200 die zweite Eingabe, die mindestens einen funktionalen Aspekt des Steuergeräts 300 angibt. Der mindestens eine funktionale Aspekt kann eine oder mehrere Funktionen, Berechnungen, Kalkulationen oder Steuerungsaspekte des Steuergeräts 300 umfassen. Wenn das Steuergerät 300 wie beschrieben mit der Binärdatei geflasht wird, kann es den mindestens einen funktionalen Aspekt ausführen.
-
Bei 408 aktualisiert das Verfahren 400 auf der Grundlage der zweiten Eingabe das Modell, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen. Zum Beispiel aktualisiert die Rechenvorrichtung 200 das Modell, um den mindestens einen funktionalen Aspekt des Steuergeräts 300 zu repräsentieren.
-
Bei 410 kompiliert das Verfahren 400 unter Verwendung des Modells eine Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert. Zum Beispiel kompiliert die Rechenvorrichtung 200 mit Hilfe der Middleware 112 die Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des Steuergeräts 300 repräsentiert.
-
Bei 412 lädt das Verfahren 400 die Binärdatei auf ein Steuergerät hoch, das dem ausgewählten Steuergerätetyp entspricht. Zum Beispiel lädt die Rechenvorrichtung 200 die Binärdatei auf das Steuergerät 300 hoch oder flasht es. Das Steuergerät 300 kann dann den mindestens einen funktionalen Aspekt und/oder andere verschiedene Funktionen ausführen, die durch die Binärdatei definiert sind.
-
5 ist ein Flussdiagramm, das allgemein ein alternatives Modellierungsverfahren 500 für Steuergeräte gemäß den Prinzipien der vorliegenden Offenlegung veranschaulicht. Bei 502 empfängt das Verfahren 500 eine erste Eingabe, die mindestens einen ausgewählten Steuergerätetyp angibt. Zum Beispiel empfängt die Rechenvorrichtung 200 die erste Eingabe, die den ausgewählten Steuergerätetyp angibt.
-
Bei 504 erzeugt das Verfahren 500 basierend auf der ersten Eingabe ein erstes Modell, das ein erstes Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht. Zum Beispiel erzeugt die Rechenvorrichtung 200 auf der Grundlage der ersten Eingabe das erste Modell, das das Steuergerät 300 repräsentiert.
-
Bei 506 erzeugt das Verfahren 500 auf der Grundlage der ersten Eingabe ein zweites Modell, das ein zweites Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht. Zum Beispiel erzeugt die Rechenvorrichtung 200 auf der Grundlage der ersten Eingabe das zweite Modell, das das andere Steuergerät des Fahrzeugs 10 repräsentiert.
-
Bei 508 empfängt das Verfahren 500 eine zweite Eingabe, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt. Zum Beispiel empfängt die Rechenvorrichtung 200 die zweite Eingabe, die mindestens einen funktionalen Aspekt des Steuergeräts 300 angibt. Der mindestens eine funktionale Aspekt kann eine oder mehrere Funktionen, Berechnungen, Kalkulationen oder Steuerungsaspekte des Steuergeräts 300 und/oder des anderen Steuergeräts des Fahrzeugs 10 umfassen. Wenn das Steuergerät 300 und/oder das andere Steuergerät des Fahrzeugs 10, wie beschrieben, mit der Binärdatei geflasht werden, können sie den mindestens einen funktionalen Aspekt ausführen.
-
Bei 510 aktualisiert das Verfahren 500, basierend auf der zweiten Eingabe, das erste Modell, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen. Zum Beispiel aktualisiert die Rechenvorrichtung 200 das erste Modell, um den mindestens einen funktionalen Aspekt des Steuergeräts 300 zu repräsentieren.
-
Bei 512 aktualisiert das Verfahren 500 basierend auf der zweiten Eingabe das zweite Modell, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen. Zum Beispiel aktualisiert die Rechenvorrichtung 200 das zweite Modell, um den mindestens einen funktionalen Aspekt des anderen Steuergeräts des Fahrzeugs 10 darzustellen.
-
Bei 514 kompiliert das Verfahren 500 unter Verwendung des Modells eine erste Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert. Zum Beispiel kompiliert die Rechenvorrichtung 200 mit Hilfe der Middleware 112 die erste Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des Steuergeräts 300 darstellt.
-
Bei 516 kompiliert das Verfahren 500 unter Verwendung des Modells eine zweite Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert. Zum Beispiel kompiliert die Rechenvorrichtung 200 mit Hilfe der Middleware 112 die zweite Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des anderen Steuergeräts des Fahrzeugs 10 darstellt.
-
Bei 518 lädt das Verfahren 500 die erste Binärdatei auf ein Steuergerät hoch, das dem ausgewählten Steuergerätetyp entspricht. Zum Beispiel lädt die Rechenvorrichtung 200 die erste Binärdatei auf das Steuergerät 300 hoch oder flasht es. Das Steuergerät 300 kann dann den mindestens einen funktionalen Aspekt und/oder andere verschiedene Funktionen ausführen, die durch die erste Binärdatei definiert sind.
-
Bei 520 lädt das Verfahren 500 die zweite Binärdatei auf ein Steuergerät hoch, das dem ausgewählten Steuergerätetyp entspricht. Zum Beispiel lädt die Rechenvorrichtung 200 die zweite Binärdatei auf ein anderes Steuergerät des Fahrzeugs 10 hoch oder flasht es. Das andere Steuergerät kann dann den mindestens einen funktionalen Aspekt und/oder andere verschiedene Funktionen ausführen, die durch die zweite Binärdatei definiert sind.
-
In einigen Ausführungsformen umfasst ein computerimplementiertes Verfahren das Empfangen einer ersten Eingabe, die mindestens einen ausgewählten Steuergerätetyp angibt, und das Erzeugen eines Modells auf der Grundlage der ersten Eingabe, das ein Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht. Das Verfahren umfasst auch das Empfangen einer zweiten Eingabe, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps angibt, das Aktualisieren des Modells auf der Grundlage der zweiten Eingabe, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen, und das Kompilieren einer Binärdatei, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt, unter Verwendung des Modells. Das Verfahren umfasst auch das Hochladen der Binärdatei auf ein Steuergerät, das dem ausgewählten Steuergerätetyp entspricht.
-
In einigen Ausführungsformen umfasst das Verfahren auch das Bestimmen des Modells, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentieren soll, als Reaktion auf das Aktualisieren auf der Grundlage der zweiten Eingabe unabhängig davon, ob das Modell einen oder mehrere Fehler enthält. In einigen Ausführungsformen umfasst das Verfahren auch das Erzeugen einer Ausgabe, die den einen oder die mehreren Fehler anzeigt, als Reaktion auf die Feststellung, dass das Modell einen oder mehrere Fehler enthält. In einigen Ausführungsformen umfasst das Verfahren auch das Empfangen einer dritten Eingabe, die mindestens eine Modifikation des Modells anzeigt, als Antwort auf die Ausgabe, die den einen oder mehrere Fehler anzeigt. In einigen Ausführungsformen umfasst das Verfahren auch das Aktualisieren des Modells auf der Grundlage der dritten Eingabe. In einigen Ausführungsformen beinhaltet das Verfahren auch das Einstellen eines Zeitgebers auf eine vorbestimmte Zeitspanne. In einigen Ausführungsformen beinhaltet das Verfahren auch das Ausführen deterministischer Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne. In einigen Ausführungsformen beinhaltet das Verfahren als Reaktion auf die Feststellung, dass alle deterministischen Funktionen des Modells ausgeführt worden sind, und als Reaktion auf die Feststellung, dass der Zeitgeber nicht abgelaufen ist, auch das Ausführen nicht-deterministischer Funktionen des Modells.
-
In einigen Ausführungsformen umfasst das System einen Prozessor und einen Arbeitsspeicher. Der Arbeitsspeicher enthält Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, den Prozessor dazu veranlassen: eine erste Eingabe zu empfangen, die mindestens einen ausgewählten Steuergerätetyp angibt; auf der Grundlage der ersten Eingabe ein Modell zu erzeugen, das ein Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; eine zweite Eingabe zu empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps angibt; auf der Grundlage der zweiten Eingabe das Modell zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps zu repräsentieren; unter Verwendung des Modells eine Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert; und die Binärdatei auf ein Steuergerät hochzuladen, das dem ausgewählten Steuergerätetyp entspricht.
-
In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, als Reaktion auf das Aktualisieren auf der Grundlage der zweiten Eingabe das Modell zu bestimmen, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert, und zwar unabhängig davon, ob das Modell einen oder mehrere Fehler enthält. In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, als Reaktion auf die Feststellung, dass das Modell einen oder mehrere Fehler enthält, eine Ausgabe zu erzeugen, die den einen oder die mehreren Fehler anzeigt. In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, als Antwort auf die Ausgabe, die den einen oder mehrere Fehler anzeigt, eine dritte Eingabe zu empfangen, die mindestens eine Modifikation des Modells anzeigt. In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, das Modell auf der Grundlage der dritten Eingabe zu aktualisieren. In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, einen Zeitgeber auf eine vorbestimmte Zeitspanne einzustellen. In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor ferner dazu, deterministische Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne auszuführen. In einigen Ausführungsformen bewirken die Anweisungen ferner, dass der Prozessor als Reaktion auf die Feststellung, dass alle deterministischen Funktionen des Modells ausgeführt worden sind, und als Reaktion auf die Feststellung, dass der Zeitgeber nicht abgelaufen ist, nicht-deterministische Funktionen des Modells ausführt.
-
In einigen Ausführungsformen umfasst eine Vorrichtung zur Modellierung eines Fahrzeugsteuergeräts einen Prozessor und einen Arbeitsspeicher. Der Arbeitsspeicher enthält Anweisungen, die, wenn sie vom Prozessor ausgeführt werden, den Prozessor dazu veranlassen: eine erste Eingabe zu empfangen, die mindestens einen ausgewählten Steuergerätetyp anzeigt; auf der Grundlage der ersten Eingabe ein erstes Modell zu erzeugen, das ein erstes Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; auf der Grundlage der ersten Eingabe ein zweites Modell zu erzeugen, das ein zweites Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; eine zweite Eingabe zu empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt; auf der Grundlage der zweiten Eingabe das erste Modell und das zweite Modell zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps zu repräsentieren; unter Verwendung des ersten Modells eine erste Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt; unter Verwendung des zweiten Modells eine zweite Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellt; die erste Binärdatei auf ein erstes Steuergerät eines Fahrzeugs hochzuladen, wobei das erste Steuergerät dem ausgewählten Steuergerätetyp entspricht; und die zweite Binärdatei auf ein zweites Steuergerät des Fahrzeugs hochzuladen, wobei das zweite Steuergerät dem ausgewählten Steuergerätetyp entspricht, wobei die von dem ersten Steuergerät ausgeführten Funktionen durch entsprechende Funktionen, die auf dem zweiten Steuergerät ausgeführt werden, verifiziert werden.
-
In einigen Ausführungsformen veranlassen die Anweisungen den Prozessor außerdem dazu, einen Zeitgeber auf eine vorgegebene Zeitspanne einzustellen. In einigen Ausführungsformen bewirken die Anweisungen ferner, dass der Prozessor deterministische Funktionen des ersten und/oder zweiten Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne ausführt. In einigen Ausführungsformen bewirken die Anweisungen ferner, dass der Prozessor als Reaktion auf die Feststellung, dass alle deterministischen Funktionen des ersten und/oder des zweiten Modells ausgeführt worden sind, und als Reaktion auf die Feststellung, dass der Zeitgeber nicht abgelaufen ist, nicht-deterministische Funktionen des ersten und/oder des zweiten Modells ausführt.
-
Die obige Diskussion soll die Prinzipien und verschiedene Ausführungsformen der vorliegenden Offenlegung veranschaulichen. Zahlreiche Variationen und Modifikationen werden für diejenigen, die sich auf diesem Gebiet auskennen, offensichtlich werden, sobald die obige Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die folgenden Ansprüche so interpretiert werden, dass sie alle diese Variationen und Modifikationen umfassen.
-
Das Wort „Beispiel“ wird hier verwendet, um als Beispiel, Instanz oder Illustration zu dienen. Jeder hier als „Beispiel“ beschriebene Aspekt oder Entwurf ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Entwürfen auszulegen. Vielmehr soll die Verwendung des Wortes „Beispiel“ dazu dienen, Konzepte auf konkrete Weise darzustellen. So wie es in dieser Anmeldung verwendet wird, soll der Begriff „oder“ ein einschließendes „oder“ statt ein ausschließendes „oder“ bedeuten. Das heißt, sofern nicht anders angegeben oder aus dem Kontext klar ersichtlich, bedeutet „X schließt A oder B ein“ eine der natürlichen einschließenden Permutationen. Das heißt, wenn X A einschließt; X B einschließt; oder X sowohl A als auch B einschließt, dann ist „X schließt A oder B ein“ in jedem der vorstehenden Fälle erfüllt. Darüber hinaus sind die Artikel „einer/eine/eines“, wie sie in dieser Anmeldung und den beigefügten Ansprüchen verwendet werden, im Allgemeinen so auszulegen, dass sie „ein oder mehrere“ bedeuten, es sei denn, es ist anders angegeben oder aus dem Kontext klar, dass sie auf eine singuläre Form gerichtet sind. Darüber hinaus ist die durchgängige Verwendung des Begriffs „eine Implementierung“ oder „die eine Implementierung“ nicht so zu verstehen, dass damit dieselbe Ausführungsform oder Implementierung gemeint ist, es sei denn, sie wird als solche beschrieben.
-
Implementierungen der hier beschriebenen Systeme, Algorithmen, Verfahren, Anweisungen usw. können in Hardware, Software oder einer beliebigen Kombination davon realisiert werden. Die Hardware kann z.B. Computer, IP-Kerne (Intellectual Property), anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logik-Arrays, optische Prozessoren, programmierbare Logik-Steuerungen, Mikrocode, Mikrokontroller, Server, Mikroprozessoren, digitale Signalprozessoren oder jede andere geeignete Schaltung umfassen. In den Ansprüchen ist der Begriff „Prozessor“ so zu verstehen, dass er jede der vorgenannten Hardwarekomponenten, entweder einzeln oder in Kombination, umfasst. Die Begriffe „Signal“ und „Daten“ werden austauschbar verwendet.
-
Wie hier verwendet, kann der Begriff Modul eine gepackte funktionale Hardware-Einheit, die für die Verwendung mit anderen Komponenten ausgelegt ist, einen Satz von Anweisungen, die von einem Steuergerät ausgeführt werden können (z.B. ein Prozessor, der Software oder Firmware ausführt), eine Verarbeitungsschaltung, die so konfiguriert ist, dass sie eine bestimmte Funktion ausführt, und eine in sich geschlossene Hardware- oder Software-Komponente, die eine Schnittstelle zu einem größeren System bildet, umfassen. Ein Modul kann zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein im Feld programmierbares Gate Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination von diskreten Schaltungen, Gates und anderen Arten von Hardware oder eine Kombination davon enthalten. In anderen Ausführungsformen kann ein Modul einen Speicher enthalten, der von einem Steuergerät ausführbare Anweisungen speichert, um ein Merkmal des Moduls zu implementieren.
-
Darüber hinaus können in einem Aspekt beispielsweise die hier beschriebenen Systeme unter Verwendung eines Allzweckrechners oder Allzweckprozessors mit einem Computerprogramm implementiert werden, das bei seiner Ausführung einige der hier beschriebenen Verfahren, Algorithmen und/oder Anweisungen ausführt. Zusätzlich oder alternativ kann z.B. ein spezieller Computer/Prozessor verwendet werden, der andere Hardwarekomponenten zur Ausführung der hier beschriebenen Verfahren, Algorithmen oder Anweisungen enthalten kann.
-
Ferner können alle oder ein Teil der Implementierungen der vorliegenden Offenlegung die Form eines Computerprogrammprodukts annehmen, das z.B. von einem computerverwendbaren oder computerlesbaren Medium aus zugänglich ist. Ein computerverwendbares oder computerlesbares Medium kann jedes Gerät sein, das z.B. das Programm zur Verwendung durch oder in Verbindung mit einem Prozessor konkret enthalten, speichern, kommunizieren oder transportieren kann. Das Medium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches oder ein Halbleitergerät sein. Andere geeignete Medien sind ebenfalls verfügbar.
-
Die oben beschriebenen Ausführungsformen, Umsetzungen und Aspekte wurden beschrieben, um ein einfaches Verständnis der vorliegenden Offenlegung zu ermöglichen, und sie schränken die vorliegende Offenlegung nicht ein. Im Gegenteil, die Offenlegung soll verschiedene Modifikationen und äquivalente Vorkehrungen abdecken, die in den Geltungsbereich der beigefügten Ansprüche fallen, wobei diesem Geltungsbereich die weiteste Auslegung zugestanden werden soll, um alle derartigen Modifikationen und äquivalenten Strukturen zu erfassen, die nach dem Gesetz zulässig sind.