DE102019203353A1 - Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug - Google Patents

Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug Download PDF

Info

Publication number
DE102019203353A1
DE102019203353A1 DE102019203353.9A DE102019203353A DE102019203353A1 DE 102019203353 A1 DE102019203353 A1 DE 102019203353A1 DE 102019203353 A DE102019203353 A DE 102019203353A DE 102019203353 A1 DE102019203353 A1 DE 102019203353A1
Authority
DE
Germany
Prior art keywords
data structure
following features
vehicle
pointer
elements
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
DE102019203353.9A
Other languages
English (en)
Inventor
Rainer Baumgaertner
Michael Kopp
Raphael Diziol
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102019203353.9A priority Critical patent/DE102019203353A1/de
Priority to PCT/EP2020/055572 priority patent/WO2020182544A1/de
Publication of DE102019203353A1 publication Critical patent/DE102019203353A1/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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/173Vehicle or other transportation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Traffic Control Systems (AREA)

Abstract

Datenstruktur (10) für ein eingebettetes System (20), gekennzeichnet durch folgende Merkmale:- die Datenstruktur (10) umfasst einen typisierten statischen Speicherpool (11) zum Speichern von Daten-Elementen (12) und Zeigerobjekten (13) und- die Zeigerobjekte (13) sind dazu eingerichtet, einen Versatz (14) zwischen dem jeweiligen Zeigerobjekt (13) und einem der Daten-Elemente (12) zu speichern.

