WO2020156668A1 - Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system - Google Patents

Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system Download PDF

Info

Publication number
WO2020156668A1
WO2020156668A1 PCT/EP2019/052315 EP2019052315W WO2020156668A1 WO 2020156668 A1 WO2020156668 A1 WO 2020156668A1 EP 2019052315 W EP2019052315 W EP 2019052315W WO 2020156668 A1 WO2020156668 A1 WO 2020156668A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
component
unit
proxy
control unit
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.)
Ceased
Application number
PCT/EP2019/052315
Other languages
English (en)
French (fr)
Inventor
Jakob Reuter
Christoph Borchers
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 US17/299,150 priority Critical patent/US11416227B2/en
Priority to PCT/EP2019/052315 priority patent/WO2020156668A1/de
Priority to CN201980073896.7A priority patent/CN112969999B/zh
Priority to DE112019006805.9T priority patent/DE112019006805A5/de
Publication of WO2020156668A1 publication Critical patent/WO2020156668A1/de
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Definitions

  • Vehicles such as cars, include to control vehicle functions
  • each control unit has its own
  • a disadvantage here is that a large number of control units must be accommodated in the limited installation space of the vehicle. This is disadvantageous because there is less flexibility in the design of the vehicles.
  • a further disadvantage is that a control unit is designed precisely for the functions to be performed, i. H . with regard to the memory provided and the computing capacity. This is disadvantageous since functions can only be retrofitted via software updates within the existing hardware limits.
  • the universal control devices have a number of computing cores, it being possible for one or more of the computing cores to be assigned different functions. Memory areas can also be assigned to different functional units.
  • Proxy definition specifies access to at least one function and / or a memory area of a program unit, the first
  • Proxy definition of the first program unit and the second proxy definition is assigned to the second program unit
  • Program component at least one function of the second
  • a core of the invention is that proxy definitions are generated for the program units, which in turn are compiled into proxy components. Using these proxy components, the first and the second
  • Program component is thus formed by the first and the second proxy component. If only one program component is changed and the interface does not change, it is therefore not necessary to compile the unchanged component.
  • the first and second program components can be designed as binary files, each of which can be executed by a computing core of a control unit.
  • the first and second program components can therefore be individual
  • Control unit are executable.
  • a computing core of a control unit can As part of this application, a processor core of a processor
  • Control unit include.
  • exporting may be exporting the first
  • Program component and / or the second proxy component on a second computing core of the control unit Program component and / or the second proxy component on a second computing core of the control unit.
  • Program components for a computing core can be determined dynamically or statically.
  • the first and / or the second program unit can comprise source code of a programming language, in particular embedded C.
  • Embedded-C has proven itself in the hardware-related programming of control units. This provides an easy-to-implement implementation.
  • the first and / or the second proxy definition can specify addresses of functions of the first and second program components, respectively.
  • Proxy definitions contain information about the memory addresses via which functions of program components can be called. It is also advantageous if the proxy definitions contain information about shared memory areas. With the described embodiment, a simple type is specified, the interface between the first and the second
  • the method can include the following steps:
  • Program component at least one function of the first
  • Program component calls and / or uses using the first and the second proxy component.
  • the third program unit can be, for. B. can be an updated version of the second program unit, in which the interfaces have not changed. It is now not necessary to recompile the first program unit.
  • the third program component can access the functions and memory areas of the first program component using the first and second proxy components. so that they do not have to be generated again.
  • the compilation of the third program unit can be carried out using a rule set, wherein the rule set can comprise at least one rule which can indicate whether a compilation of the first program unit is necessary for compiling the third program unit.
  • a rule can specify conditions when individual program components are recompiled when changes are made. So a rule in one
  • Program component has changed.
  • another possible rule can state that a program component must be recompiled if the size of a shared memory area has changed.
  • the first program component can
  • Operating system for the control unit and / or the first component can be designed to control the lateral dynamics of a vehicle and / or the third program component can be configured to control at least one driver assistance system of a vehicle.
  • the communication between the control of the lateral dynamics and the control of at least one driver assistance system can be carried out by the proxy components.
  • the object is further achieved by a computer-readable medium
  • Storage medium which contains instructions which cause at least one processor to implement a method as described above when the instructions are executed by the at least one processor.
  • control unit which is designed to use a first program component, a second, generated by the method described above
  • Program component and a proxy component functions one

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Ausführen von Programmkomponenten (23, 24, 33, 34) auf einem Steuergerät (2), umfassend die folgenden Schritte: - Empfangen mindestens einer ersten Programmeinheit (8) und mindestens einer zweiten Programmeinheit (9, 9'); - Erzeugen einer ersten und einer zweiten Proxydefinition, wobei eine Proxydefinition einen Zugriff auf mindestens einer Funktion und/oder einen Speicherbereich einer Programmeinheit (8, 9, 9') festlegt, wobei die erste Proxydefinition der ersten Programmeinheit (8) und die zweite Proxydefinition (9) der zweiten Programmeinheit (9, 9') zugeordnet ist; - Kompilieren der ersten Programmeinheit (8) und der zweiten Programmeinheit (9, 9') zur Erzeugung einer ersten Programmkomponente (23), einer zweiten Programmkomponente (24) und einer ersten und einer zweiten Proxykomponente (13, 25); - Ausführen der ersten Programmkomponente (23) und der zweiten Programmkomponente (24) auf einem Steuergerät (2), wobei die erste Programmkomponente (23) mindestens eine Funktion der zweiten Programmkomponente (24) unter Verwendung der ersten und der zweiten Proxykomponente (13, 25) aufruft und/oder verwendet.

Description

