DE102022107294A1 - Steuerung eines Fahrzeugs - Google Patents

Steuerung eines Fahrzeugs Download PDF

Info

Publication number
DE102022107294A1
DE102022107294A1 DE102022107294.0A DE102022107294A DE102022107294A1 DE 102022107294 A1 DE102022107294 A1 DE 102022107294A1 DE 102022107294 A DE102022107294 A DE 102022107294A DE 102022107294 A1 DE102022107294 A1 DE 102022107294A1
Authority
DE
Germany
Prior art keywords
instance
access
resource
accessing
address
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
DE102022107294.0A
Other languages
English (en)
Inventor
Jan Schlosser
Manuel Fehlhammer
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.)
Bayerische Motoren Werke AG
Original Assignee
Bayerische Motoren Werke AG
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 Bayerische Motoren Werke AG filed Critical Bayerische Motoren Werke AG
Priority to DE102022107294.0A priority Critical patent/DE102022107294A1/de
Priority to PCT/EP2023/056620 priority patent/WO2023186545A1/de
Publication of DE102022107294A1 publication Critical patent/DE102022107294A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Verarbeitungssystem umfasst einen Speicherbereich, der durch mehrere Prozesse nutzbar ist. Ein Verfahren zum Bereitstellen einer Instanz eines polymorphen Objekts in dem Speicherbereich umfasst Schritte des Bereitstellens einer Ressource im gemeinsam genutzten Speicherbereich; und des Bereitstellens einer Zugriffstabelle zum Zugriff auf eine Instanz des Objekts in der Ressource. Dabei ist jedem auf die Ressource zugreifenden Prozess eine eigene Zugriffstabelle zugeordnet. Das Verfahren kann insbesondere zur Verwaltung eines dynamischen Speichers verwendet werden.