Description

  • Die vorliegende Erfindung betrifft eine Datenstruktur für ein eingebettetes System. Die vorliegende Erfindung betrifft darüber hinaus ein entsprechendes Fahrzeug sowie ein entsprechendes System.
  • Stand der Technik
  • Der Begriff des hochautomatisierten Fahrens (highly automated driving, HAD) bezeichnet gemeinhin eine Entwicklungsstufe zwischen dem assistierten Fahren, bei welchem der Fahrer durch zahlreiche (oft getrennte) Fahrerassistenzsysteme bei der Fahraufgabe unterstützt wird, und dem autonomen Fahren, bei welchem das Fahrzeug gänzlich selbsttätig und ohne Einwirkung des Fahrers fährt. Beim hochautomatisierten Fahren verfügt das Fahrzeug gewissermaßen über eine eigene Intelligenz, die vorausplant und die Fahraufgabe zumindest in den meisten Situationen übernehmen könnte. Fahrer und Steuergeräte (electronic control units, ECUs) führen zusammen das Fahrzeug, wobei der menschliche Fahrer jederzeit bestimmt, wie stark er in das Fahrverhalten des Fahrzeuges eingreift.
  • WO2018146000A1 offenbart ein Steuergerät für ein Kraftfahrzeug, das eingerichtet ist, mehrere Anwendungen und Zwischenanwendungen (middleware) zu betreiben und einen durch die Anwendungen und Zwischenanwendungen gemeinsam nutzbaren Speicher (shared memory) umfasst. Die Zwischenanwendungen sind eingerichtet, eine Interprozesskommunikation zwischen den Anwendungen über den Speicher abzuwickeln.
  • Offenbarung der Erfindung
  • Die Erfindung stellt eine Datenstruktur für ein eingebettetes System, ein entsprechendes Fahrzeug sowie ein entsprechendes System gemäß den unabhängigen Ansprüchen bereit.
  • Der erfindungsgemäße Ansatz fußt hierbei auf der Erkenntnis, dass zahlreiche Fahrerassistenzsysteme für hochautomatisiertes Fahren aktuell in der Entstehungsphase sind. Einschlägige Ansätze basieren auf Middleware-zentrischen Umsetzungen in Multi-ECU-, Multiprozessor- oder Multiprozess-Topologien. Dabei werden - wie im Falle des Steuergerätes gemäß WO2018146000A1 - Datenstrukturen über die Middleware versendet. Aus Effizienzgründen sollten diese Datenstrukturen innerhalb eines Prozessors zwischen einzelnen Prozessen mit unterschiedlichen logischen Adressräumen geteilt werden können, ohne eine sogenannte tiefe Kopie (deep copy) anzufertigen.
  • Die vorgeschlagene Lösung trägt ferner dem Umstand Rechnung, dass die Komplexität derartiger Datenstrukturen nach dem Stand der Technik sehr begrenzt ist, da die Daten potenziell effizient automatisch serialisiert und wieder deserialisiert werden müssen. Ebenso kann aus Effizienzgründen oftmals nicht von einem gemeinsamen Adressraum der Middleware-zentrischen Anwendungen ausgegangen werden. Um diesen Herausforderungen zu begegnen, werden mitunter Index-basierte Verfahren eingesetzt, die, speziell bei mehrfach verketteten Strukturen, schnell an ihre Grenzen stoßen. Gerade komplexe hierarchische Datenstrukturen werden hierbei häufig in dezentralen Speicherblöcken verwaltet, welche den Speicherbedarf erhöhen.
  • Die hohe Komplexität von Programmen zum hochautomatisierten Fahren erfordert darüber hinaus mächtige, aber einfach anwendbare Lösungen, die moderne Programmierparadigmen in unterschiedlichen Prozessen mit separierten Adressräumen effizient unterstützen. Zur Abbildung derart komplexer Datenstrukturen mit statischer Speicherallokation zwischen Prozessen sind daher sogenannte relokatierbare, also verschiebliche Zeiger (relocatable pointers) wünschenswert.
  • Ein Vorzug der erfindungsgemäßen Lösung liegt somit in der eröffneten Möglichkeit, auch komplexe und stark verkettete Datenstrukturen effizient und transparent über die Middleware zu versenden.
  • Ein Grundgedanke hierbei ist die Einführung eines Zeigers, der es erlaubt, innerhalb einer zu versendenden Datenstruktur relativ zu verweisen. Hierzu werden die Differenzen der tatsächlichen Adressen abgespeichert. Damit ist es möglich, die Daten auch in unterschiedlichen Anwendungen mit unterschiedlichen Adressräumen zu verwenden. Ein weiterer Vorteil ist die Möglichkeit, die Daten anstatt einer rechenintensiveren tiefen Kopie hocheffizient durch bitidentische Speicherkopie (memcpy) über unterschiedliche Adressräume hinweg zu übertragen. Für Objekt-Kopien wird normalerweise der auf der tiefen Kopie basierende Kopier-Konstruktor (copy constructor) benötigt. Dieser baut die Zielstruktur anhand der Quelle Stück für Stück auf. Dies ist sehr rechenintensiv; demgegenüber reduziert das vorgeschlagene Verfahren den Rechenaufwand erheblich.
  • Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen des im unabhängigen Anspruch angegebenen Grundgedankens möglich. So kann vorgesehen sein, dass ein erfindungsgemäßes System einen zentralen Speicherbereich und verschiedene Zwischenanwendungen aufweist, die ersteren gemeinsam zum Nachrichtenaustausch nutzen. Dadurch werden Middleware-Implementierungen, die auf gemeinsam genutztem Speicher basieren, effizient unterstützt. Kopien werden hierbei weitgehend vermieden, und in den seltenen Fällen, in denen doch eine solche Kopie notwendig ist, wird diese unter Nutzung der Funktion memcpy ausgeführt.
  • Bei komplexen hierarchischen Datenstrukturen kann der Speicherbedarf durch die Verwendung von zentralen anstelle von dezentralen Speicherblöcken zusätzlich reduziert werden. Hierzu werden in der durch die Middleware zu versendenden Datenstruktur zentral Speicherblöcke angelegt, auf die dann in hierarchischen Strukturen mittels der verschieblichen Zeiger verwiesen wird. Auf diese Weise kann der Speicher effizient und dynamisch genutzt werden.
  • Figurenliste
  • Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
    • 1 die Funktionsweise eines erfindungsgemäß relokatierbaren Zeigerobjektes.
    • 2 die Realisierung von komplexen Datenstrukturen mittels derartiger Zeiger und zentralen Speicherblöcken.
    • 3 schematisch ein autonomes Fahrzeug mit einem erfindungsgemäßen Steuergerät.
  • Ausführungsformen der Erfindung
  • 1 illustriert den grundlegenden Aufbau einer erfindungsgemäßen Datenstruktur (10). Ein verschieblicher Zeiger (13) speichert hierbei die Differenz (14) zwischen seiner eigenen Adresse und dem in Bezug genommenen Daten-Element (12). Zeigt also abbildungsgemäß der „rohe“ Zeiger ptr auf Node, so wird die Differenz aus der Adresse von Node und der in C++ klassenintern durch das Schlüsselwort this bezeichneten Adresse des Zeigerobjektes (13) abgespeichert.
  • Vorzugsweise werden hierbei, wie in 2 verdeutlicht, zentrale Speicherblöcke oder -pools (11) angelegt. Die komplexen Datenstrukturen TLinkedList<int> list1 und TLinkedList<int> list2 verwenden gemeinsam die Elemente Node aus diesem Objekt des Typs TFixedMemoryPool. Damit entfällt die Notwendigkeit, für jede der beiden Listen (16, 17) eigene Speicherblöcke vorzuhalten. Dies wird durch die Nutzung der verschieblichen Zeiger *begin, *end, *prev und *next ermöglicht, die auf Elemente (12) im Speicherpool (11) weisen.
  • Dieses Verfahren kann beispielsweise in Software oder Hardware oder in einer Mischform aus Software und Hardware beispielsweise im Steuergerät (20) eines Fahrzeuges (30) implementiert sein, wie die schematische Darstellung der 3 verdeutlicht.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • WO 2018146000 A1 [0003, 0005]