Verfahren zum Ausf ühren von Programmkomponenten auf einem Steuergerät , ein computerlesbares-Speichermedium , ein Steuergerät und ein System
Beschreibung
Die Erf indung betrifft ein Verfahren zum Ausf uhren von Programmkomponenten auf einem Steuergerät , ein computerlesbares-Speichermedium , ein Steuergerät und ein System .
Fahrzeuge, wie PKW, umfassen zur Steuerung der Fahrzeugf unktionen
Steuergeräte. Traditionell wird dabei f ür jede Steuereinheit ein eigenes
Steuergerät eingesetzt . Für die Querdynamik des Fahrzeugs oder f ür einzelne Fahrerassistenzsysteme wird also jeweils ein separates Steuergerät eingesetzt .
Ein Nachteil dabei ist, dass in dem begrenzten Bauraum des Fahrzeugs eine Vielzahl von Steuergeräten untergebracht werden muss. Dies ist nachteilig, da so weniger Flexibilität bei der Gestaltung der Fahrzeuge besteht. Ferner ist ein wesentlicher Nachteil, dass ein Steuergerät j eweils genau f ür die auszuführenden Funktionen ausgelegt ist, d. h . hinsichtlich des bereitgestellten Speichers und der Rechenkapazität. Dies ist nachteilig, da somit Funktionen nur im Rahmen der bestehenden Hardwaregrenzen per Softwareupdate nachgerüstet werden können.
I n modernen Fahrzeugen werden daher zunehmend Universalsteuergeräte eingesetzt , die die Steuerung von mehreren Funktionen des Fahrzeugs
übernehmen. Dazu weisen die Universalsteuergeräte mehrere Rechenkerne auf , wobei einer oder mehrere der Rechenkerne j eweils unterschiedlichen Funktionen zugewiesen werden können. Auch können Speicherbereiche unterschiedlichen Funktionseinheiten zugewiesen werden .
Dadurch, dass mehrere Funktionen auf einem ( Universal) Steuergerät gebündelt werden, ist häuf iger notwendig , ein Steuergerät zu aktualisieren, d. h. die
Software zu aktualisieren. Die Universalsteuergeräte weisen unterschiedliche Partitionen auf , wobei auf eine der Partitionen ein Betriebssystem , wie z. B. ein Autosar OS-basiertes System , gespeichert ist , welches die Ausführung der weiteren Applikationen steuert. Auf einzelnen anderen Partitionen ist dann die jeweilige Applikation f ür eine Steuerfunktion des Steuergerätes gespeichert . Beispielsweise kann auf einer ersten Partition ein Autosar OS Betriebssystem gespeichert sein. Auf einer zweiten Partition kann die Software zur Steuerung der Querdynamik und auf einer dritten Partition kann die Software zur Steuerung einer Fahrerassistenzf unktion gespeichert sein.
Bevor eine Funktion aktualisiert wird, muss geprüft werden, ob die zu
aktualisierende Funktion sicherheitskritisch ist. I st dies der Fall, so m uss nach dem Aktualisieren eine Testfahrt mit einem Testfahrzeug ausgeführt werden. Dies nimmt viel Zeit in Anspruch und ist teuer.
Dieser Nachteil wird dadurch verstärkt, dass die bei Universalsteuergeräten eingesetzten Program miersprachen üblicherweise erfordern , sämtliche
Komponenten neu zu kompilieren, wenn sich auch nur eine Komponente ändert. Das bedeutet , dass häufig Programmabschnitte neu kompiliert werden , die nicht geändert sind. Dies f ührt zu einer Reihe von Testfahrten und Wartezeiten , die nicht notwendigerweise erforderlich wären .
Ausgehend von diesem Stand der Technik ist es daher Aufgabe der Erfindung, die Anzahl von notwendigen Testfahrten nach der Aktualisierung eines Steuergeräts zu reduzieren . Es ist insbesondere weiter Aufgabe der Erfindung, das
Aktualisieren von Steuergeräten zu beschleunigen. Es ist weiter insbesondere Aufgabe der Erf indung die beim Kompilieren benötige Rechenkapazität zu reduzieren.
Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 , ein computerlesbares Speichermedium nach Anspruch 1 0, ein Steuergerät nach Anspruch 1 1 und durch ein System nach Anspruch 12 gelöst
I nsbesondere wird die Aufgabe durch ein Verfahren zum Ausführen von
Programmkomponenten auf einem Steuergerät gelöst , insbesondere auf einem Steuergerät eines Fahrzeugs, bevorzugt eines PKWs, umfassend die folgenden Schritte:
Empfangen m indestens einer ersten Program meinheit und m indestens einer zweiten Program meinheit ; Erzeugen einer ersten und einer zweiten Proxydefinition, wobei eine
Proxydefinition einen Zugriff auf mindestens eine Funktion und/oder einen Speicherbereich einer Programmeinheit festlegt, wobei die erste
Proxydefinition der ersten Program meinheit und die zweite Proxydef inition der zweiten Programmeinheit zugeordnet ist ;
Kompilieren der ersten Programmeinheit und der zweiten Program meinheit zur Erzeugung einer ersten Programmkomponente, einer zweiten
Program mkomponente und Kompilieren der ersten und zweiten
Proxydefinition zur Erzeugung einer ersten und einer zweiten
Proxykomponente;
Ausfuhren der ersten Program mkomponente und der zweiten
Program mkomponente auf einem Steuergerät , wobei die erste
Program mkomponente mindestens eine Funktion der zweiten
Program mkomponente unter Verwendung der ersten und der zweiten
Proxykomponente aufruft und/oder verwendet.
Ein Kern der Erf indung ist , dass f ür die Programmeinheiten Proxydefinitionen erzeugt werden, die wiederum zu Proxykomponenten kompiliert werden. Unter Verwendung dieser Proxykomponenten können die erste und die zweite
Program mkomponente jeweils Funktionen der anderen Programmkomponente aufrufen . Die Schnittstelle zwischen der ersten und der zweiten
Program mkomponente wird also durch die erste und die zweite Proxykomponente gebildet. Bei einer Änderung nur einer Program mkomponente, bei der sich die Schnittstelle nicht ändert , kann daher auf ein Kompilieren der nicht geänderten Komponente verzichtet werden.
I n einer Ausführungsform können die erste und die zweite Program mkomponente als Binärdateien ausgebildet sein, die jeweils durch einen Rechenkern eines Steuergeräts ausführbar sein können .
Die erste und die zweite Program mkomponente können demnach einzelne
Binärdateien darstellen , die z. B. als I mages auf Partitionen des Steuergeräts gespeichert sein können und som it durch einen Rechenkern des einen
Steuergeräts ausführbar sind. Ein Rechenkern eines Steuergeräts kann im Rahmen dieser Anmeldung auch ein Prozessorkern eines Prozessors eines
Steuergeräts umfassen.
In einer Ausführungsform kann das Ausfuhren ein Ausfuhren der ersten
Programmkomponente und/oder der ersten Proxykomponente auf einem ersten Rechenkern des Steuergeräts und ein Ausfuhren der zweiten
Programmkomponente und/oder der zweiten Proxykomponente auf einem zweiten Rechenkern des Steuergeräts umfassen.
Es ist also möglich, dass unterschiedliche Rechenkerne unterschiedliche
Programmkomponenten ausführen. Dabei kann eine Zuordnung von einer
Programmkomponente zu einem Rechenkern dynamisch oder statisch festgelegt sein.
In einer Ausführungsform können die erste und/oder die zweite Programmeinheit Quellcode einer Programmiersprache, insbesondere embedded C, umfassen.
Embedded-C hat sich bei der hardwarenahen Programmierung von Steuergeräten bewährt. Somit wird eine leicht umzusetzende Implementierung angegeben.
In einer Ausführungsform können die erste und/oder die zweite Proxydefinition Adressen von Funktionen der ersten bzw. zweiten Programmkomponente angeben.
Besonders vorteilhaft zur Implementierung der Erfindung ist, wenn die
Proxydefinitionen Angaben darüber enthalten, über welche Speicheradressen Funktionen von Programmkomponenten aufrufbar sind. Ebenso vorteilhaft ist es, wenn die Proxydefinitionen Angaben über gemeinsam genutzte Speicherbereiche enthalten. Mit der beschriebenen Ausführungsform wird eine einfache Art angegeben, die Schnittstelle zwischen der ersten und der zweiten
Programmkomponente festzulegen.
In einer Ausführungsform kann das Verfahren die folgenden Schritte umfassen:
Empfangen einer dritten Programmeinheit, die hinsichtlich ihrer Schnittstellen der zweiten Programmeinheit entspricht; Kompilieren nur der dritten Program meinheit zur Erzeugung einer dritten Program m kom ponente;
Ausfuhren der ersten Program mkomponente und der dritten
Program mkomponente auf einem Steuergerät , wobei die dritte
Program mkomponente mindestens eine Funktion der ersten
Program mkomponente unter Verwendung der ersten und der zweiten Proxykomponente aufruft und/oder verwendet.
Bei der dritten Programmeinheit kann es sich z. B. um eine aktualisierte Version der zweiten Programmeinheit handeln , bei der sich die Schnittstellen nicht geändert haben. Es ist nun nicht notwendig , die erste Program meinheit neu zu kompilieren . Die dritte Program mkomponente kann unter Verwendung der ersten und zweiten Proxykomponenten auf die Funktionen und Speicherbereiche der ersten Program mkomponente zugreifen . , sodass auch diese nicht erneut erzeugt werden m üssen .
I n einer Ausführungsform kann das Kompilieren der dritten Program meinheit unter Verwendung eines Regelsatzes ausgef ührt werden, wobei der Regelsatz m indestens eine Regel umfassen kann , die angeben kann, ob für ein Kompilieren der dritten Program meinheit ein Kompilieren der ersten Programmeinheit notwendig ist.
Eine Regel kann Bedingungen angeben, wann einzelne Programmkomponenten bei Änderungen erneut kompiliert werden. So kann eine Regel in einer
Ausführungsform angeben, dass eine Program mkomponente neu kompiliert werden m uss, wenn sie eine Funktionsdefinition einer Funktion der
Programmkomponente geändert hat . Eine weitere mögliche Regel kann in einer Ausf ührungsform angeben , dass eine Programmkomponente neu kompiliert werden m uss, wenn sich die Größe eines gemeinsam genutzten Speicherbereichs (Shared Memory) geändert hat .
I n einer Ausf ührungsform kann die erste Programmkomponente ein
Betriebssystem für das Steuergerät umfassen und/oder die erste Komponente kann dazu ausgebildet sein, die Querdynam ik eines Fahrzeugs zu steuern und/oder die dritte Program mkomponente kann dazu ausgebildet sein , mindestens ein Fahrerassistenzsystem eines Fahrzeugs zu steuern . I n einer vorteilhaften Ausf ührungsform kann durch die Proxykomponenten die Kom munikation zwischen der Steuerung der Querdynamik und der Steuerung von mindestens einem Fahrerassistenzsystem ausgeführt werden .
Bei diesen häuf ig aktualisierten Komponenten kom men die vorstehend
beschriebenen Vorteile besonders zum Tragen , da eine häuf ige Aktualisierung sonst zu einer Kompilierung sämtlicher Komponenten f ühren würde, was viel Zeit kostet und weitere Testfahrten im Fahrzeug notwendig machen würde.
Die Aufgabe wird insbesondere ferner gelöst durch ein computerlesbares
Speichermedium , welches I nstruktionen enthält , die mindestens einen Prozessor dazu veranlassen , ein Verfahren, wie es vorstehend beschrieben ist , zu implementieren, wenn die I nstruktionen durch den mindestens einen Prozessor ausgef ührt werden .
Es ergeben sich ähnliche oder identische Vorteile, wie sie bereits im
Zusammenhang m it dem Verfahren beschrieben worden sind.
Die Aufgabe wird insbesondere ferner gelöst durch ein Steuergerät , das dazu ausgebildet ist, unter Verwendung einer nach dem vorstehend beschriebenen Verfahren erzeugten ersten Programmkomponente, einer zweiten
Program mkomponente und einer Proxykomponente Funktionen eines
angeschlossenen Fahrzeugs zu steuern .
Es ergeben sich ähnliche oder identische Vorteile, wie sie bereits im
Zusammenhang m it dem Verfahren beschrieben worden sind.
Die Aufgabe wird ferner insbesondere gelöst durch ein System , umfassend: ein Fahrzeug m it einem Steuergerät ; eine Rechnereinheit, die dazu ausgebildet ist : o m indestens eine erste Programmeinheit und mindestens eine zweite Program meinheit zu empfangen ; o eine erste und eine zweite Proxydef inition zu erzeugen, wobei eine Proxydefinition einen Zugriff auf m indestens eine Funktion und/oder einen Speicherbereich einer Program meinheit festlegt, wobei die erste Proxydefinition der ersten Program meinheit und die zweite
Proxydefinition der zweiten Program meinheit zugeordnet ist ; o die erste Programmeinheit und die zweite Programmeinheit zur
Erzeugung einer ersten Program mkomponente, einer zweiten Program mkomponente und einer ersten und einer zweiten
Proxykomponente zu kompilieren ; wobei das Steuergerät dazu ausgebildet ist die erste Program mkomponente und die zweite Programmkomponente auszuführen, wobei die erste
Program mkomponente mindestens eine Funktion der zweiten
Program mkomponente unter Verwendung der ersten und der zweiten
Proxykomponente aufruft und/oder verwendet.
Das System kann die vorstehend beschiedene Speichereinheit umfassen .
Es ergeben sich ähnliche oder identische Vorteile, wie sie bereits im
Zusammenhang m it dem Verfahren beschrieben worden sind.
Das System kann einige oder alle der vorherig beschriebenen Verfahrensschritte implementieren.
I m Folgenden wird die Erf indung anhand von Ausf ührungsbeispielen näher erläutert . Dabei zeigen
Figur 1 : eine schematische Darstellung eines Fahrzeugs;
Figur 2: eine schematische Darstellung von drei Rechenkernen eines
Steuergeräts;
Figur 3: eine schematische Darstellung von drei Program mkomponenten und der Komm unikation zwischen diesen ; Figur 4: eine schematisch Darstellung der Erzeugung von drei
Program mkomponenten unter Verwendung eines Regelsatzes; und
Figur 5: eine schematische Darstellung der Aktualisierung einer
Program m kom ponente.
I m Folgenden werden f ür gleiche oder gleichwirkende Teile dieselben
Bezugsziffern verwendet .
Figur 1 zeigt ein Fahrzeug 1 m it einem Steuergerät 2 und einem
Fahrerassistenzsystem 3 und einem Querdynam iksystem 4. Bei dem
Fahrerassistenzsystem 3 handelt es sich in dem vorliegenden Ausführungsbeispiel um eine Bremsautomatik, die das Fahrzeug 1 zum stehen bringt , wenn ein vorrausfahrendes Fahrzeug abrupt bremst . Bei dem Fahrerassistenzsystem 3 handelt es sich also um ein sicherheitskritisches System .
Das Querdynamiksystem 4 steuert Funktionen , die im Wesentlichen die
Querkräfte des Fahrzeugs 1 betreffen, wie z. B. die Lenkung .
Das Fahrerassistenzsystem 3 und das Querdynamiksystem 4 sind mit einem Steuergerät 2 komm unikativ verbunden. Beispielsweise können das Steuergerät 2, das Fahrerassistenzsystem 3 und das Querdynamiksystem 4 über einen
Fahrzeugbus, z. B. einen CAN-BUS, miteinander verbunden sein.
Bei dem Steuergerät 2 handelt es sich in dem gezeigten Ausführungsbeispiel um ein Universalsteuergerät 2, das eine Vielzahl von Prozessoren und eine
Speichereinrichtung aufweist. I n der Speichereinrichtung sind drei Partitionen vorgesehen, wobei eine Betriebssystempartition ein Autosar OS-basiertes
Betriebssystem speichert. Eine Fahrerassistenzpartition speichert
Programmkomponenten zur I mplementierung der gewünschten
Fahrerassistenzfunktion. I n diesem Ausf ührungsbeispiel also der Bremsautomatik. Eine Querdynam ikpartition speichert Program mkomponenten zur I mplementierung der Querdynamik.
Wenn eine neue Version der auf dem Steuergerät 2 ausgef ührten
Programmkomponenten installiert werden soll, wird das Steuergerät m it einem Entwicklungsrechner 5 drahtgebunden oder drahtlos verbunden . Bei dem Entwicklungsrechner 5 kann es sich auch um einen sogenannten Tester oder eine sonstige Einrichtung handeln, mit der Programmkomponenten auf das Steuergerät 2 aufgespielt werden können. In einem Ausführungsbespiel ist der
Entwicklungsrechner 5 als ein mobiles Endgerät ausgebildet, das drahtlos mit dem Steuergerät 2 verbunden ist.
Es ist auch möglich, dass das Steuergerät über ein Mobilfunk- oder WLAN-Modul verfügt, das kommunikativ mit dem Entwicklungsrechner 5 verbindbar ausgebildet ist.
Die Figur 2 zeigt den logischen Aufbau des Steuergeräts 2 im Detail. Das
Steuergerät 2 umfasst drei virtuelle Ausführungsumgebungen 10, 20, 30 zur Ausführung von Programmkomponenten. Jeder der Ausführungsumgebungen 10, 20, 30 sind jeweils Rechenkerne eines Prozessors des Steuergeräts 2 zugewiesen. So weist eine erste virtuelle Ausführungsumgebung 10 einen ersten Rechenkern 11 und einen zweiten Rechenkern 12 auf. Eine zweite virtuelle
Ausführungsumgebung 20 weist einen dritten Rechenkern 21 und einen vierten Rechenkern 22 auf. Eine dritte virtuelle Ausführungsumgebung 30 weist einen fünften Rechenkern 31 und einen sechsten Rechenkern 32 auf.
Die durch die entsprechenden Rechenkerne 11, 12, 21, 22, 31, 32 ausgeführten Programmkomponenten können über eine Hardwareebene 7 miteinander kommunizieren. Das bedeutet, die Hardwareebene 7 stellt Einrichtungen bereit, die es einer Programmkomponente, die durch den ersten Rechenkern 11 ausgeführt wird, erlauben eine Funktion einer Programmkomponente, die durch den dritten Rechenkern 21 ausgeführt wird, aufzurufen.
Die Figur 3 illustriert die Kommunikation zwischen den Programmkomponenten, die von unterschiedlichen Rechenkernen ausgeführt werden. Hierzu zeigt die Figur 3 die erste, die zweite und die dritte virtuelle Ausführungsumgebung 10,
20, 30. In dem Ausführungsbeispiel der Figur 3 kann in der ersten virtuellen Ausführungsumgebung 10 das Betriebssystem des Steuergeräts 2 ausgeführt werden. Die zweite virtuelle Ausführungsumgebung 20 kann in dem
Ausführungsbeispiel ein Fahrerassistenzsystem durch Programmkomponenten 23, 24 ausführen. Die dritte virtuelle Ausführungsumgebung 30 kann in dem
Ausführungsbeispiel die Querdynamik des Fahrzeugs 1 durch die
Programmkomponenten 33, 34 steuern. Wie ausgef ührt , kann es sich bei dem Fahrerassistenzsystem z. B. um eine automatische Bremsautomatik handeln . Beim Bremsen durch die Bremsautomatik kann es notwendig sein, dass auch die Querdynam ik von der Bremsautomatik gesteuert wird. Das bedeutet , die Bremsautomatik muss auf Funktionen der Querdynamik zugreifen. Zum Beispiel kann die Bremsautomatik eine Funktion , die durch die Program mkomponente 34 bereitgestellt wird, auf rufen .
Für einen solchen Funktionsaufruf sendet die Rechenkomponente 23 der ersten virtuellen Ausf ührungsumgebung 1 0 ein Signal S, welches über eine
Proxyschnittstelle 25 an eine weitere Proxys-Schnittstelle 13 der ersten virtuellen Ausf ührungsumgebung 1 0 zu einer internen Komm unikationseinheit 14
weitergeleitet wird. Von der internen Kom m unikationseinheit 14 aus wird das Signal S zu einer Proxy-Schnittstelle 1 5 geleitet , die wiederrum mit einer Proxy- Schnittstelle 35 der dritten virtuellen Ausf ührungsumgebung 30 kom munikativ verbunden ist. Die Proxy-Schnittstelle 35 initiiert dann den Funktionsauf ruf unter Verwendung des Signals S in der Programmkomponente 34.
Die Figuren 4 und 5 illustrieren das erstmalige Kompilieren der eben
beschriebenen Komponenten und das Aktualisieren einer einzelnen
Program m kom ponente.
Die Figur 4 zeigt zwei Programmeinheiten 8, 9, die in dem gezeigten
Ausführungsbeispiel Quellcodedateien embedded-C darstellen. Zum Erstellen von ausf ührbaren Program mkomponenten ist es notwendig den Quellcode zu kompilieren und unterschiedliche Programmkomponenten zu verlinken . Dazu wird eine Linker-Compilereinheit 40 verwendet. Die Linker-Compilereinheit 40 umfasst eine Proxy-Erzeugungseinheit 41 und einen Linker 42. Die Proxy- Erzeugungseinheit 41 ist dazu ausgebildet , Funktionsaufrufe und Zugriffe zwischen den Program meinheiten 8, 9 zu identif izieren . Aus diesen I nformationen generiert die Proxy- Erzeugungseinheit 41 Proxykomponenten 13, 25. Darüber hinaus werden die durch ein Steuergerät 2 ausführbaren Programmkomponenten 23, 24 generiert .
Die Figur 5 zeigt einen Fall, in dem die Program meinheit 9 aktualisiert wird.
Hierzu empfängt die Linker-Compilereinheit 40 eine aktualisierte Programmeinheit 9‘, bei der die I mplementierung einzelner Funktionen optim iert wurde. Die Schnittstellen und die Zugriffe auf andere Funktionen sind gleichgeblieben . Die Linker-Compilereinheit 40, dort insbesondere der Linker 42, analysiert die
Program meinheit 9‘ und vergleicht diese mit der bestehenden Programmeinheit 9.
Eine Regelspeichereinheit 50 speichert Regeln R1 -R4, die angeben, unter welchen Voraussetzungen es ausreicht, dass nur die Programmeinheit 9‘ kompiliert wird oder ob alle Program meinheiten 8, 9‘ erneut kompiliert werden müssen .
So gibt die Regel R1 beispielsweise an, dass alle Program meinheiten 8, 9‘ kompiliert werden m üssen , wenn die Program meinheit 9‘ die Größe von
gemeinsam genutzten Speicherbereichen - sog. shared memory - ändert.
Unter Verwendung der Regeln R1 - R4 und/oder der schon existierenden
Programmkomponenten 23, 24 und/oder der existierenden Proxykomponenten 25, 13 analysiert die Linker-Compilereinheit 40, ob nur die Programmeinheit 9‘ kompiliert werden muss. I n dem gezeigten Ausf ührungsbeispiel bestim mt die Linker-Compilereinheit 40, dass nur die Program meinheit 9‘ kompiliert werden muss, sodass eine neue Programmkomponente 24‘ erzeugt wird, die die bisherige Programmkomponente 24 ersetzt . Dabei ist die Program mkomponente 24‘ dazu ausgebildet, die Proxykomponente 25 zum Zugriff auf Funktionen und
Speicherbereiche der Programmkomponente 23 zu verwenden .
I nsgesamt muss nur eine einzige Program meinheit neu kompiliert werden. Dies reduziert die aufzubringende Rechenleistung, sodass das Programm schneller aktualisiert werden kann . Darüber hinaus ist es nicht notwendig, eine erneute Testfahrt m it einem Testfahrzeug durchzuführen , sofern es sich bei der neu kompilierten Komponente nicht um eine sicherheitskritische Komponente handelt . Dadurch können beachtliche Kosten eingespart werden .
Bezuaszeichenliste:
1 Fahrzeug
2 Steuergerät
3 Fahrerassistenzsystem
4 Querdynam iksystem
5 Entwicklungsrechner
6 Kompi lat/ Binärdateien
7 Hardwareebene 8, 9, 9‘ Programmeinheit
1 0 erste virtuelle Ausf ührungsumgebung
1 1 erster Rechenkern
12 zweiter Rechenkern
13, 1 5, 25, 35 Proxy-Schnittstelle
14 interne Komm unikationseinheit 20 zweite virtuelle Ausf ührungsumgebung 21 dritter Rechenkern
22 vierter Rechenkern
23, 24, 24‘, 33, 34 Program m kom ponente
30 dritte virtuelle Ausführungsumgebung
31 f ünfter Rechenkern
32 sechster Rechenkern
40 Linker-Compilereinheit
41 Proxy erzeug ungsein heit
42 Linker
50 Regelspeichereinheit
R1 - R4 Regel
S Signal

