[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE102020118563A1 - Middleware-system und -verfahren - Google Patents

Middleware-system und -verfahren Download PDF

Info

Publication number
DE102020118563A1
DE102020118563A1 DE102020118563.4A DE102020118563A DE102020118563A1 DE 102020118563 A1 DE102020118563 A1 DE 102020118563A1 DE 102020118563 A DE102020118563 A DE 102020118563A DE 102020118563 A1 DE102020118563 A1 DE 102020118563A1
Authority
DE
Germany
Prior art keywords
model
control device
input
processor
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020118563.4A
Other languages
English (en)
Inventor
Anthony Champagne
Rangarajan Ramanujam
Michael Story
Owen K. Tosh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Steering Solutions IP Holding Corp
Original Assignee
Steering Solutions IP Holding Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Steering Solutions IP Holding Corp filed Critical Steering Solutions IP Holding Corp
Publication of DE102020118563A1 publication Critical patent/DE102020118563A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Verfahren umfasst das Empfangen einer ersten Eingabe, die mindestens einen ausgewählten Steuergerätetyp anzeigt, und das Erzeugen, basierend auf der ersten Eingabe, eines Modells, 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 anzeigt, das Aktualisieren des Modells, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darstellen soll, auf der Grundlage der zweiten Eingabe, 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.

Description

  • 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.

Claims (20)

  1. Computerimplementiertes Verfahren, das umfasst: Empfangen einer ersten Eingabe, die mindestens einen ausgewählten Steuergerätetyp anzeigt; Erzeugen eines Modells basierend auf der ersten Eingabe, das ein Steuergerät repräsentiert, das dem ausgewählten Steuergerätetyp entspricht; Empfangen einer zweiten Eingabe, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt; Aktualisieren des Modells auf der Grundlage der zweiten Eingabe, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen; Kompilieren einer Binärdatei unter Verwendung des Modells, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert; und Hochladen der Binärdatei auf ein Steuergerät, das dem ausgewählten Steuergerätetyp entspricht.
  2. Verfahren nach Anspruch 1, das ferner das Bestimmen des Modells, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentieren soll, in Reaktion auf das Aktualisieren auf der Grundlage der zweiten Eingabe unabhängig davon umfasst, ob das Modell einen oder mehrere Fehler enthält.
  3. Verfahren nach Anspruch 2, das als Reaktion auf die Feststellung, dass das Modell einen oder mehrere Fehler enthält, ferner das Erzeugen einer Ausgabe umfasst, die den einen oder die mehreren Fehler anzeigt.
  4. Verfahren nach Anspruch 3, das ferner das Empfangen einer dritten Eingabe, die mindestens eine Modifikation des Modells anzeigt, als Antwort auf die Ausgabe, die den einen oder die mehreren Fehler anzeigt, umfasst.
  5. Verfahren nach Anspruch 4, das ferner das Aktualisieren des Modells auf der Grundlage der dritten Eingabe umfasst.
  6. Verfahren nach Anspruch 1, das ferner das Einstellen eines Zeitgebers auf eine vorbestimmte Zeitspanne umfasst.
  7. Verfahren nach Anspruch 6, das ferner das Ausführen deterministischer Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne umfasst.
  8. Verfahren nach Anspruch 6, das ferner als Reaktion auf die Feststellung, dass alle deterministischen Funktionen des Modells ausgeführt wurden, und als Reaktion auf die Feststellung, dass der Zeitgeber nicht abgelaufen ist, das Ausführen nicht-deterministischer Funktionen des Modells umfasst.
  9. System, das umfasst: einen Prozessor; und einen Speicher mit 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 anzeigt; auf der Grundlage der zweiten Eingabe das Modell zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen; 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.
  10. System nach Anspruch 9, wobei die Anweisungen den Prozessor ferner dazu veranlassen, als Reaktion auf das Aktualisieren basierend auf der zweiten Eingabe, das Modell zu bestimmen, das den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentieren soll, und festzustellen, ob das Modell einen oder mehrere Fehler enthält.
  11. System nach Anspruch 10, wobei die Anweisungen den Prozessor ferner dazu veranlassen, 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.
  12. System nach Anspruch 11, wobei die Anweisungen ferner bewirken, dass der Prozessor als Reaktion auf die Ausgabe, die den einen oder die mehreren Fehler anzeigt, eine dritte Eingabe empfängt, die mindestens eine Modifikation des Modells anzeigt.
  13. System nach Anspruch 12, wobei die Anweisungen den Prozessor ferner dazu veranlassen, das Modell auf der Grundlage der dritten Eingabe zu aktualisieren.
  14. System nach Anspruch 9, wobei die Anweisungen den Prozessor ferner dazu veranlassen, einen Zeitgeber auf eine vorbestimmte Zeitspanne einzustellen.
  15. System nach Anspruch 14, wobei die Anweisungen den Prozessor ferner dazu veranlassen, deterministische Funktionen des Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne auszuführen.
  16. System nach Anspruch 14, wobei die Anweisungen den Prozessor ferner dazu veranlassen, 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 auszuführen.
  17. Vorrichtung zur Modellierung eines Fahrzeugsteuergeräts, wobei die Vorrichtung umfasst: einen Prozessor; und einen Arbeitsspeicher mit 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 erstes Modell zu erzeugen, das ein erstes Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht; auf der Grundlage der ersten Eingabe ein zweites Modell zu erzeugen, das ein zweites Steuergerät darstellt, das dem ausgewählten Steuergerätetyp entspricht; eine zweite Eingabe zu empfangen, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps anzeigt; das erste Modell und das zweite Modell basierend auf der zweiten Eingabe zu aktualisieren, um den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps darzustellen; unter Verwendung des ersten Modells eine erste Binärdatei zu kompilieren, die zumindest den mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert; unter Verwendung des zweiten Modells eine zweite Binärdatei zu kompilieren, die mindestens einen funktionalen Aspekt des ausgewählten Steuergerätetyps repräsentiert; 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 verifiziert werden, die auf dem zweiten Steuergerät ausgeführt werden.
  18. Vorrichtung nach Anspruch 17, wobei die Anweisungen den Prozessor ferner veranlassen, einen Zeitgeber auf eine vorbestimmte Zeitspanne einzustellen.
  19. Vorrichtung nach Anspruch 18, wobei die Anweisungen den Prozessor ferner dazu veranlassen, deterministische Funktionen des ersten Modells und/oder des zweiten Modells als Reaktion auf das Einstellen des Zeitgebers auf die vorbestimmte Zeitspanne auszuführen.
  20. Vorrichtung nach Anspruch 19, wobei die Anweisungen den Prozessor ferner veranlassen, als Reaktion auf eine Feststellung, dass alle deterministischen Funktionen des ersten und/oder des zweiten Modells ausgeführt wurden, und als Reaktion auf eine Feststellung, dass der Zeitgeber nicht abgelaufen ist, nicht-deterministische Funktionen des ersten und/oder des zweiten Modells auszuführen.
DE102020118563.4A 2019-07-17 2020-07-14 Middleware-system und -verfahren Pending DE102020118563A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962875216P 2019-07-17 2019-07-17
US62/875,216 2019-07-17

Publications (1)

Publication Number Publication Date
DE102020118563A1 true DE102020118563A1 (de) 2021-01-21

Family

ID=74093408

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020118563.4A Pending DE102020118563A1 (de) 2019-07-17 2020-07-14 Middleware-system und -verfahren

Country Status (3)

Country Link
US (1) US11294642B2 (de)
CN (1) CN112241255B (de)
DE (1) DE102020118563A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6847382B1 (ja) * 2019-09-23 2021-03-24 株式会社デンソークリエイト 設計支援ツール
US11921622B2 (en) * 2021-06-08 2024-03-05 Microsoft Technology Licensing, Llc Generating fault conditions using a fault-enabled software development kit

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074059B2 (en) * 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
JP4624448B2 (ja) * 2008-07-30 2011-02-02 株式会社オートネットワーク技術研究所 制御装置、制御システム及びコンピュータプログラム
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
US8739049B2 (en) * 2010-05-24 2014-05-27 GM Global Technology Operations LLC Vehicle system modeling systems and methods
US8655461B2 (en) * 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
CN103116497B (zh) * 2013-03-05 2015-12-23 北京经纬恒润科技有限公司 一种基于软件平台的多电子控制单元构建方法及系统
CN103677835B (zh) * 2013-12-16 2017-04-12 北京经纬恒润科技有限公司 软件集成方法及系统
US9141365B1 (en) * 2013-12-20 2015-09-22 The Mathworks, Inc. Installation of a technical computing environment customized for a target hardware platform
US9915950B2 (en) * 2013-12-31 2018-03-13 Polysync Technologies, Inc. Autonomous vehicle interface system
KR102304698B1 (ko) * 2014-01-10 2021-09-28 시암벨라 리미티드 자동 장치 프로그램 생성을 위한 방법 및 장치
US9594559B2 (en) * 2015-01-07 2017-03-14 International Business Machines Corporation Binary file for computer program having multiple executable code variants for a function that are executable on a same processor architecture
US10185547B2 (en) * 2015-06-26 2019-01-22 Intel Corporation Techniques for distributed operation of secure controllers
CN106371813B (zh) * 2015-07-23 2019-11-01 广州汽车集团股份有限公司 一种基于Simulink的电动汽车电机控制器软件生成方法
WO2017056194A1 (ja) * 2015-09-29 2017-04-06 株式会社 東芝 情報機器または情報通信端末および、情報処理方法
US10331829B2 (en) * 2015-12-15 2019-06-25 International Business Machines Corporation System design using accurate performance models
EP3440817B1 (de) * 2016-04-06 2022-06-22 Karamba Security Automatisierte sicherheitsrichtlinienerzeugung für steuergeräte
US20190095303A1 (en) 2016-06-01 2019-03-28 The Mathworks, Inc. Systems and methods for measuring error in terms of unit in last place
CN107562422B (zh) * 2016-06-30 2021-05-25 西门子瑞士有限公司 控制器人机界面的编程方法以及提供此编程工具的服务器
DE102017116883A1 (de) * 2016-07-28 2018-02-01 Steering Solutions Ip Holding Corporation Ununterbrochene Verfügbarkeit von Daten während eines Fehlers in einem redundanten Mikrocontrollersystem
US11314907B2 (en) * 2016-08-26 2022-04-26 Hitachi, Ltd. Simulation including multiple simulators
DE102017122168B4 (de) * 2016-09-28 2021-09-02 Steering Solutions Ip Holding Corporation Stabilitätsüberwachung in Echtzeit bei Lenkungssystemen
CN107239315B (zh) * 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型
US10303460B2 (en) * 2017-07-25 2019-05-28 Aurora Labs Ltd. Self-healing learning system for one or more vehicles
US10807600B2 (en) * 2017-10-20 2020-10-20 Ford Global Technologies, Llc Vehicle and vehicle emulator
US20190258460A1 (en) * 2018-02-22 2019-08-22 Dspace Digital Signal Processing And Control Engineering Gmbh Method and system for generating a software component
US10884717B2 (en) * 2019-04-09 2021-01-05 Raytheon Company Resource management system featuring a sensor-agnostic software architecture
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler

Also Published As

Publication number Publication date
US20210019121A1 (en) 2021-01-21
US11294642B2 (en) 2022-04-05
CN112241255A (zh) 2021-01-19
CN112241255B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
DE102015207656B4 (de) Verfahren und System zum Testen von Steuersoftware eines gesteuerten Systems
AT522625B1 (de) Verfahren zur Sicherheitsüberprüfung einer Technikeinheit
DE102017211433B4 (de) Verfahren zum Durchführen eines Funktionstests eines Steuergeräts in einem Hardware-in-the-Loop-Test, HIL-Test, sowie HIL-Prüfstand und Steuergerät
DE102016119320A1 (de) Verfahren zum Konfigurieren eines realen oder virtuellen elektronischen Steuergerätes
EP3001313A1 (de) Verfahren zur Simulation eines Anwendungsprogramms eines elektronischen Steuergeräts auf einem Computer
DE102017100380A1 (de) Diagnostiktest-durchführungssteuersystem und verfahren
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
WO2019219796A1 (de) Verfahren zur ereignisbasierten simulation eines systems
DE102017120016A1 (de) Verfahren zur Konfiguration eines zum Testen eines elektronischen Steuergeräts eingerichteten Testgeräts sowie Konfigurationssystem
DE102020118563A1 (de) Middleware-system und -verfahren
DE102020128978A1 (de) Trainieren von tiefen neuronalen netzwerken mit synthetischen bildern
DE102018110020A1 (de) Verfahren zum Erzeugen eines auf einem Testgerät ausführbaren Modells eines technischen Systems und Testgerät
DE102011012068A1 (de) Begriffsverwaltungssystem (tms)
EP3979009A1 (de) Erzeugen eines vereinfachten modells für xil-systeme
DE102022127647A1 (de) Kalibrieren von parametern innerhalb einer virtuellen umgebung unter verwendung verstärkenden lernens
EP4179395A1 (de) Steuerung eines technischen systems mit einer recheneinheit für künstliche intelligenz
DE102021103919A1 (de) Rccc-rgb-domain-übersetzung mit tiefen neuronalen netzen
DE102016100999A1 (de) Vorrichtung einer rekonfigurierbaren Softwaremodusverwaltung unter Verwendung einer Laufzeitausführungsmaschine
DE102020211250A1 (de) Computerimplementiertes Verfahren, eingebettetes System und Computerprogramm zum Ausführen einer Regelungs- und/oder Steuerungsvorschrift
DE102019132624A1 (de) Verfahren, Vorrichtung, Computerprogramm und computerlesbares Speichermedium zum Erstellen eines Motion Cueing Algorithmus
EP4109194B1 (de) Sensordatengenerierung zum steuern eines autonomen fahrzeugs
EP4270176B1 (de) Verfahren zur erzeugung von quellcode
DE102017120013A1 (de) Verfahren zur Konfiguration eines zum Testen eines elektronischen Steuergeräts eingerichteten Testgeräts sowie Konfigurationssystem
AT511297B1 (de) Verfahren zur Erzeugung eines Modells einer Kommunikationsaufgabe
DE102012218665B4 (de) Applikationssystem für Steuergeräte

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication