-
Die Erfindung betrifft ein Steuergerät, insbesondere ein sicherheitsrelevantes Steuergerät, für Kraftfahrzeuge, ein Kraftfahrzeug mit einem solchen Steuergerät sowie ein Verfahren zum Aktualisieren eines Steuergeräts. Ferner betrifft die Erfindung ein Verfahren zum Bereitstellen eines Steuergeräts für ein Kraftfahrzeug.
-
Funktionale Sicherheit spielt bei Kraftfahrzeugen eine wesentliche Rolle, um einen sicheren Betrieb des Kraftfahrzeugs zu gewährleisten. Dazu wurden Standards wie beispielsweise die ISO 26262 für elektrische Komponenten und Steuergeräte eines Kraftfahrzeugs entwickelt, um mittels besonderer Sicherheitsmaßnahmen Fehlfunktionen zu vermeiden. Dabei erfolgt eine projektbezogene Risikobewertung und auf Basis dieser Risikobewertung eine Einstufung in eine bestimmte Sicherheitsanforderungsstufe, beispielsweise nach aufsteigendem Risiko ASIL A, B, C, D und andernfalls QM, falls im letzteren Fall das Risiko als gering eingestuft wird und so das elektrische System ohne besondere Maßnahmen auskommt. Diese Einstufungen sind fallbezogen und müssen für jedes Projekt einzeln bewertet werden. Die Anforderungen hinsichtlich funktionaler Sicherheit können dabei sowohl an Hardwarekomponenten als auch an Softwarekomponenten gestellt werden.
-
In Antriebskonzepten bei Steuergeräten von Kraftfahrzeugen sind Programme für die Funktionsebene und für die funktionale Sicherheitsebene in einem gemeinsamen File zusammengefasst. Das hat jedoch zur Folge, dass bei einem Update, das heißt bei einer Aktualisierung, der Funktionsanteile aufgrund der nicht gewährleisteten Querwirkungsfreiheit auch der Überwachungsanteil als geändert betrachtet werden muss, auch wenn keine Änderung im jeweiligen Anteil durch das Update geplant ist. Dadurch müssen jedoch aufwendige Freigabetests zum Nachweis der funktionalen Sicherheit in diesen Teilen des Programms wiederholt werden. Das löst enorme Kosten und Projektverzögerungen aus, da der Freigabeaufwand und Programmieraufwand deutlich ansteigt. Insbesondere ergeben sich dadurch Nachteile beim Over-the-Air-Update von Kraftfahrzeugen.
-
In der
DE 10 2013 226 872 A1 wird ein Verfahren zum Betreiben eines Steuergeräts für ein Kraftfahrzeug beschrieben, in welchem zur Vererbung geeignete Programmteile einer sicherheitsrelevanten Funktion in einer zusätzlichen Speicherpartition gespeichert werden können, welche die Rechte eines aufrufenden Programmteiles erben können. Dadurch können sich die Programmteile unterschiedlicher Sicherheitsklassifikation während des Ablaufes nicht beeinflussen.
-
In der
DE 10 2014 212 018 A1 wird ein Verfahren zur Vermeidung von Speicherschutzverletzungen beschrieben. Dabei werden Zugriffe eines in einem Programmspeicher gespeicherten Programms auf einen für die Zugriffe freigegebenen Datenspeicher in Abhängigkeit einer Sicherheitsanforderungsstufe des Datenspeichers und einer Sicherheitsanforderungsstufe des Programms vorgenommen.
-
In der
US 2019/0258812 A1 wird ein Gerät bereitgestellt, welches einen einzigen Speicher aufweist, welcher dynamisch partitioniert wird zur Ausführung von verschiedenen Programmfunktionen auf den Partitionen, ohne dass separate Speicher vorgesehen werden müssen.
-
Der Erfindung liegt nun die Aufgabe zugrunde, ein Steuergerät für ein Kraftfahrzeug bereitzustellen, welches bei geringerem Freigabeaufwand und geringeren Kosten selektiv aktualisierbar ist. Ferner besteht eine Aufgabe darin, das Aktualisieren von Programmen der funktionalen Sicherheit und das Over-the-Air-Update zu erleichtern.
-
In bevorzugter Ausgestaltung der Erfindung ist ein Steuergerät, insbesondere ein sicherheitsrelevantes Steuergerät, für ein Kraftfahrzeug bereitgestellt, umfassend: einen Prozessor eingerichtet zum Ausführen eines Programms und einen Speicher. Das Programm ist zum Betrieb einer Fahrzeugkomponente ausgebildet und umfasst eine Vielzahl von Teilprogrammen. Das Steuergerät ist dadurch gekennzeichnet, dass die Teilprogramme jeweils in einem voneinander unabhängigen Erstellungsprozess erzeugt sind und diese so erzeugten Teilprogramme auf jeweils unterschiedlichen Speicherpartitionen zum Ausführen gespeichert sind.
-
Der Erstellungsprozess ist mit anderen Worten ein Buildprozess. Der Erstellungsprozess umfasst das Kompilieren eines Quellcodes in ein Programm, welches maschinen-lesbare Codes beziehungsweise Instruktionen aufweist und von dem Prozessor ausgeführt werden kann. Ferner kann der Erstellungsprozess das Verlinken zu Bibliotheken umfassen.
-
Speicherpartitionen sind mit anderen Worten getrennte beziehungsweise unabhängige Speicherbereiche eines Speichers. Durch den unabhängigen Erstellungsprozess ergibt sich, dass die Teilprogramme binär unabhängig, das heißt eigenständig voneinander ausführbar sind. Ferner können die Programme beziehungsweise Teilprogramme ein Prozess oder Thread sein, der auf dem Prozessor des Steuergeräts läuft, bei welchen Programmanweisungen ausgeführt und mit anderen Systemkomponenten interagieren, um die verschiedenen Funktionalitäten zu beschreiben. Die Teilprogramme beziehungsweise deren Instruktionen können in einem Speicher gespeichert sein, der in dem Steuergerät implementiert ist. Hierbei kann eine gewöhnliche Speichervorrichtung verwendet werden, wie beispielsweise ein Direktzugriffsspeicher, RAM. Die Teilprogrammanweisungen können auch auf anderen nichtflüchtigen computerlesbaren Medien gespeichert werden. Eine Fahrzeugkomponente kann dabei eine Fahrzeughardware oder aber auch eine Fahrzeugfunktion sein, wobei der Betrieb beispielsweise das Steuern, Auswerten, Regeln und Überwachen umfasst. Zusätzliche Anwendungen sind weiter unten ausgeführt.
-
Durch den getrennten beziehungsweise unabhängigen Erstellungsprozess sind die Teilprogramme binär unabhängig voneinander, was eine unmittelbare Folge des separaten Erstellungs- beziehungsweise Buildprozesses ist. Im Vergleich zum Stand der Technik wird somit nicht ein gesamtes Programm kompiliert, sondern Teilprogramme werden getrennt und einzeln kompiliert. Als technische Folge ergibt sich, dass die Teilprogramme unabhängig voneinander aktualisiert beziehungsweise upgedated werden können. Ferner kann die Entwicklungsgeschwindigkeit durch die separaten Erstellungsprozesse erhöht werden. Insbesondere kann der Aufwand für Freigabetests von sicherheitsrelevanten Teilprogrammen verringert werden, da bestehende Freigabetests der nicht-aktualisierten Teilprogramme als unmittelbare Folge der binären Unabhängigkeit beibehalten werden können. Ferner kann durch die getrennten Speicherpartitionen freedom of interference, das heißt Rückwirkungsfreiheit, erreicht werden, da ein Teilprogramm keine Speicherzellen von anderen Speicherpartitionen direkt beschreiben kann. Der Zugriff auf diese Speicherpartitionen kann von dem Prozessor gesteuert werden. Insbesondere ein Over-the-Air-Update wird bei einem solchen Steuergerät vereinfacht und Entwicklungsprozesse können beschleunigt werden.
-
Bevorzugt weisen wenigstens zwei der Teilprogramme eine voneinander unterschiedliche Sicherheitsanforderungsstufe auf. Dadurch ist es mit dem Steuergerät ermöglicht, dass weniger sicherheitskritische oder sicherheitsunkritische Teilprogramme aktualisiert werden können, ohne dass sicherheitsrelevante Teilprogramme verändert werden, was eine Folge der binären Unabhängigkeit ist. Die Freigaben für die sicherheitsrelevanten Teilprogramme können beibehalten werden, wenn weniger kritische oder sicherheitsunkritische Teilprogramme aktualisiert werden, wodurch ein Freigabeaufwand verringert wird. Ein Freigabetest ist dabei ein Test, ob eine geforderte Sicherheitsanforderungsstufe erfüllt ist. Sicherheitsunkritisch bedeutet, dass das Teilprogramm weniger oder keine zusätzlichen Sicherungsmechanismen benötigt. Bevorzugt weisen entsprechende Teilprogramme eine höhere Sicherheitsanforderungsstufe als andere Teilprogramme auf. Beispielsweise kann ein erstes Teilprogramm eine ASIL-Sicherheitsanforderungsstufe aufweisen, zum Beispiel ASIL A, B, C oder D, während ein zweites Teilprogramm lediglich einer Sicherheitsanforderungsstufe QM entspricht. Die Sicherheitsanforderungsstufen können gemäß ISO 26262 für sicherheitsrelevante elektrische/elektronische Systeme in Kraftfahrzeugen vergeben werden, wobei dies nur ein Beispiel ist.
-
Bevorzugt können die Teilprogramme durch ein Schnittstellenmodul verbunden sein. Die Verbindung kann dabei beim Erstellungsprozess generiert werden. Das Schnittstellenmodul stellt eine Kommunikationsebene dar. Dadurch können die unabhängig kompilierten Teilprogramme in Laufzeit miteinander über Schnittstellen kommunizieren, das heißt Daten beziehungsweise Werte zu definierten Zeitpunkten im Ablauf übergeben. Das Schnittstellenmodul erzeugt somit definierte Ein- und Ausgänge in den getrennt erzeugten und somit binär unabhängigen Teilprogrammen. In bevorzugter Ausführungsform ist das Schnittstellenmodul ein Manifest-Wrapper. Der Manifest-Wrapper kann auch nach extern kommunizieren.
-
Bevorzugt ist der Prozessor dazu eingerichtet, Folgendes zu tun: Erhalten einer Aktualisierung; Bestimmen, in Antwort auf den Erhalt der Aktualisierung, zumindest eines zu aktualisierenden Teilprogramms aus der Vielzahl der Teilprogramme und Aktualisieren des bestimmten Teilprogramms, ohne die nicht-bestimmten Teilprogramme zu verändern. Das Aktualisieren kann in einem vollständigen Ersetzen des ausgewählten Teilprogramms bestehen. Alternativ kann zumindest ein Teil des Teilprogramms aktualisiert werden. Der Vorteil ist hierbei, dass selektiv Teilprogramme aktualisiert werden können, ohne dass andere Teilprogramme verändert werden. Eine Aktualisierung kann auch als Aktualisierungsdaten bezeichnet werden.
-
Die erhaltene Aktualisierung kann einen Identifikator umfassen und der Prozessor kann dazu eingerichtet sein, auf Basis des erhaltenen Identifikators wenigstens ein Teilprogramm aus der Vielzahl der Teilprogramme zu bestimmen. Der Identifikator stellt mit anderen Worten eine Kennung dar. Mit dieser Kennung können dazu passende Teilprogramme bestimmt werden und dann nur dieses oder diese Teilprogramme in Folge aktualisiert werden. Die Bestimmung kann beispielsweise durch Abgleich mit vorgespeicherten Paaren aus Identifikator und dem zugehörigen Teilprogramm erfolgen, mit welchen dann der empfangene Identifikator verglichen wird zur Bestimmung des zugehörigen zu aktualisierenden Teilprogramms.
-
Der Prozessor kann dazu eingerichtet sein, Freigabetests von nicht-bestimmten Teilprogrammen beizubehalten. Solche Freigabetests zur Prüfung der Erfüllung der funktionalen Sicherheit können sehr aufwendig und zeitintensiv sein. Somit kann der Freigabeaufwand stark reduziert werden, da Freigabetests für sicherheitskritische Teilprogramme sehr aufwendig sind, jedoch durch die binäre Unabhängigkeit nicht für die nicht-ausgewählten Teilprogramme wiederholt werden müssen.
-
Der Prozessor ist bevorzugt eingerichtet, die Vielzahl der Teilprogramme gemäß eines vorgegebenen Plans auszuführen. Mittels der Schnittstellenmodule kann somit ein gemeinsames Programm, welches sich aus den Teilprogrammen zusammensetzt, ausgeführt werden. Der Plan legt dabei eine bestimmte Ausführreihenfolge fest. Zudem kann die Übergabe von Werten an die Teilprogramme über die Schnittstellenmodule vorgegeben werden.
-
Die Teilprogramme sind bevorzugt von der Hardware-Peripherie des Steuergeräts getrennt. Mit anderen Worten sind die Teilprogramme hart getrennt von der Hardware-Peripherie, letztere beispielsweise umfassend Eingabe- und Ausgabeeinheiten oder zum Beispiel ASICs. Dadurch können Interferenzen vermieden und die Performanz der Teilprogramme verbessert werden.
-
Wenigstens ein erstes Teilprogramm kann bevorzugt zur Überwachung der Fahrzeugkomponente und ein zweites Teilprogramm zur Steuerung, Diagnose und/oder Auswertung der Fahrzeugkomponente ausgebildet sein. Als Fahrzeugkomponenten kommen verschiedene, im Folgenden beschriebene Komponenten in Betracht. Bevorzugt sind die Teilprogramme zur Auswertung einer Hardware des Kraftfahrzeugs, zur Ansteuerung einer Hardware des Kraftfahrzeugs oder zum Bereitstellen einer Funktion zum Betrieb des Kraftfahrzeugs ausgebildet. Die Teilprogramme dienen somit dem Betrieb des Kraftfahrzeugs. Die Teilprogramme enthalten somit Funktionen zum Betrieb des Kraftfahrzeugs, das heißt zur Überwachung, Steuerung beziehungsweise Regelung, Auswertung von bestimmten Hardwareeinrichtungen oder Fahrerfunktionen des Kraftfahrzeugs.
-
Die angesteuerte Hardware kann eine Kühlmittelpumpe, ein Kühlerrollo, einen Kühlerlüfter, ein Hauptrelais, eine E-Maschine, einen DC-DC-Wandler oder eine Hochvoltbatterie umfassen. Die ausgewertete Hardware kann ein CAN, eine Hardwareklemme, ein Multifunktionslenkrad, ein elektrischer Bremskraftverstärker, ein Kühlmitteltemperatursensor, ein Fahrpedal oder ein Wählhebel sein. Eine Funktion des Kraftfahrzeugs kann eine Fahrerwunsch-Erfassung, eine Fahrerwunsch-Formung, eine Rekuperation, eine Momentaufteilung auf verschiedene Maschinen, eine Antriebsstrangaktivierung, ein elektrisches Thermomanagement oder eine Fahrprogrammauswahl sein.
-
Die Teilprogramme können bevorzugt jeweils eine Tuningschutz-Kennzeichnung aufweisen. Dadurch können die Teilprogramme vor unerwünschter Manipulation geschützt werden. Eine Tuningschutzeinrichtung kann dazu bereitgestellt sein, zum Beispiel als Teil des Prozessors oder auch separat, welche die Unveränderlichkeit überprüfen beziehungsweise überwachen kann. Als Mittel zur Kennzeichnung kann zum Beispiel eine Checksumme oder ein Hash verwendet werden.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren zum Aktualisieren eines Steuergeräts für ein Kraftfahrzeug gemäß eines der oben ausgeführten Ausführungsformen. Das Verfahren umfasst die Schritte des Erhaltens einer Aktualisierung, das Auswählen beziehungsweise Bestimmen, in Antwort auf die erhaltene Aktualisierung, eines (oder mehrerer) zu aktualisierender Teilprogramme und dann das Aktualisieren des ausgewählten beziehungsweise bestimmten Teilprogramms, ohne die nicht-ausgewählten beziehungsweise nicht-bestimmten Teilprogramme zu verändern. Dadurch wird ein selektives Aktualisierungsverfahren offenbart, welches erlaubt, gezielte Teilprogramme zu aktualisieren, ohne dass die anderen Teilprogramme verändert werden müssen. Dies gelingt durch die binäre Trennung der Teilprogramme als Folge des unabhängigen Erstellungsprozesses. Der Aufwand zum Aktualisieren wird deutlich reduziert. Das Aktualisieren kann den kompletten Austausch eines Teilprogramms oder eines Teils davon umfassen. Das Verfahren kann als ein Over-the-Air-Update durchgeführt werden, das heißt, die Aktualisierung kann über eine Kommunikationsschnittstelle, zum Beispiel eine Funkschnittstelle des Steuergeräts oder des Kraftfahrzeugs, empfangen werden.
-
Ferner umfasst das Verfahren das Beibehalten von Freigabetests des nicht-ausgewählten Teilprogramms. Freigabetests sind Tests, welche überprüfen, ob die geforderte Sicherheitsanforderungsstufe erfüllt ist. Solche Freigabetests können sehr aufwendig und zeitintensiv sein. Somit kann der Freigabeaufwand stark reduziert werden, da Freigabetests für sicherheitskritische Funktionen sehr aufwendig sind, jedoch durch die binäre Unabhängigkeit nicht für die nicht-ausgewählten Teilprogramme wiederholt werden müssen.
-
Ferner umfasst das Verfahren das Übertragen einer Änderungsinformation über das Aktualisieren eines Teilprogramms an eine Tuningschutzeinrichtung. Dadurch kann die Aktualisierung von der Tuningschutzeinrichtung als erlaubte Änderung akzeptiert werden.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren zum Bereitstellen eines Steuergeräts für ein Kraftfahrzeug, welches einen Prozessor eingerichtet zum Ausführen eines Programms zum Betrieb einer Fahrzeugkomponente des Kraftfahrzeugs, welches eine Vielzahl von Teilprogrammen umfasst, und einen Speicher umfasst, umfassend die Schritte: Erstellen einer Vielzahl von Teilprogrammen in einem voneinander unabhängigen Erstellungsprozess. In einem weiteren Schritt erfolgt das Speichern dieser so erzeugten Teilprogramme in jeweils unterschiedlichen Speicherpartitionen zum Ausführen durch den Prozessor. Die Vorteile dazu sind bereits oben beschrieben und es wird auf den obigen Abschnitt verwiesen.
-
Bevorzugt umfasst das Verfahren das Verbinden der Teilprogramme durch ein Schnittstellenmodul während des Erstellens der jeweiligen Teilprogramme. Das Schnittstellenmodul umfasst dabei definierte Schnittstellen, über welche die Teilprogramme verbunden werden. Dadurch wird eine definierte Kommunikationsebene zwischen den Teilprogrammen erzeugt. So können zum Beispiele Werte und Daten über das Schnittstellenmodul ausgetauscht werden. Dadurch kann ein robuster Programmablauf für die Teilprogramme erfolgen.
-
Ein weiterer Aspekt der Erfindung ist ein Kraftahrzeug, welches ein Steuergerät nach einem der oberen Ausführungen umfasst. Die oben genannten Vorteile gelten auch für das Kraftfahrzeug, wobei insbesondere ein verbessertes Over-the-Air-Update erfolgt, da selektiv Teilprogramme des Steuergeräts aktualisiert werden können.
-
Weitere bevorzugte Ausgestaltungen der Erfindung ergeben sich aus den übrigen, in den Unteransprüchen genannten Merkmalen.
-
Die verschiedenen in dieser Anmeldung genannten Ausführungsformen der Erfindung sind, sofern im Einzelfall nicht anders ausgeführt, mit Vorteil miteinander kombinierbar.
-
Die Erfindung wird nachfolgend in Ausführungsbeispielen anhand der zugehörigen Zeichnungen erläutert. Es zeigen:
- 1 ein Steuergerät für ein Kraftfahrzeug gemäß einer Ausführungsform der Erfindung,
- 2 ein Verfahren zum Aktualisieren eines Steuergeräts gemäß einer Ausführungsform der Erfindung und
- 3 ein Verfahren zum Bereitstellen eines Steuergeräts für ein Kraftfahrzeug gemäß einer Ausführungsform der Erfindung.
-
1 zeigt ein Steuergerät 100 für ein Kraftfahrzeug nach einer Ausführungsform der Erfindung, insbesondere ein Antriebssteuergerät für Kraftfahrzeuge, auch ECU oder ECM genannt. Das Steuergerät 100 weist einen Prozessor 10, insbesondere einen Mikroprozessor oder eine CPU, auf. Der Prozessor 10 ist dabei operativ mit einem Speicher 20 beziehungsweise einer Speicherstruktur verbunden. Der Prozessor 10 kann mehrere Prozessorkerne umfassen oder auch ein Einzelkernprozessor sein. Der Prozessor 10 ist operativ mit dem Speicher 20 verbunden, um ein eingespeichertes beziehungsweise geladenes Programm auszuführen. Das Programm ist dabei zum Betrieb einer Fahrzeugkomponente ausgebildet, wie bereits in den oberen Beispielen ausgeführt ist. Das Programm umfasst dazu eine Vielzahl von maschinen-lesbaren Befehlen beziehungsweise Instruktionen, welche vom Prozessor 10 ausgelesen beziehungsweise ausgeführt werden können, so dass das Steuergerät 100 für das Kraftfahrzeug eine bestimmte Funktion oder bestimmte Funktionen gemäß dem Programm ausführen kann, um eine bestimmte Fahrzeugkomponente zu betreiben. Dies kann eine Steuerung einer Hardware des Kraftfahrzeugs, eine Überwachung oder eine Verifizierung einer Hardware des Kraftfahrzeugs oder einer Fahrfunktion des Kraftfahrzeugs sein.
-
Das Programm umfasst, wie in der 1 dargestellt, mehrere Teilprogramme Q1, ..., Qn; S1, ..., Sm. In der 1 sind rein beispielhaft vier Teilprogramme Q1, Q2, S1, Sm gezeigt, wobei mindestens zwei Teilprogramme vorliegen müssen. Diese Teilprogramme Q1, ..., Qn; S1, ..., Sm bilden im Ablauf das gesamte Programm zum Betrieb der Fahrzeugkomponente aus. Je nach Art der zu betreibenden Fahrzeugkomponente können die Teilprogramme Q1, ..., Qn; S1, ..., Sm beispielhaft zur Auswertung einer Hardware des Kraftfahrzeugs, zur Ansteuerung einer Hardware des Kraftfahrzeugs, der Überwachung einer Hardware oder zum Bereitstellen einer Funktion zum Betrieb des Kraftfahrzeugs ausgebildet sein.
-
Die Vielzahl der Teilprogramme Q1, ..., Qn; S1, ..., Sm ist jeweils in einem separaten beziehungsweise in einem voneinander unabhängigen Erstellungsprozess beziehungsweise Buildprozess erzeugt. Das bedeutet, dass die Teilprogramme Q1, ..., Qn; S1, ..., Sm nicht durch eine Gesamtkompilierung erzeugt sind, sondern getrennt und einzeln kompiliert/erstellt sind. Dadurch sind die Teilprogramme Q1, ..., Qn; S1, ..., Sm binär unabhängig voneinander. Dadurch wird erzielt, dass die Teilprogramme unabhängig voneinander aktualisiert beziehungsweise upgedated werden können.
-
Die so erzeugten Teilprogramme Q1, ..., Qn; S1, ..., Sm werden dann auf jeweils getrennte Speicherpartitionen MQ1, ..., MQn; MS1, ..., MSm des Speichers 20 gespeichert beziehungsweise liegen dann dort vor. Der Prozessor 10 kann diese Teilprogramme Q1, ..., Qn; S1, ..., Sm entsprechend ausführen, wobei durch die separaten Speicherpartitionen MQ1, ..., MQn; MS1, ..., MSm eine Querwirkungsfreiheit bei Ablauf erzielt wird.
-
Mindestens eines der Teilprogramme S1, ..., Sm weist eine sicherheitsrelevante Funktion des Kraftfahrzeugs auf. In dem vorliegenden Beispiel sind das die Teilprogramme S1 und das Teilprogramm Sm, wobei m ≥ 2 und auch weitere Teilprogramme zwischen 1 und m sich befinden können, welche hier nicht gezeigt sind. Die Sicherheitsrelevanz lässt sich durch eine Sicherheitsanforderungsstufe beschreiben. Dem Teilprogramm S1 ist beispielhaft eine Sicherheitsanforderungsstufe ASIL C zugewiesen und dem Teilprogramm Sm ist rein beispielhaft eine Sicherheitsanforderungsstufe ASIL A zugewiesen. Die Teilprogramme Q1 und Q2 enthalten beispielsweise eine weniger sicherheitskritische beziehungsweise eine sicherheitsunkritische Funktion. Diesen ist beispielsweise eine geringe Sicherheitsanforderungsstufe von QM zugewiesen. Die Art der Sicherheitsanforderungsstufe ist jedoch nur ein Beispiel und es können auch andere Sicherheitsklassifikationen verwendet werden. Die Teilprogramme S1, ..., Sm können beispielsweise zur Überwachung der Fahrzeugkomponente ausgebildet sein, insbesondere der nachfolgenden Funktionen. Die Teilprogramme Q1, ..., Qn können beispielsweise zur Steuerung, Diagnose und/oder Auswertung der Fahrzeugkomponente ausgebildet sein.
-
Die Teilprogramme Q1, ..., Qn; S1, ..., Sm können dabei so auf die Speicherpartitionen MQ1, ..., MQn; MS1, ..., MSm des Speichers 20 verteilt werden, dass Sicherheitsanforderungsstufen der Speicherpartition mit der Sicherheitsanforderungsstufe des Teilprogramms übereinstimmen. Beispielsweise kann das Teilprogramm Q1 auf einer Speicherpartition mit Sicherheitsanforderungsstufe QM gespeichert sein. Das Teilprogramm S1 kann auf einer Speicherpartition der Sicherheitsanforderungsstufe ASIL C gespeichert sein.
-
Nicht alle Speicherpartitionen MQ1, ..., MQn; MS1, ..., MSm des Speichers 20 müssen belegt sein, was von der Anzahl der Speicherpartitionen und der Anzahl der Teilprogramme abhängt. Beispielsweise sind die Speicherpartitionen MQn und MS2 leer.
-
Die Vielzahl der Teilprogramme Q1, ..., Qn; S1, ..., Sm sind durch ein Schnittstellenmodul 30 verbunden. Das Schnittstellenmodul 30 kann dabei definierte Schnittstellen aufweisen, um die getrennt voneinander erzeugten Teilprogramme miteinander zu verbinden. Obwohl die Teilprogramme isoliert auf ihren Speicherpartitionen sitzen, können somit Teilprogramme miteinander Werte austauschen. Solche Werte können über das Schnittstellenmodul 30 zwischen den binär getrennten Teilprogrammen Q1, ..., Qn; S1, ..., Sm über Schnittstellenmodule 30 ausgetauscht werden. Das Schnittstellenmodul 30 ist dabei insbesondere durch einen Wrapper oder auch einen Manifest-Wrapper ausgebildet, welcher, wie in der 1 dargestellt, die Teilprogramme umgibt und eine Kommunikationsschicht ausbildet. Der Prozessor 10 kann so die Vielzahl der Teilprogramme Q1, ..., Qn; S1, ..., Sm gemäß einem vorgegebenen Plan ausführen. Dies erfolgt insbesondere mittels des Schnittstellenmoduls 30 beziehungsweise des Wrappers. Der vorgegebene Plan, auch scheduling genannt, kann so die binär getrennten Teilprogramme Q1, ..., Qn; S1, ..., Sm in einer vordefinierten Reihenfolge ausführen. Zum Beispiel können gemäß dem Plan zu vorgegebenen Zeitpunkten bestimmte Werte zwischen bestimmten Teilprogrammen über das Schnittstellenmodul 30 übertragen werden oder auch bestimmte Teilprogramme gestartet oder beendet werden.
-
Die binäre Trennung der Teilprogramme Q1, ..., Qn; S1, ..., Sm wie oben beschrieben hat den Vorteil, dass die Teilprogramme Q1, ..., Qn; S1, ..., Sm selektiv aktualisiert werden können. Dazu kann der Prozessor 10 eine Aktualisierung erhalten, beispielsweise über ein Kommunikationsmodul, welches hier nicht gezeigt und als Funkschnittstelle ausgebildet sein kann. Insbesondere kann somit auch ein Over-the-Air-Update beschrieben werden, bei welchem das Update über die Funkschnittstelle des Fahrzeugs oder des Steuergeräts erhalten wird. Der Prozessor 10 wählt beziehungsweise bestimmt dann ein zu aktualisierendes Teilprogramm in Antwort auf den Erhalt der Aktualisierung. Die Identifikation eines zu aktualisierenden Teilprogramms kann zum Beispiel durch zusätzliche Informationen, gespeicherte und/oder übertragene Information, erhalten werden.
-
Bevorzugt kann die erhaltene Aktualisierung einen Identifikator umfassen, so dass der Prozessor 10 auf Basis des erhaltenen Identifikators ein oder mehrere Teilprogramme aus der Vielzahl der Teilprogramme bestimmen kann. Mit einer solchen Kennung können die zu dieser Kennung passenden Teilprogramme bestimmt werden und dann nur dieses oder diese Teilprogramme in Folge aktualisiert werden. Die Bestimmung kann beispielsweise durch Abgleich mit vorgespeicherten Paaren aus Identifikator und zugehörigem Teilprogramm erfolgen, mit welchen dann der empfangene Identifikator verglichen wird zur Bestimmung des zugehörigen zu aktualisierenden Teilprogramms.
-
Der Prozessor 10 kann dann ferner das Aktualisieren des ausgewählten beziehungsweise bestimmten Teilprogramms ausführen, ohne die nicht-bestimmten Teilprogramme zu verändern beziehungsweise zu aktualisieren. Dadurch kann ein anstehendes Update zielgerichtet beziehungsweise selektiv verwendet werden, um eines der binär getrennten Teilprogramme zu aktualisieren. Das Aktualisieren kann insbesondere ein vollständiges Ersetzen oder eine punktuelle Veränderung des Teilprogramms beinhalten. Vor Ausführung der Aktualisierung kann ferner eine Prüfung der Kompatibilität der Aktualisierung mit den anderen Teilprogrammen durchgeführt werden, um basierend auf dem Resultat das Aktualisieren durchzuführen oder zu verhindern. Der Prozessor 10 kann ferner dazu eingerichtet ist, Freigabetests von nicht-bestimmten Teilprogrammen beizubehalten. Dadurch kann der Freigabeaufwand stark reduziert werden, da Freigabetests für sicherheitskritische Funktionen sehr aufwendig sind, jedoch durch die binäre Unabhängigkeit nicht für die nicht-ausgewählten Teilprogramme wiederholt werden müssen.
-
Die Teilprogramme Q1, ..., Qn; S1, ..., Sm sind bevorzugt von der Hardware-Peripherie des Steuergeräts 100 getrennt. Dadurch ist eine direkte Verbindung der Teilprogramme Q1, ..., Qn; S1, ..., Sm zur Hardware-Peripherie verhindert, einschließlich zum Beispiel von ASICs oder Ein- und Ausgabeeinheiten. Die Verbindung der Teilprogramme zur Hardware-Peripherie kann über ein Betriebssystem, OS, erfolgen. Eine Folge ist, dass kritische Interferenzen verhindert und die Performanz der Teilprogramme sichergestellt wird.
-
2 zeigt ein Verfahren zum Aktualisieren eines Steuergeräts 100 für ein Kraftfahrzeug. Das Steuergerät 100 kann dabei so ausgebildet sein wie in der 1 beziehungsweise wie oben beschrieben. Das Verfahren umfasst in einem ersten Schritt das Erhalten S110 einer Aktualisierung. Das kann zum Beispiel durch eine Kommunikationsschnittstelle/Modul des Steuergeräts 100 oder des Kraftfahrzeugs erfolgen, zum Beispiel eine Funkschnittstelle wie bei einem Over-the-Air-Update. In einem weiteren Schritt erfolgt das Auswählen beziehungsweise das Bestimmen S120 eines oder mehrerer zur Aktualisierung korrespondierender Teilprogramme basierend auf der Aktualisierung. Die erhaltene Aktualisierung kann beispielsweise einen mitgesandten Identifikator umfassen, so dass auf Basis des erhaltenen Identifikators ein oder mehrere Teilprogramme aus der Vielzahl der Teilprogramme bestimmt werden können. Die Bestimmung kann, wie oben beschrieben, beispielsweise durch Abgleich mit vorgespeicherten Paaren aus Identifikator und dem zugehörigen Teilprogramm erfolgen, wie bereits oben näher beschrieben.
-
In einem weiteren Schritt erfolgt das Aktualisieren S130 des ausgewählten Teilprogramms, ohne die nicht-ausgewählten Teilprogramme zu verändern. Dies kann deswegen erfolgen, da die Teilprogramme unabhängig voneinander erstellt beziehungsweise kompiliert wurden. Das Verfahren umfasst ferner das Beibehalten von Freigabetests von nicht-ausgewählten Teilprogrammen. Dadurch kann der Aufwand für Freigabetests, was eine aufwendige Berechnung erfordert, von sicherheitsrelevanten Teilprogrammen verringert werden, da bestehende Freigabetests der nicht-aktualisierten Teilprogramme als unmittelbare Folge der binären Unabhängigkeit beibehalten werden können.
-
Ferner kann das Verfahren das Übertragen einer Änderungsinformation über das Aktualisieren eines Teilprogramms an eine Tuningschutzeinrichtung umfassen. Dadurch kann die Aktualisierung von der Tuningschutzeinrichtung als erlaubte Änderung akzeptiert werden.
-
In der 3 wird ferner ein Verfahren zum Bereitstellen eines Steuergeräts 100 für ein Kraftfahrzeug beschrieben. Das Steuergerät 100 umfasst dabei einen Prozessor 10 eingerichtet zum Ausführen eines Programms und einen Speicher 20. Das Programm kann zum Betrieb einer Fahrzeugkomponente des Kraftfahrzeugs ausgebildet sein. Das Steuergerät 100 ist beispielsweise nach der oben beschriebenen Ausführungsform der 1 ausgebildet und es wird auf die obige Beschreibung verwiesen. In einem Schritt S210 umfasst das Verfahren das Erstellen einer Vielzahl von Teilprogrammen Q1, ..., Qn; S1, ..., Sm in einem voneinander unabhängigen Erstellungsprozess. Durch den getrennten beziehungsweise unabhängigen Erstellungsprozess sind die Teilprogramme binär unabhängig voneinander, was eine unmittelbare Folge des separaten Erstellungs- beziehungsweise Buildprozesses ist. Im Vergleich zum Stand der Technik wird somit nicht ein gesamtes Programm kompiliert, sondern Teilprogramme werden getrennt und einzeln kompiliert. Als technische Folge ergibt sich, dass die Teilprogramme unabhängig voneinander aktualisiert beziehungsweise upgedated werden können.
-
In einem weiteren Schritt S220 umfasst das Verfahren das Speichern dieser so erzeugten Teilprogramme in jeweils getrennten Speicherpartitionen MQ1, ... MQn; MS1, ..., MSm des Speichers 20 zum Ausführen durch den Prozessor 10. Dabei können wenigstens zwei Teilprogramme Q1, ..., Qn; S1, ..., Sm eine voneinander unterschiedliche Sicherheitsanforderungsstufe aufweisen. In einem weiteren Schritt erfolgt das Verbinden der Teilprogramme Q1, ..., Qn; S1, ..., Sm durch ein Schnittstellenmodul 30 während des Erstellens der Vielzahl der Teilprogramme Q1, ..., Qn; S1, ..., Sm. Dadurch können die unabhängig kompilierten Teilprogramme in Laufzeit miteinander über Schnittstellen kommunizieren, das heißt Daten beziehungsweise Werte zu definierten Zeitpunkten im Ablauf übergeben.
-
Bezugszeichenliste
-
- 100
- Steuergerät
- 10
- Prozessor
- 20
- Speicher
- 30
- Schnittstellenmodul / Wrapper
- MQ1, ..., MQn
- Speicherpartition/Speicherbereich
- MS1, ..., MSn
- Speicherpartition/Speicherbereich
- Q1, ..., Qn
- Teilprogramme
- S1, ..., Sm
- Teilprogramme
- S110
- Erhalten einer Aktualisierung
- S120
- Bestimmen/Auswählen eines Teilprogramms
- S130
- Aktualisieren des Teilprogramms
- S210
- Erzeugen von Teilprogrammen
- S220
- Speichern von Teilprogrammen
-
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
-
- DE 102013226872 A1 [0004]
- DE 102014212018 A1 [0005]
- US 20190258812 A1 [0006]