Claims

Ansprüche
1. Verfahren zum Ausfuhren von Programmkomponenten (23, 24, 33, 34) auf einem Steuergerät (2), insbesondere auf einem Steuergerät (2) eines Fahrzeugs (1), bevorzugt eines PKWs (1), umfassend die folgenden
Schritte:
Empfangen mindestens einer ersten Programmeinheit (8) und mindestens einer zweiten Programmeinheit (9, 9‘);
Erzeugen einer ersten und einer zweiten Proxydefinition, wobei eine Proxydefinition einen Zugriff auf mindestens einer Funktion und/oder einen Speicherbereich einer Programmeinheit (8, 9, 9‘) festlegt, wobei die erste Proxydefinition der ersten Programmeinheit (8) und die zweite Proxydefinition (9) der zweiten Programmeinheit (9, 9‘) zugeordnet ist;
Kompilieren der ersten Programmeinheit (8) und der zweiten Programmeinheit (9, 9‘) zur Erzeugung einer ersten
Programmkomponente (23) und Kompilieren einer zweiten Programmkomponente (24) und einer ersten und einer zweiten
Proxykomponente (13, 25);
Ausfuhren der ersten Programmkomponente (23) und der zweiten Programmkomponente (24) auf einem Steuergerät (2), wobei die erste Programmkomponente (23) mindestens eine Funktion der zweiten Programmkomponente (24) unter Verwendung der ersten und der zweiten Proxykomponente (13, 25) aufruft und/oder verwendet.
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet, dass
die erste und die zweite Programmkomponente (23, 24) als Binärdateien ausgebildet sind, die jeweils durch einen Rechenkern (11, 12, 21 , 22, 31 , 32) eines Steuergeräts (2) ausführbar sind.
3. Verfahren einem der vorhergehenden Ansprüche
dadurch gekennzeichnet, dass
das Ausführen ein Ausführen der ersten Programmkomponente (23) und/oder der ersten Proxykomponente (25) auf einem ersten Rechenkern (11, 12, 21, 22, 31, 32) des Steuergeräts (2) und ein Ausführen der zweiten Programmkomponente (24) und/oder der zweiten Proxykomponente (13) auf einem zweiten Rechenkern (11, 12, 21, 22,
31, 32) des Steuergeräts umfasst.
4. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet, dass
die erste und/oder die zweite Programmeinheit (8, 9) Quellcode einer Programmiersprache, insbesondere embedded C, umfassen.
5. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet, dass
die erste und/oder die zweite Proxydefinition Adressen von Funktionen der ersten bzw. zweiten Programmkomponente (8, 9) angeben.
6. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet, dass
die erste und/oder die zweite Proxydefinition gemeinsam genutzte Speicherbereiche der ersten bzw. zweiten Programmkomponente (8, 9) angeben.
7. Verfahren nach einem der vorhergehenden Ansprüche,
gekennzeichnet durch
Empfangen einer dritten Programmeinheit (9‘), die hinsichtlich ihrer Schnittstellen der zweiten Programmeinheit (9) entspricht;
Kompilieren nur der dritten Programmeinheit (9‘) zur Erzeugung einer dritten Programmkomponente (24‘);
Ausführen der ersten Programmkomponente (23) und der dritten Programmkomponente (24‘) auf einem Steuergerät (2), wobei die dritte Programmkomponente (24‘) mindestens eine Funktion der ersten Programmkomponente (23) unter Verwendung der ersten und der zweiten Proxykomponente (25, 13) aufruft und/oder verwendet.
8. Verfahren nach einem der vorhergehenden Ansprüche, insbesondere nach Anspruch 7,
dadurch gekennzeichnet, dass
das Kompilieren der dritten Programmeinheit (9‘) unter Verwendung eines Regelsatzes ausgeführt wird, wobei der Regelsatz mindestens eine Regel (R1, R2, R3, R4) umfasst, die angibt, ob für ein Kompilieren der dritten Programmeinheit (9‘) ein Kompilieren der ersten Programmeinheit (8) notwendig ist.
9. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet, dass
die erste Programmkomponente (23) ein Betriebssystem für das
Steuergerät (2) umfasst und/oder die erste Komponente (23) dazu ausgebildet ist, eine Querdynamik eines Fahrzeugs (1) zu steuern und/oder die zweite und/oder die dritte Programmkomponente (24, 24‘) dazu ausgebildet ist, mindestens ein Fahrerassistenzsystem eines Fahrzeugs (1) zu steuern.
10. Computerlesbare-Speichermedium, welches Instruktionen enthält, die mindestens einen Prozessor dazu veranlassen, ein Verfahren nach einem der vorhergehenden Ansprüche zu implementieren, wenn die Instruktionen durch den mindestens einen Prozessor ausgeführt werden.
11. Steuergerät (2), das dazu ausgebildet ist, unter Verwendung einer nach Anspruch 1 erzeugten ersten Programmkomponente (23), einer zweiten Programmkomponente (24) und mindestens einer Proxykomponente (13, 25) Funktionen eines angeschlossenen Fahrzeugs (1) zu steuern.
12. System, umfassend:
ein Fahrzeug (1) mit einem Steuergerät (2);
eine Rechnereinheit, die dazu ausgebildet ist:
o mindestens eine erste Programmeinheit (8) und mindestens eine zweite Programmeinheit (9, 9‘) zu empfangen;
o eine erste und eine zweite Proxydefinition zu erzeugen, wobei eine Proxydefinition einen Zugriff auf mindestens einer
Funktion und/oder einen Speicherbereich einer Programmeinheit festlegt, wobei die erste Proxydefinition der ersten Programmeinheit (8) und die zweite Proxydefinition der zweiten Programmeinheit (9, 9‘) zugeordnet ist;
o die erste Programmeinheit (8) und die zweite Programmeinheit (9, 9‘) zur Erzeugung einer ersten Programmkomponente (23), einer zweiten Programmkomponente (24, 24‘) und einer ersten und einer zweiten Proxykomponente (13, 25) zu kompilieren; wobei das Steuergerät (2) dazu ausgebildet ist die erste
Programmkomponente (23) und die zweite Program mkomponente (24) auszuf ühren , wobei die erste Programmkomponente (23) m indestens eine Funktion der zweiten Programmkomponente (24) unter Verwendung der ersten und der zweiten Proxykomponente ( 13, 25) aufruft und/oder verwendet .
PCT/EP2019/052315 2019-01-31 2019-01-31 Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system Ceased WO2020156668A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US17/299,150 US11416227B2 (en) 2019-01-31 2019-01-31 Method for executing program components on a control unit, a computer-readable storage medium, a control unit and a system
PCT/EP2019/052315 WO2020156668A1 (de) 2019-01-31 2019-01-31 Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system
CN201980073896.7A CN112969999B (zh) 2019-01-31 2019-01-31 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统
DE112019006805.9T DE112019006805A5 (de) 2019-01-31 2019-01-31 Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2019/052315 WO2020156668A1 (de) 2019-01-31 2019-01-31 Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system

