DE102019203353A1 - Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug - Google Patents
Datenstruktur für ein eingebettetes System, entsprechendes System und Fahrzeug Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/173—Vehicle 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 der3 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)
- 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.
- 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). - Datenstruktur (10) nach
Anspruch 1 oder2 , gekennzeichnet durch folgendes Merkmal: - die Zeigerobjekte (13) sind dazu eingerichtet, die Elemente (12) zu Listen (16, 17) zu verketten. - 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. - 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. - 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 bis5 auf. - 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. - System (20) nach
Anspruch 6 oder7 , gekennzeichnet durch folgende Merkmale: - das System (20) umfasst ein Gateway und - das Gateway ist dazu eingerichtet, die Nachrichten (24) in einem externen Archiv aufzuzeichnen. - System (20) nach einem der
Ansprüche 6 bis8 , gekennzeichnet durch folgendes Merkmal: - das System (20) ist dazu eingerichtet, das Fahrzeug (30) autonom zu steuern. - Fahrzeug (30) mit einem System (20) nach einem der
Ansprüche 6 bis9 .
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)
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 |
-
2019
- 2019-03-12 DE DE102019203353.9A patent/DE102019203353A1/de active Pending
-
2020
- 2020-03-03 WO PCT/EP2020/055572 patent/WO2020182544A1/de active Application Filing
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 |