Description

  • Die Erfindung betrifft die Steuerung eines Fahrzeugs. Insbesondere betrifft die Erfindung eine sichere Kommunikation zwischen Prozessen zur Steuerung des Fahrzeugs.
  • Ein Fahrzeug umfasst eines oder mehrere Steuergeräte, auf denen vorbestimmte Prozesse ablaufen, die direkt oder indirekt zur Steuerung des Fahrzeugs beitragen. Häufig soll ein erster Prozess Daten bereitstellen und ein zweiter auf diese Daten zugreifen. Der erste Prozess kann beispielsweise eine Geschwindigkeit des Fahrzeugs bestimmen und der zweite eine geografische Position. Der erste Prozess kann eine Serie von durch den zweiten Prozess bestimmten Positionen verarbeiten, um die bestimmte Geschwindigkeit zu überprüfen.
  • Ein Prozess kann eine Funktion eines Betriebssystems aufrufen, um ein Objekt an einen anderen Prozess zu übergeben. Das Betriebssystem kann das Objekt dann in einen Speicherbereich des Zielprozesses kopieren. Laufen die Prozesse auf voneinander getrennten Steuergeräten ab, so kann das Betriebssystem für die Übermittlung des Objekts über ein Netzwerk sorgen. Zur hoch performanten Verteilung von Daten können die Prozesse auch einen gemeinsamen Speicherbereich (shared memory) nutzen, wobei beiden Prozessen Zugriff auf dasselbe Objekt eingeräumt wird. Die Übergabe eines Objekts kann ohne Kopieren oder Transportieren sehr effizient erfolgen (zero copy).
  • Eine objektorientierte Programmiersprache wie C++ verwendet Polymorphie: abgeleitete Klassen einer virtuellen Basisklasse erben deren Methoden und können diese überlagern. Werden Objekte von diesen abgeleiteten Klassen über eine Basisklassen-Referenz angesprochen, erfolgt der Aufruf der korrekten überlagerten Methode transparent über eine sogenannte vtable (virtual function table). Die vtable beinhaltet die Speicheradressen der potentiell überlagerten Methoden des aktuellen Objektes. Diese Speicheradressen sind virtuelle Speicheradressen, die durch den das Objekt erzeugenden Prozess festgelegt werden und nur im Kontext genau diesen Prozesses Gültigkeit besitzen. Wenn in einem shared memory system diese Objekte nun allerdings zwei Prozessen zugänglich sind, sind diese Objekte für den nicht-erzeugenden Prozess nicht nutzbar, da die Speicheradressen in der vtable des Objektes in seinem virtuellen Adressraum ungültig sind. Polymorphe Objekte können somit nicht in einem shared memory System zwischen verschiedenen Prozessen genutzt werden.
  • Eine der vorliegenden Erfindung zu Grunde liegende Aufgabe besteht in der Bereitstellung einer verbesserten Technik zur Nutzung von polymorphen Objekten zwischen Prozessen an Bord eines Fahrzeugs.
  • Die Erfindung löst die Aufgabe mittels der Gegenstände der unabhängigen Ansprüche. Unteransprüche geben bevorzugte Ausführungsformen wieder.
  • Nach einem ersten Aspekt der vorliegenden Erfindung umfasst ein Verfahren zum Bereitstellen einer Instanz eines polymorphen Objekts in einem durch mehrere Prozesse nutzbaren Speicherbereich in einem Verarbeitungssystem; Schritte des Bereitstellens einer Ressource im gemeinsam genutzten Speicherbereich; und des Bereitstellens einer Zugriffstabelle zum Zugriff auf eine Instanz des Objekts in der Ressource. Dabei ist jedem auf die Ressource zugreifenden Prozess eine eigene Zugriffstabelle zugeordnet.
  • Erfindungsgemäß können Beschränkungen beim Zugriff auf das Objekt, die durch Verwenden einer virtuellen Tabelle entstehen können, die beispielsweise von der Programmiersprache C++ verwendet wird, überkommen werden. Auf diese Weise kann eine gemeinsame Nutzung eines polymorphen Objekts in einem shared memory System zwischen Prozessen ermöglicht sein.
  • Ein polymorphes Objekt umfasst eine Methode, die durch eine andere Methode überladen werden kann, wenn das Objekt vererbt wird. Dabei kann die Methode des ersten Objekts auch virtuell ein, also erst durch bei der Vererbung implementiert werden. So können verschiedene abgeleitete Objekte eine gemeinsame Basisfunktionalität auf verschiedene Weisen umsetzen.
  • Für einen aufrufenden Prozess ist die Überladung der Methoden transparent, sodass er zum Zugriff auf die Methode des Objekts oder des vererbten Objekts immer den gleichen Identifikator verwendet. Intern ist dem Objekt eine virtuelle Tabelle (vtable) zugeordnet, die eine für einen Prozess sichtbare virtuelle Adresse, die im Identifikator ausgedrückt ist, in eine reale Adresse umsetzt. Wird eine Methode des Objekts überladen, so wird der zugeordnete Eintrag in der virtuellen Tabelle angepasst.
  • Es wird vorgeschlagen, bei Einsatz des Objekts in einem shared memory system jedem auf das Objekt zugreifenden Prozess eine eigene Zugriffstabelle zuzuordnen. Die Umsetzung einer virtuellen Adresse in eine reale Adresse kann dann anhand dieser dem Prozess zugeordneten Zugriffstabelle erfolgen.
  • Das Verfahren kann vollständig in einer objektorientierten Sprache wie C++ definiert werden und keinen Eingriff in einen Compiler, ein Betriebssystem oder eine den Prozess ausführende Verarbeitungseinrichtung erfordern. Die Vorteile der objektorientierten Programmierung, insbesondere die Kapselung, die Vererbung und die Polymorphie, können weiter genutzt werden. Die Prozesse können modular entwickelt werden, beispielsweise von unterschiedlichen Implementatoren, wobei das Verfahren mit allen verwendeten Werkzeugen zur Entwicklung von Software kompatibel sein kann.
  • Das Verfahren kann zur Verwaltung eines dynamischen Speichers verwendet werden und eine verbesserte Kooperation von Steuerprozessen an Bord eines Fahrzeugs ermöglichen.
  • Das Verfahren kann selbst virtuelle Methoden umfassen, die unterschiedlich implementiert werden können. In einer besonders bevorzugten Ausführungsform kann ein Zugriff auf ein Element des Objekts als virtuelle Methode definiert sein.
  • In einer ersten Ausprägung kann die virtuelle Methode von einem ersten erbenden Objekt zum Zugriff auf das Objekt im gemeinsamen Speicherbereich implementiert sein, wie oben beschrieben ist.
  • In einer zweiten Ausprägung kann die virtuelle Methode von einem zweiten erbenden Objekt zum Zugriff auf das Objekt in klassischer Weise implementiert sein. Dabei können den Prozessen jeweils exklusiv nutzbare Speicherbereiche zugeordnet sein und das zweite Objekt kann in den Speicherbereich eines Prozesses kopiert werden. Dazu kann eine bekannte Betriebssystem-Funktion verwendet werden.
  • In einer dritten Ausprägung kann die virtuelle Methode von einem dritten erbenden Objekt zum Zugriff auf verteilte Objekte zwischen mehreren Verarbeitungseinrichtungen verwendet werden. Dabei kann eine Funktion des Betriebssystems verwendet werden, um ein Objekt von der Verarbeitungseinrichtung eines ersten Prozesses über eine Netzwerkverbindung an eine Verarbeitungseinrichtung eines zweiten Prozesses zu übermitteln. Dazu kann ein Mechanismus des Betriebssystems wie ein Socket verwendet werden.
  • Das Verfahren kann ferner folgende Schritte umfassen: Bestimmen eines auf die Ressource zugreifenden Prozesses; Bestimmen einer dem Prozess zugeordneten Zugriffstabelle; Erzeugen einer Instanz des Objekts in der Ressource; Bestimmen einer Adresse zum Zugriff auf die Instanz in der Ressource; Bestimmen einer virtuellen Adresse der Instanz für den Prozess; und Hinterlegen der Adresse und der virtuellen Adresse in der Zugriffstabelle.
  • So kann eine Instanz eines Objekts im shared memory angelegt werden, sodass ein darauffolgender Zugriff transparent unter Verwendung der Zugriffstabelle erfolgen kann.
  • In einer weiteren Ausführungsform umfasst das Verfahren folgende weitere Schritte: Bestimmen eines auf die Ressource zugreifenden Prozesses; Bestimmen einer dem Prozess zugeordneten Zugriffstabelle; und Bestimmen einer virtuellen Adresse, die in der Zugriffstabelle einer Adresse zum Zugriff auf die Instanz in der Ressource zugeordnet ist.
  • Der Prozess kann auf die Instanz unter Nutzung der ihm zugeordneten virtuellen Adresse zugreifen. Eine Umsetzung zwischen der virtuellen Adresse und der realen Adresse kann unter Verwendung der Zugriffstabelle erfolgen. Ein Zugriff kann lesend, schreibend oder ausführend erfolgen. Zur Beschränkung eines Zugriffs kann ein vorbestimmter Mechanismus vorgesehen sein, beispielsweise ein Rechtemodell oder ein System zum Speicherschutz.
  • Der Zugriff kann unter Umsetzung der virtuellen Adresse in die Adresse zum Zugriff auf die Instanz in der Ressource erfolgen. Die Umsetzung kann mittels der Zugriffstabelle erfolgen. Ein Mechanismus zur Umsetzung kann die Zugriffstabelle verwalten und memory resource proxy genannt werden. In einer Ausführungsform ist jedem Prozess eine Identifikation und jeder Identifikation eine Basisadresse zugeordnet. Die reale Adresse eines Objekts oder eines seiner Bestandteile kann dann als Summe der Basisadresse und der in der Zugriffstabelle hinterlegten Adresse bestimmt werden. Dabei sind die Basisadressen derart bestimmt, dass alle Prozesse mittels gleicher Identifikatoren auf dasselbe Objekt zugreifen können, obwohl für sie das Objekt an unterschiedlichen realen Adressen im gemeinsam genutzten Speicherbereich liegt. Eine Adresse zum Zugriff auf die Instanz in der Ressource wird hierin auch reale Adresse genannt.
  • In noch einer weiteren Ausführungsform können mehrere Prozesse jeweils unter Nutzung von ihnen zugeordneten virtuellen Adressen auf die Instanz des Objekts zugreifen. Das Objekt kann zur Kommunikation zwischen den Prozessen verwendet werden (inter process communication, IPC).
  • Die Instanz kann eine Implementation eines Objekts einer Basisklasse umfassen und die Implementation kann erst beim Anlegen der Instanz bekannt sein. Diese Vorgehensweise wird auch spätes Binden (late binding) bezeichnet. Das Objekt kann die Basisklasse erben und dabei eine Methode der Basisklasse überladen. Welche Methode des Objekts zur Laufzeit verwendet wird, kann zum Zeitpunkt des Übersetzens (compiling, kompilieren) nicht bekannt sein.
  • Weiter bevorzugt umfasst die Instanz des Objekts Informationen und eine Methode zum Zugriff auf die Informationen. Ein direkter Zugriff auf die Informationen kann verhindert sein. Die Methode kann beim Vererben des Objekts überladen werden. Eine Basisklasse kann eine virtuelle Methode zum Zugriff auf die Informationen definieren, wobei die virtuelle Methode durch vererbte Klassen verschieden implementiert werden kann. Eine Instanz der Basisklasse wird hierin auch Basisobjekt genannt. Eine Klasse, die von der Basisklasse abgeleitet ist, wird auch abgeleitete Klasse genannt, und eine Instanz eines Objekts einer abgeleiteten Klasse wird auch abgeleitetes Objekt genannt.
  • Der Prozess kann an Bord eines Fahrzeugs ablaufen und dazu eingerichtet sein, das Fahrzeug auf der Basis der Informationen zu steuern. Ein erster Prozess kann Informationen in Form von Objekten im gemeinsam nutzbaren Speicherbereich bereitstellen und ein zweiter Prozess kann auf die Informationen mittels Methoden der Objekte zugreifen. Ein Objekt kann beispielsweise Messdaten, verarbeitete Daten oder komplexe Objekte umfassen.
  • Das Verfahren kann insbesondere verwendet werden, um mehrere Prozesse auf dasselbe Objekt im gemeinsam nutzbaren Speicherbereich zugreifen zu lassen. Die Prozesse können unterschiedlich vertrauenswürdig sein. Ein System mit solchen Prozessen kann auch mixed criticality system genannt werden. Ein erster Prozess kann vorbestimmte Anforderungen an eine Funktionssicherheit, wie sie z. B. in ISO 26262 definiert sind, erfüllen, während ein zweiter Prozess dies nicht tut.
  • Nach einem weiteren Aspekt der vorliegenden Erfindung umfasst ein Steuergerät einen durch mehrere Prozesse nutzbaren Speicherbereich. Auf dem Steuergerät können mehrere Prozesse ablaufen. Dabei ist ein Prozess dazu eingerichtet, auf eine Instanz eines polymorphen Objekts in einer Ressource in dem Speicherbereich zuzugreifen, indem eine für den Prozess sichtbare virtuelle Adresse zum Zugriff auf die Instanz mittels einer dem Prozess zugeordneten Zugriffstabelle in eine Adresse zum Zugriff auf die Instanz in der Ressource umgewandelt wird.
  • Das Steuergerät kann eine Verarbeitungseinrichtung umfassen, die dazu eingerichtet ist, ein hierin beschriebenes Verfahren ganz oder teilweise auszuführen. Dazu kann die Verarbeitungseinrichtung einen programmierbaren Mikrocomputer oder Mikrocontroller umfassen und das Verfahren kann in Form eines Computerprogrammprodukts mit Programmcodemitteln vorliegen. Das Computerprogrammprodukt kann auch auf einem computerlesbaren Datenträger abgespeichert sein. Merkmale oder Vorteile des Verfahrens können auf das Steuergerät oder ein das Steuergerät umfassendes System übertragen werden oder umgekehrt.
  • Das Steuergerät kann in unterschiedlichen Ausführungsformen vorliegen. Der Prozess kann stets denselben Mechanismus zum Zugriff auf die Instanz des Objekts verwenden und ein tatsächlich verwendeter Zugriff auf die Instanz kann in Abhängigkeit der Ausführungsform des Steuergeräts bestimmt werden. So kann ein hierin beschriebener Mechanismus zum Zugriff auf die Instanz im gemeinsam genutzten Speicher auch transparent durch einen anderen Mechanismus ersetzt sein, falls mehrere auf die Instanz zugreifende Prozesse auf unterschiedlichen Steuergeräten ablaufen, die mittels eines Netzwerks miteinander verbunden sind oder wenn das Steuergerät keinen durch mehrere Prozesse nutzbaren Speicher umfasst.
  • Das Steuergerät kann an Bord eines Fahrzeugs angebracht sein, wobei ein auf die Instanz zugreifender Prozess dazu eingerichtet ist, eine Funktion des Fahrzeugs zu steuern. Die Funktion kann eine Verarbeitung von Messdaten umfassen, die durch die Instanz repräsentiert bzw. gekapselt sind. Die Instanz kann durch ein anderes Steuergerät bereitgestellt sein, das mit einem Sensor zur Abtastung eines Umfelds des Fahrzeugs verbunden sein kann. Ein Prozess kann beispielsweise eine Bewegung des Fahrzeugs in Längsrichtung und/oder in Querrichtung steuern.
  • Ein hierin beschriebenes Steuergerät kann eine Verarbeitungseinrichtung zur Ausführung mehrerer Prozesse und einen Speicher mit einem Speicherbereich, der durch verschiedene Prozesse nutzbar ist, umfassen. Dabei kann der gemeinsam nutzbare Speicherbereich mehreren Prozessen zur Verfügung stehen, die auf dem Steuergerät ablaufen.
  • Ein System umfasst mehrere Steuergeräte und einen Speicher mit einem von beiden Steuergeräten aus nutzbaren Speicherbereich. Dabei läuft auf zwei unterschiedlichen Steuergeräten jeweils ein Prozess ab, der dazu eingerichtet ist, auf eine Instanz eines polymorphen Objekts in einer Ressource in dem Speicherbereich zuzugreifen, indem eine für den Prozess sichtbare virtuelle Adresse zum Zugriff auf die Instanz mittels einer dem Prozess zugeordneten Zugriffstabelle in eine Adresse zum Zugriff auf die Instanz in der Ressource umgewandelt wird. In einer Ausführungsform ist eines der Steuergeräte weiterhin so ausgebildet, wie hierin beschrieben ist.
  • Nach noch einem weiteren Aspekt der vorliegenden Erfindung umfasst ein Fahrzeug ein hierin beschriebenes System oder ein hierin beschriebenes Steuergerät. Ein auf dem System oder dem Steuergerät ablaufender Prozess kann dazu eingerichtet sein, eine Funktion des Fahrzeugs zu steuern. Das Fahrzeug kann beispielsweise mittels einer Brennkraftmaschine oder einer elektrischen Maschine angetrieben werden und ein Kraftfahrzeug umfassen. Das Kraftfahrzeug kann insbesondere ein Kraftrad, einen Personenkraftwagen, einen Lastkraftwagen oder einen Omnibus umfassen.
  • Die Erfindung wird nun mit Bezug auf die beigefügten Zeichnungen genauer beschrieben, in denen:
    • 1 ein Fahrzeug mit einem System;
    • 2 Objekte vererbter Klassen
    • 3 ein Objekt in einem von mehreren Prozessen nutzbaren Speicher
    • 4 ein Ablaufdiagramm eines Verfahrens; und
    • 5 bis 8 ein Klassengeflecht
    illustriert.
  • 1 zeigt ein Fahrzeug 100 mit einem System 105. Das System 105 umfasst ein Steuergerät 110, das mit einem oder mehreren Sensoren 115 verbunden sein kann, ferner einen Speicher 120 sowie bevorzugt eine Schnittstelle 125. Auf dem Steuergerät 110 laufen beispielhaft ein erster Prozess 135 und ein zweiter Prozess 140 ab, zwischen denen Informationen ausgetauscht werden sollen. In anderen Ausführungsformen können auch mehr als zwei Prozesse 135, 140 vorgesehen sein.
  • In der dargestellten Ausführungsform umfasst der Speicher 120 einen gemeinsam nutzbaren Speicherbereich (shared memory), in welchem ein Objekt 145 abgelegt ist, dass beispielhaft Daten 150 und wenigstens eine Methode zum Zugriff auf Daten 150 umfasst.
  • Beispielhaft wird davon ausgegangen, dass der erste Prozess 135 ein Umfeld des Fahrzeugs 100 mittels des wenigstens einen Sensors 115 abtastet und einen anderen Verkehrsteilnehmer im Umfeld erkennt. Für einen erkannten Verkehrsteilnehmer legt der erste Prozess 135 ein Objekt 145 an, auf das vom zweiten Prozess 140 zugegriffen werden kann. Der zweite Prozess 140 bestimmt, ob eine Kollision des Fahrzeugs 100 mit dem anderen Verkehrsteilnehmer droht und greift erforderlichenfalls in eine Längs- und/oder Quersteuerung des Fahrzeugs ein, indem er einen entsprechenden Steuerbefehl über die Schnittstelle 125 an eine angeschlossene Lenkeinrichtung, eine Bremseinrichtung oder ein Antriebssystem des Fahrzeugs 100 überträgt.
  • Die vorliegende Beschreibung konzentriert sich auf einen Fall, in dem das Objekt 145 im gemeinsam nutzbaren Speicherbereich des Speichers 120 abgelegt ist. In einer anderen Ausführungsform können die Prozesse 135, 140 auch auf unterschiedlichen Steuergeräten 110 ablaufen, die jeweils mit dem Speicher 120 verbunden sind. In noch einer weiteren Ausführungsform sind die Steuergeräte 110 mittels eines Netzwerks miteinander verbunden und das Objekt 145 kann über das Netzwerk übermittelt werden, um es vom ersten Prozess 135 an den zweiten Prozess 140 bereitzustellen. Das Netzwerk kann beispielsweise Ethernet oder einen LIN-Bus umfassen. In wieder einer weiteren Ausführungsform laufen beide Prozesse 135, 140 auf demselben Steuergerät und eine Übergabe kann durch Kopieren zwischen exklusiv den Prozessen 135, 140 zugeordneten Speicherbereichen erfolgen.
  • 2 zeigt Objekte vererbter Klassen. Ein Basisobjekt 205 umfasst beispielhaft Daten 150 in einem vorbestimmten Format und wenigstens eine Methode 155 zum Zugriff auf die Daten 150. Die Klasse des Basisobjekts 205 kann die Methode 155 mit einer Implementation versehen oder die Methode 155 kann virtuell sein, sodass das Basisobjekt 205 nicht direkt instanziiert werden kann.
  • Ein erstes abgeleitetes Objekt 210 erbt das Basisobjekt 205 nach den üblichen Mechanismen objektorientierter Programmierung. Dabei kann eine virtuelle Methode 155 durch eine erste Implementation ausgeprägt werden oder eine bestehende Methode 155 kann durch die erste Implementation überladen werden.
  • Ein zweites Objekt 210 erbt das Basisobjekt in ähnlicher Weise, prägt aber die Methode 155 durch eine zweite Implementation aus bzw. überlagert die Methode 155 des Basisobjekts 205 mit der zweiten Implementation.
  • Die durch das Basisobjekt 205 definierte Methode 155 kann nun sowohl am ersten als auch am zweiten Objekt 205, 210 aufgerufen werden. Dabei werden jedoch unterschiedliche Programmcodes ausgeführt, die durch die jeweiligen Implementationen der abgeleiteten Objekte 210, 215 festgelegt sind. Diese Abwandlung eines Basisobjekts 205 bei der Vererbung wird auch Polymorphie genannt. Um den jeweils geltenden Programmcode eines Objekts 210, 215 zu bestimmen umfasst das Basisobjekt 205 eine virtuelle Tabelle (vtable), die einen Zugriff auf die Methode 155 auf eine geltende Implementation der Methode 155 abbildet.
  • Solange das Objekt 145, 205, 210 nicht in einem von mehreren Prozessen 135, 140 nutzbarem Speicherbereich abgelegt ist, können die üblichen Mechanismen einer Programmiersprache wie C++ zum Zugriff auf die Methode 155 via vtables eingesetzt werden.
  • 3 zeigt ein Objekt 145, das beispielsweise eine Instanz eines ersten abgeleiteten Objekts 210 oder eines zweiten abgeleiteten Objekts 215 umfassen kann, in einem von mehreren Prozessen 135, 140 nutzbaren Speicherbereich 305. Dabei ist der Speicherbereich 305 an unterschiedlichen Stellen in einen ersten Speicherbereich 310, der vom ersten Prozess 135 aus angesprochen werden kann, und einen zweiten Speicherbereich 315, der vom zweiten Prozess 140 aus angesprochen werden kann, eingeblendet. Dabei können insbesondere Anfangsadressen des Speicherbereichs 305 in den den Speicherbereichen 310, 315 unterschiedlich sein.
  • Reale Adressen, unter denen die Prozesse 135, 140 auf eine Methode der Instanz zugreifen können, sind daher im Allgemeinen unterschiedlich. Eine Umsetzung einer virtuellen Adresse, unter der ein Prozess 135, 140 die Methode anspricht, in eine korrekte reale Adresse der Instanz des Objekts 145 kann wegen der unterschiedlichen Basisadressen der Speicherbereiche 310, 315 nicht mit einer vtable erfolgen, ohne in interne Abläufe eines Compilers zur Erstellung von ausführbarem Code einzugreifen.
  • Es wird daher vorgeschlagen, eine Abbildung von einer virtuellen Adresse in eine reale Adresse einer Instanz eines Objekts 145 mittels einer Zugriffstabelle 320 durchzuführen, die dem jeweiligen Prozess 135, 140 zugeordnet ist. In einer Ausführungsform kann ein Eintrag für eine reale Adresse in der Zugriffstabelle 320 auf der Basis eines Eintrags, der in einer üblichen vtable des Objekts stünde (oder steht), und der Basisadresse gebildet sein. Die Umsetzung bzw. die Verwaltung der Tabelle kann mittels einer Methode eines verwaltenden Objekts durchgeführt werden. Dabei ist das verwaltende Objekt ebenfalls dem zugreifenden Prozess 135, 140 zugeordnet.
  • 4 zeigt ein Ablaufdiagramm eines Verfahrens 400 zum Zugriff auf ein Objekt 145 in einem von mehreren Prozessen 135, 140 nutzbaren Speicherbereich 305. Beispielhaft wird von einem Prozess P1 ausgegangen, der eine Instanz eines Objekts 145 („foo“) behandelt.
  • Zum Instanziieren des Objekts 145 wird in einem Schritt 402 ein Verwaltungsobjekt („SharedMemoryFactoryP1“) für das Objekt 145 instanziiert. In einem Schritt 404 kann geprüft werden, ob das nachgesuchte Objekt 145 bereits existiert; in diesem Fall kann die Instanziierung beendet werden. Andernfalls kann in einem Schritt 406 das Objekt 145 instanziiert werden, wobei eine Ressource („SharedMemoryResourceP1") erstellt wird. Von dieser Ressource kann in einem Schritt 408 eine Zugriffsstruktur („MemoryResourceProxy“) auf das Objekt 145 bereitgestellt werden. Dazu kann ein dem Prozess 135, 140 eineindeutig zugeordneter Identifikator verwendet werden. Auf der Basis des Identifikators kann eine Basisadresse eines dem Prozess 135, 140 zugeordneten Speicherbereichs 310, 315 bestimmt werden.
  • In einem Schritt 410 kann ein Objekt 145 („FooSharedMemoryObject“) im gemeinsam nutzbaren Speicherbereich 305 erzeugt werden. Außerdem kann in Schritten 412, 414 auf der Basis des Identifikators des Prozesses 135, 140 ein Eintrag in eine Zugriffstabelle („MemoryResourceRegistryP1") erstellt werden. Diese Zugriffstabelle ist der Instanziierung des Objekts 145 für den ausführenden Prozess 135, 140 zugeordnet. In einem Schritt 416 kann schreibend auf das erzeugte Objekt 145 zugegriffen werden.
  • Zu einem späteren Zeitpunkt kann auf das Objekt 145 im gemeinsam nutzbaren Speicherbereich 305 zugegriffen werden. Dazu kann in einem Schritt 420 das Verwaltungsobjekt („ResourceProxy“) des Objekts 145 bestimmt werden. In einem Schritt 422 kann eine Zugriffsstruktur („PolymorphicOffsetAllocator“) des Objekts 145 bestimmt werden. Nachfolgend kann in einem Schritt 424 eine Anforderung zur Bereitstellung von Speicherplatz für Daten 150 einer vorbestimmten Größe an die Zugriffsstruktur gerichtet werden.
  • Die Zugriffsstruktur kann in einem Schritt 426 die Zugriffsstruktur des Objekts 145 („MemoryResourceProxy“) bestimmen. Diese kann in einem Schritt 428 die Zugriffstabelle „MemoryResourceRegistryP1“ bestimmen. Mit den dort hinterlegten Zugriffsinformationen kann in einem Schritt 430 Speicherplatz für die vorbestimmten Daten 150 angefordert werden. In einem Schritt 432 kann ein vom SharedMemoryObjekt bereitgestellter Speicherplatz passend aufbereitet und eine Zugriffsadresse zurückgegeben werden. Diese Zugriffsadresse kann dann in einem Schritt 434 dem zugreifenden Prozess P1 bereitgestellt werden.
  • 5 bis 8 zeigen ein beispielhaftes Klassengeflecht, Zugehörigkeiten und Abläufe zwischen Objekten und Hilfsobjekten nach dem Beispiel von 4. Die Darstellung folgt einem üblichen UML-Diagramm. Verbindungen zwischen Elementen, die auf verschiedenen Seiten liegen, sind beidseitig durch eingekreiste Zahlen gekennzeichnet.
  • Bezugszeichen
  • 100
    Fahrzeug
    105
    System
    110
    Steuergerät
    115
    Sensor
    120
    Speicher
    125
    Schnittstelle
    135
    erster Prozess
    140
    zweiter Prozess
    145
    Objekt
    150
    Daten
    155
    Methode
    205
    Basisobjekt
    210
    erstes abgeleitetes Objekt
    215
    zweites abgeleitetes Objekt
    305
    gemeinsam nutzbarer Speicherbereich
    310
    erster Speicherbereich
    315
    zweiter Speicherbereich
    320
    Zugriffstabelle
    400
    Verfahren
    402
    Verwaltungsobjekt instanziieren
    404
    Objekt bereits instanziiert?
    406
    shared memory resource instanziieren
    408
    memory resource proxy instanziieren
    410
    Objekt erzeugen
    412
    Identifikator eintragen
    414
    in Registry eintragen
    416
    in Objekt schreiben
    420
    Verwaltungsobjekt bestimmen
    422
    Zugriffsstruktur bestimmen
    424
    Anforderung Speicherplatz
    426
    Zugriffsstruktur des Objekts bestimmen
    428
    Zugriffstabelle bestimmen
    430
    Speicherplatz anfordern
    432
    Speicherplatz aufbereiten
    434
    Zugriffsadresse bereitstellen

Claims (14)

  1. Verfahren (400) zum Bereitstellen einer Instanz eines polymorphen Objekts (145) in einem durch mehrere Prozesse (135, 140) nutzbaren Speicherbereich (305) in einem Verarbeitungssystem (105), wobei das Verfahren (400) folgende Schritte umfasst: - Bereitstellen einer Ressource im gemeinsam genutzten Speicherbereich (305); - Bereitstellen einer Zugriffstabelle (320) zum Zugriff auf eine Instanz des Objekts (145) in der Ressource; - wobei jedem auf die Ressource zugreifenden Prozess (135, 140) eine eigene Zugriffstabelle (320) zugeordnet ist.
  2. Verfahren (400) nach Anspruch 1, ferner folgende Schritte umfassend: - Bestimmen eines auf die Ressource zugreifenden Prozesses (135, 140); - Bestimmen einer dem Prozess (135, 140) zugeordneten Zugriffstabelle (320); - Erzeugen einer Instanz des Objekts (145) in der Ressource; - Bestimmen einer Adresse zum Zugriff auf die Instanz in der Ressource; - Bestimmen einer virtuellen Adresse der Instanz für den Prozess (135, 140); und - Hinterlegen der Adresse und der virtuellen Adresse in der Zugriffstabelle (320).
  3. Verfahren (400) nach Anspruch 1 oder 2, ferner folgende Schritte umfassend: - Bestimmen eines auf die Ressource zugreifenden Prozesses (135, 140); - Bestimmen einer dem Prozess (135, 140) zugeordneten Zugriffstabelle (320); und - Bestimmen einer virtuellen Adresse, die in der Zugriffstabelle (320) einer Adresse zum Zugriff auf die Instanz in der Ressource zugeordnet ist.
  4. Verfahren (400) nach Anspruch 3, wobei der Prozess (135, 140) unter Nutzung der ihm zugeordneten virtuellen Adresse auf die Instanz zugreift.
  5. Verfahren (400) nach Anspruch 4, wobei der Zugriff unter Umsetzung der virtuellen Adresse in die Adresse zum Zugriff auf die Instanz in der Ressource erfolgt.
  6. Verfahren (400) nach Anspruch 4 oder 5, wobei mehrere Prozesse (135, 140) jeweils unter Nutzung von ihnen zugeordneten virtuellen Adressen auf die Instanz des Objekts (145) zugreifen.
  7. Verfahren (400) nach einem der vorangehenden Ansprüche, wobei die Instanz eine Implementation eines Objekts (145) einer Basisklasse ist und die Implementation erst beim Anlegen der Instanz bekannt ist.
  8. Verfahren (400) nach einem der vorangehenden Ansprüche, wobei die Instanz des Objekts (145) Informationen und eine Methode zum Zugriff auf die Informationen umfasst.
  9. Verfahren (400) nach einem der vorangehenden Ansprüche, wobei der Prozess (135, 140) an Bord eines Fahrzeugs (100) abläuft und dazu eingerichtet ist, das Fahrzeug (100) auf der Basis der Informationen zu steuern.
  10. Steuergerät (110) mit einem durch mehrere Prozesse (135, 140) nutzbaren Speicherbereich (305); wobei die Prozesse (135, 140) dazu eingerichtet sind, auf eine Instanz eines polymorphen Objekts (145) in einer Ressource in dem Speicherbereich (305) zuzugreifen, indem eine für den Prozess (135, 140) sichtbare virtuelle Adresse zum Zugriff auf die Instanz mittels einer dem Prozess (135, 140) zugeordneten Zugriffstabelle (320) in eine Adresse zum Zugriff auf die Instanz in der Ressource umgewandelt wird.
  11. Steuergerät (110) nach Anspruch 10, wobei das Steuergerät (110) an Bord eines Fahrzeugs (100) angebracht ist und einer der Prozesse (135, 140) dazu eingerichtet ist, eine Funktion des Fahrzeugs (100) zu steuern.
  12. Steuergerät (110) nach Anspruch 10 oder 11, umfassend eine Verarbeitungseinrichtung zur Ausführung mehrerer Prozesse (135, 140) und einen Speicher mit einem Speicherbereich (305), der durch verschiedene Prozesse (135, 140) nutzbar ist.
  13. System (105), umfassend mehrere Steuergeräte (110) und einen Speicher (120) mit einem von beiden Steuergeräten (110) aus nutzbaren Speicherbereich (305), wobei auf zwei unterschiedlichen Steuergeräten (110) jeweils ein Prozess (135, 140) abläuft, der dazu eingerichtet ist, auf eine Instanz eines polymorphen Objekts (145) in einer Ressource in dem Speicherbereich (305) zuzugreifen, indem eine für den Prozess (135, 140) sichtbare virtuelle Adresse zum Zugriff auf die Instanz mittels einer dem Prozess (135, 140) zugeordneten Zugriffstabelle (320) in eine Adresse zum Zugriff auf die Instanz in der Ressource umgewandelt wird.
  14. Fahrzeug (100), umfassend ein System (105) nach Anspruch 13.
DE102022107294.0A 2022-03-28 2022-03-28 Steuerung eines Fahrzeugs Pending DE102022107294A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102022107294.0A DE102022107294A1 (de) 2022-03-28 2022-03-28 Steuerung eines Fahrzeugs
PCT/EP2023/056620 WO2023186545A1 (de) 2022-03-28 2023-03-15 Steuerung eines fahrzeugs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022107294.0A DE102022107294A1 (de) 2022-03-28 2022-03-28 Steuerung eines Fahrzeugs

Publications (1)

Publication Number Publication Date
DE102022107294A1 true DE102022107294A1 (de) 2023-09-28

Family

ID=85726534

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022107294.0A Pending DE102022107294A1 (de) 2022-03-28 2022-03-28 Steuerung eines Fahrzeugs

Country Status (2)

Country Link
DE (1) DE102022107294A1 (de)
WO (1) WO2023186545A1 (de)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101534037B1 (ko) * 2010-09-24 2015-07-08 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
US9164735B2 (en) * 2012-09-27 2015-10-20 Intel Corporation Enabling polymorphic objects across devices in a heterogeneous platform

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Hon, L.: Using Objects in Shared Memory for C++ Applications. In: CASCON '94: Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research, 1994(recherchiert am 13.3.2023)
Wang, Y. et al.: IVT: An Efficient Method for Sharing Subtype Polymorphic Objects. In: Proc. ACM Program. Lang., Vol. 3, No. OOPSLA, Article 130, October 2019.https://doi.org/10.1145/3360556(recherchiert am 13.3.2023)
Wikipedia: Virtual Method Table. 6.3.2022<https://en.wikipedia.org/w/index.php?title=Virtual_method_table&oldid=1075499413>(recherchiert am 13.3.2023)

Also Published As

Publication number Publication date
WO2023186545A1 (de) 2023-10-05

Similar Documents

Publication Publication Date Title
DE102018116676B4 (de) Kommunikationsnetzwerk, das eine universelle Mess- und Kalibrierprotokoll, XCP, -Richtlinie implementiert, Fahrzeug umfassend das Kommunikationsnetzwerk und Verfahren
WO2019072840A1 (de) Vorrichtung zur absicherung von diagnosebefehlen an ein steuergerät und entsprechendes kraftfahrzeug
DE112010003999T5 (de) Regelungsvorrichtung, regelungsverfahren und computerprogramm
EP2698678A2 (de) Konfigurationstechnik für ein Steuergerät mit miteinander kommunizierenden Anwendungen
DE102018205204A1 (de) Verfahren zum Bereitstellen von Anwendungsdaten zumindest einer auf einem Steuergerät eines Fahrzeugs ausführbaren Anwendung, Verfahren zum Kalibrieren eines Steuergeräts, Steuergerät und Auswerteeinrichtung
DE10142511B4 (de) Fehlerbehandlung von Softwaremodulen
DE102022107294A1 (de) Steuerung eines Fahrzeugs
EP2456124A1 (de) Geberschnittstellenengineering
DE112009001842T5 (de) Steuervorrichtung, Steuerverfahren und Computerprogramm
DE102016008957B4 (de) Direkter Zugriff auf Bussignale in einem Kraftfahrzeug
WO2017032902A1 (de) Steuergerät für ein fahrzeug
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
DE102021201236A1 (de) Verfahren zum Authentifizieren einer Nachricht einer Recheneinheit, Recheneinheit, Computerprogramm und Fahrzeug
EP3991037A1 (de) Steuergerät für ein fahrzeug, system, verfahren und kraftfahrzeug mit einem solchen steuergerät
DE102022201356B4 (de) Kraftfahrzeuggateway
DE102011017484A1 (de) Verfahren zum Migrieren einer Fahrzeugfunktion
WO2023151762A1 (de) Kraftfahrzeuggateway
EP2455831A1 (de) Engineering einer Datenkommunikation
DE102016204466A1 (de) Verfahren zur Aktualisierung eines Steuergeräts eines Kraftfahrzeugs mit wenigstens zwei Mikroprozessoren
WO2024100007A1 (de) Verfahren zur überwachung von schnittstellen zwischen einer software-applikation und einem steuergerät
WO2023152284A1 (de) Verfahren zur bereitstellung eines zugangspunkts zur messung und kalibrierung einer oder mehrerer funktionen einer recheneinheit
WO2024100011A1 (de) Verfahren zum ermitteln von regeln für eine überwachungsvorrichtung
DE102022212286A1 (de) Diagnose-Verfahren für ein elektronisches System und Erzeugen von Diagnose-Anwendungen für das elektronische System
DE102023126875A1 (de) Fahrzeugsteuermodule mit containerisierter orchestrierung und ressourcenverwaltung für systeme mit gemischter kritikalität
WO2008052901A1 (de) Verfahren zum betreiben einer rechneranordnung

Legal Events

Date Code Title Description
R163 Identified publications notified