Publications (1)

Publication Number Publication Date
WO2020156668A1 true WO2020156668A1 (de) 2020-08-06

Family

ID=65276159

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2019/052315 Ceased WO2020156668A1 (de) 2019-01-31 2019-01-31 Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system

Country Status (4)

Country Link
US (1) US11416227B2 (de)
CN (1) CN112969999B (de)
DE (1) DE112019006805A5 (de)
WO (1) WO2020156668A1 (de)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000050238A (ko) * 2000-05-30 2000-08-05 김호광 다수의 운영시스템에서 실행 가능한 프로그램 제작 시스템및 방법
US6973646B1 (en) * 2000-07-21 2005-12-06 International Business Machines Corporation Method for compiling program components in a mixed static and dynamic environment
US7433813B1 (en) * 2004-05-20 2008-10-07 Xilinx, Inc. Embedding a co-simulated hardware object in an event-driven simulator
US20060123401A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
US8533692B2 (en) * 2005-12-30 2013-09-10 Sap Ag Dynamic software enhancement parameters
US8122440B1 (en) * 2007-09-26 2012-02-21 Netapp, Inc. Method and apparatus for enumerating external program code dependencies
CN101441566B (zh) * 2008-11-18 2012-04-25 腾讯科技(深圳)有限公司 一种在嵌入式平台上动态链接程序的方法
US8464230B2 (en) * 2010-04-13 2013-06-11 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces
US8776094B2 (en) * 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
KR102375349B1 (ko) * 2014-09-02 2022-03-16 아브 이니티오 테크놀로지 엘엘시 연관된 태스크들을 제어하기 위한 그래프 기반 프로그램 명세의 구성요소들의 실행 상태 관리
EP3001313A1 (de) * 2014-09-23 2016-03-30 dSPACE digital signal processing and control engineering GmbH Verfahren zur Simulation eines Anwendungsprogramms eines elektronischen Steuergeräts auf einem Computer
US20160164881A1 (en) * 2014-12-03 2016-06-09 Ford Global Technologies, Llc Remote vehicle application permission control and monitoring
US20160239275A1 (en) * 2015-01-30 2016-08-18 Hcl Technologies Limited Generating an integrated service
US11228569B2 (en) * 2016-03-01 2022-01-18 Ford Global Technologies, Llc Secure tunneling for connected application security
GB2554349B (en) * 2016-09-13 2018-10-17 Imagination Tech Ltd Build-time memory manangement for multi-core embedded system
CN107193748A (zh) * 2017-06-01 2017-09-22 网易(杭州)网络有限公司 程序文件执行方法、装置、存储介质和处理器
CN108228185B (zh) * 2017-12-29 2021-11-23 北京经纬恒润科技股份有限公司 一种嵌入式软件模块化生成方法和装置
CN108874727B (zh) * 2018-05-29 2019-09-10 中国人民解放军国防科技大学 一种面向gpdsp的多核并行计算实现方法
US10681165B2 (en) * 2018-09-11 2020-06-09 Palantir Technologies Inc. System architecture for enabling efficient inter-application communications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LEO BERNHARD GEISSMANN ET AL: "Separate Compilation in Modula-2 and the Structure of the Modula-2 Compiler on the Personal Computer Lilith", 1 January 1983 (1983-01-01), Zurich, pages 1 - 126, XP055629430, Retrieved from the Internet <URL:https://www.cfbsoftware.com/modula2/ETH7286.pdf> [retrieved on 20191007] *