Claims (10)

  1. Datenstruktur (10) für ein eingebettetes System (20), gekennzeichnet durch folgende Merkmale: - die Datenstruktur (10) umfasst einen typisierten statischen Speicherpool (11) zum Speichern von Daten-Elementen (12) und Zeigerobjekten (13) und - die Zeigerobjekte (13) sind dazu eingerichtet, einen Versatz (14) zwischen dem jeweiligen Zeigerobjekt (13) und einem der Daten-Elemente (12) zu speichern.
  2. Datenstruktur (10) nach Anspruch 1, gekennzeichnet durch folgende Merkmale: - die Zeigerobjekte (13) gehören einer gemeinsamen Klasse (15) an und - der Versatz (14) bildet ein Attribut der Klasse (15).
  3. Datenstruktur (10) nach Anspruch 1 oder 2, gekennzeichnet durch folgendes Merkmal: - die Zeigerobjekte (13) sind dazu eingerichtet, die Elemente (12) zu Listen (16, 17) zu verketten.
  4. Datenstruktur (10) nach Anspruch 3, gekennzeichnet durch folgende Merkmale: - die Listen (16, 17) sind doppelt verkettet und - die Listen (16, 17) sind dazu eingerichtet, Anfang (18) und Ende (19) der jeweiligen Liste (16, 17) mittels der Zeigerobjekte (13) zu speichern.
  5. Datenstruktur (10) nach Anspruch 4, gekennzeichnet durch folgende Merkmale: - die Elemente (12) sind dazu eingerichtet, einen Vorgänger (21) und einen Nachfolger (22) des jeweiligen Elementes (12) mittels der Zeigerobjekte (13) zu speichern und - die Elemente (12) sind ferner dazu eingerichtet, Nutzdaten (23) des jeweiligen Elementes (12) zu speichern.
  6. Eingebettetes System (20) für ein Fahrzeug (30), gekennzeichnet durch folgende Merkmale: - das System (20) umfasst einen gemeinsam nutzbaren Speicherbereich zum Austauschen von Nachrichten (24) und - der Speicherbereich weist eine Datenstruktur (10) nach einem der Ansprüche 1 bis 5 auf.
  7. System (20) nach Anspruch 6, gekennzeichnet durch folgende Merkmale: - das System (20) weist Zwischenanwendungen auf und - die Zwischenanwendungen sind dazu eingerichtet, den Speicherbereich gemeinsam für die Nachrichten (24) zu nutzen.
  8. System (20) nach Anspruch 6 oder 7, gekennzeichnet durch folgende Merkmale: - das System (20) umfasst ein Gateway und - das Gateway ist dazu eingerichtet, die Nachrichten (24) in einem externen Archiv aufzuzeichnen.
  9. System (20) nach einem der Ansprüche 6 bis 8, gekennzeichnet durch folgendes Merkmal: - das System (20) ist dazu eingerichtet, das Fahrzeug (30) autonom zu steuern.
  10. Fahrzeug (30) mit einem System (20) nach einem der Ansprüche 6 bis 9.
DE102019203353.9A 2019-03-12 2019-03-12 Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug Pending DE102019203353A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102019203353.9A DE102019203353A1 (de) 2019-03-12 2019-03-12 Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug
PCT/EP2020/055572 WO2020182544A1 (de) 2019-03-12 2020-03-03 Datenstruktur für ein eingebettetes system, entsprechendes system und fahrzeug

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019203353.9A DE102019203353A1 (de) 2019-03-12 2019-03-12 Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug

Publications (1)

Publication Number Publication Date
DE102019203353A1 true DE102019203353A1 (de) 2020-09-17

Family

ID=69804846

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019203353.9A Pending DE102019203353A1 (de) 2019-03-12 2019-03-12 Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug

Country Status (2)

Country Link
DE (1) DE102019203353A1 (de)
WO (1) WO2020182544A1 (de)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625718B1 (en) * 1998-02-05 2003-09-23 Avaya Technology Corp. Pointers that are relative to their own present locations
DE102017201966A1 (de) 2017-02-08 2018-08-09 Robert Bosch Gmbh Steuergerät für ein Kraftfahrzeug und entsprechendes Kraftfahrzeug

Also Published As

Publication number Publication date
WO2020182544A1 (de) 2020-09-17

Similar Documents

Publication Publication Date Title
DE102019109672A1 (de) Rückgängigmachung nach einem teilausfall in mehreren elektronischen steuergeräten mittels over-the-air-updates
EP0268285A2 (de) Verfahren und Schaltungsanordnung zum Urladen eines Zweitrechners
DE112019002411T5 (de) Fahrzeuggebundene Aktualisierungseinrichtung, Aktualisierungsprozessverfahren und Aktualisierungsprozessprogramm
DE102018221063A1 (de) Konfiguration eines Steuerungssystems für ein zumindest teilautonomes Kraftfahrzeug
DE102018202446A1 (de) Verfahren zum Modularisieren einer Softwarearchitektur
DE102017108211A1 (de) Verfahren zum Auslesen einer Fehlerspeicher-Historie aus einem Fehlerspeicher eines Steuergerätes eines Kraftfahrzeuges
DE102016201769A1 (de) Verfahren zum Aktualisieren von Software eines Steuergerätes, vorzugsweise für ein Kraftfahrzeug
EP0791929B1 (de) Elektronisches Gerät und Verfahren zu seiner Duplizierung und Einrichtung zur Datenübertragung zwischen zwei gleichartig aufgebauten elektronischen Geräten
DE102019203353A1 (de) Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug
DE102017201966A1 (de) Steuergerät für ein Kraftfahrzeug und entsprechendes Kraftfahrzeug
DE102019209360A1 (de) Elektronische steuerungsvorrichtung
DE102013214795A1 (de) Tachografenanordnung und Verfahren zum Betreiben einer Tachografenanordnung
DE102015218589A1 (de) Verfahren und Vorrichtung zum Betreiben eines Many-Core-System
DE102019213738A1 (de) Software-Komponenten für eine Software-Architektur
EP4144003B1 (de) Verfahren zum erzeugen einer softwarekomponente für eine elektronische recheneinrichtung eines kraftfahrzeugs, computerprogrammprodukt, computerlesbares speichermedium sowie kraftfahrzeugexternes aktualisierungssystem
DE102017108288A1 (de) Aktualisieren eines Speichers
WO2009103728A1 (de) Verfahren und vorrichtung zum speichern von informationsdaten
DE102015214389A1 (de) Verfahren und Vorrichtung zum Aktualisieren einer auf einer physischen Maschine unter einem Hypervisor betriebenen virtuellen Maschine
DE102020005474A1 (de) Verfahren zur Datenverarbeitung von Daten in einem Fahrzeug mittels eines Kontext-Management-Systems, sowie Datenverarbeitungssystem
DE102014010553A1 (de) Verfahren zum automatischen Initialisieren einer Master/Slave-Konfiguration in einem Ethernet-Netzwerk sowie ein Kraftfahrzeug
EP3257232B1 (de) Verfahren zur nutzung eines steuergerätes in unterschiedlichen datenübertragungssystemen, steuergerät und datenübertragungssystem zur durchführung eines derartigen verfahrens
WO2020182607A1 (de) Datenstruktur für ein eingebettetes system, entsprechendes system und fahrzeug
DE102015219841A1 (de) Verfahren und Vorrichtung zum Aktualisieren eines Steuergerätes
DE102014016884A1 (de) Datenflußsteuerung und Loadbalancing in Fahrzeugsteuergeräten mit Mehrkernprozessoren
DE102015220485A1 (de) Verfahren zum Schreiben und Lesen eines Datensatzes