Also Published As

Publication number Publication date
CN112969999B (zh) 2024-09-17
US11416227B2 (en) 2022-08-16
US20220050668A1 (en) 2022-02-17
CN112969999A (zh) 2021-06-15
DE112019006805A5 (de) 2021-11-04

Similar Documents

Publication Publication Date Title
DE112012007250B4 (de) Fahrzeuginterne Vorrichtung und Programm
WO2013171122A2 (de) Funktional erweiterbares fahrzeugsteuergerät und verfahren zum ergänzen der funktionalität eines fahrzeugsteuergeräts
DE102018206808A1 (de) Steuerungssystem für ein Kraftfahrzeug zum Koordinieren und Ausführen von Kundenfunktionen, Verfahren zum Betreiben eines derartigen Steuerungssystems sowie Kraftfahrzeug mit einem derartigen Steuerungssystem
DE102017100118A1 (de) Skalierbares Steuersystem für ein Kraftfahrzeug
DE102010039021B4 (de) Verfahren zur Rekonfiguration von Softwareparametern in einem Mikrocontroller sowie Mikrocontroller und Steuergerät
EP1828886A1 (de) Verfahren zum initialisieren eines elektronischen systems umfassend mehrere plug-ins
EP3353650B1 (de) System und verfahren zur verteilung und/oder aktualisierung von software in vernetzten steuereinrichtungen eines fahrzeugs
DE10208866A1 (de) Einrichtung und Verfahren zur Beurteilung und Erzielung von Sicherheit bei Systemen sowie entsprechendes Computerprogramm
DE102013201031A1 (de) Verfahren zur Inbetriebnahme zumindest eines Funktionsgeräts und Schienenfahrzeugsverband
WO2017125181A1 (de) Verfahren zum aktualisieren von software eines steuergerätes, vorzugsweise für ein kraftfahrzeug
WO2020156668A1 (de) Verfahren zum ausführen von programmkomponenten auf einem steuergerät, ein computerlesbares-speichermedium, ein steuergerät und ein system
EP1665031A2 (de) Verfahren zur installation einer programmkomponente
EP2126700B1 (de) Steuerung des laufzeitverhaltens von prozessen
EP4266231B1 (de) Verfahren zum betreiben einer steuervorrichtung für ein kraftfahrzeug
EP1748360B1 (de) System und Verfahren zum Ausführen eines parallelisierten Softwareupdates
DE112022005984T5 (de) Aktualisierungsmanagementsystem
DE112022004735T5 (de) Fahrzeugsystem
WO2019091519A1 (de) Steuergerät für ein kraftfahrzeug und verfahren zum betreiben des steuergeräts
DE102004012315A1 (de) Verfahren zur automatischen Anpassung von Software
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
DE102024109201B3 (de) Verfahren zum Betreiben eines Kraftfahrzeugs
DE102019134872B4 (de) Verbesserung der Betriebsparameter eines Rechensystems im Fahrzeug
DE102023208876A1 (de) Ein Verfahren zum Aktualisieren einer Anwendung einer elektronischen Kraftfahrzeug-Steuereinheit
DE102018207175A1 (de) Verfahren und Vorrichtung zum Aktivieren von Tasks in einem Betriebssystem
DE102022211737A1 (de) Verfahren zum Ermitteln von Regeln für eine Überwachungsvorrichtung

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19702860

Country of ref document: EP

Kind code of ref document: A1

REG Reference to national code

Ref country code: DE

Ref legal event code: R225

Ref document number: 112019006805

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19702860

Country of ref document: EP

Kind code of ref document: A1