-
Die vorliegende Erfindung betrifft ein Verfahren zum Aktualisieren einer auf einer Recheneinheit, die einen Speicher bereitstellt, auszuführenden Anwendung sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
-
Stand der Technik
-
Auf Recheneinheiten wie z.B. Steuergeräten in Fahrzeugen (also im Automobilbereich) werden in aller Regel Anwendungen (Software) ausgeführt, die typischerweise immer wieder aktualisiert werden sollten (z.B. im Rahmen eines Updates) oder teils auch müssen. Der zunehmende Einsatz vernetzter Kommunikation auch im Automobilbereich hat zur Folge, dass solche Software-Updates nicht oder nicht nur, wie bisher üblich, in Werkstätten durch spezielle Programmiergeräte erfolgen müssen, sondern auch drahtlos bzw. online über z.B. das Internet, GSM oder UMTS möglich sind (auch als „Flash Over The Air“, FOTA, oder „Software Over The Air“, SOTA, bezeichnet). Um zu jedem Zeitpunkt (mit dem Fahrzeug) losfahren zu können, sollte ein Update jederzeit unterbrochen werden können und trotzdem die volle Funktionalität sofort zur Verfügung stehen.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zum Aktualisieren einer auf einer Recheneinheit auszuführenden Anwendung sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Erfindung beschäftigt sich mit dem Aktualisieren einer auf einer Recheneinheit wie z.B. einem Steuergerät eines Fahrzeugs auszuführenden Anwendung (oder Software). Eine solche Recheneinheit stellt dabei einen Speicher, insbesondere einen nichtflüchtigen Speicher wie EEPROM oder Flash bereit. Hierzu können ein oder mehrere Speichermedien vorgesehen sein.
-
Dabei sind (bisherige, d.h. aktuell verwendete) Programmdaten umfassend wenigstens einen Teil der Anwendung (also die vor der Aktualisierung bzw. vor dem Update vorhandene Software bzw. deren Programmdaten) in einem ersten physikalischen Speicherbereich des Speichers mit einer ersten physikalischen Adresse abgelegt. Beim Ausführen der Anwendung wird dabei auf die Programmdaten zugegriffen, indem eine virtuelle (oder logische) Adresse adressiert wird, die gemäß einer in dem Speicher hinterlegten Zuordnung (oder einem „Mapping“) der ersten physikalischen Adresse zugeordnet ist. Insbesondere erfolgt diese Übersetzung zwischen logischen und physikalischen Adressen durch einen Speicher-Controller, der dazu beispielsweise auf eine Übersetzungstabelle („Mapping Table“, minimal ein Bit zum Umschalten), wie z.B. Flash-Translation-Layer, FTL, zurückgreift. Die Übersetzungstabelle und eine Zugriffs-Virtualisierung können im Controller des Speichers abgelegt werden (HW), oder im nichtflüchtigen Speicher selbst. Letzterer Fall entspricht einer Art Mini-Betriebssystem, wobei die Zugriffs-Virtualisierung nicht mit aktualisiert wird.
-
Neue Programmdaten zum Ersetzen der bisherigen Programmdaten (also das Update) werden in einem zweiten physikalischen Speicherbereich des Speichers (der von dem ersten physikalischen Speicherbereich verschieden ist) mit einer zweiten physikalischen Adresse (die von der ersten physikalischen Adresse verschieden ist) abgelegt. Nachdem die neuen Programmdaten vollständig abgelegt worden sind, wird die virtuelle Adresse (die an sich nicht geändert wird) der zweiten physikalischen Adresse zugeordnet, indem die Zuordnung geändert wird. Die Anwendung kann dann neu gestartet werden (z.B. im Rahmen eines Restes oder Neustarts der Recheneinheit, ggf. auch bei einem Aufstarten des Fahrzeugs), womit dann automatisch die aktualisierten Programmdaten verwendet werden. Die bisherigen Programmdaten können danach gelöscht werden, soweit sie nicht mehr benötigt werden.
-
Auf diese Weise werden die Programmdaten der Anwendung (bzw. die Software) im Rahmen der Aktualisierung redundant im Speicher abgelegt. Die neuen Programmdaten bzw. die neue Software wird erst am Ende des Updatevorgangs durch Verändern der Übersetzungstabelle aktiv geschaltet, so dass immer eine funktionale Software im Speicher vorhanden ist. Ein künstliches „Stilllegen“ des Fahrzeugs bis zur Beendigung des Updates kann damit entfallen.
-
Ein Vorteil der Erfindung liegt insbesondere darin, dass für einen Benutzer mögliche Wartezeiten während Software-Updates komplett vermieden werden können. Hierzu wird zwar ggf. zusätzlicher Speicher in der Recheneinheit benötigt, was jedoch in Anbetracht geringer Speicherpreise keinen nennenswerten Nachteil darstellt.
-
Während im Normalfall die Vermeidung von Wartezeiten lediglich eine Komfortfunktion für den Benutzer ist, kann im Extremfall, z.B. bei Krankentransporten, eine Erhöhung der Fahrzeugverfügbarkeit sogar sicherheitsrelevant sein.
-
Ergänzend kommt bei dem vorgeschlagenen Vorgehen durch die erwähnte Zuordnung im Speicher hinzu, dass diese Zuordnung nicht in der Anwendung bzw. der Software implementiert werden muss, wodurch zum einen kein Performanceverlust entsteht und zum anderen deren Struktur vereinfacht wird. Ein Kompilieren der Software (konkret: das sog. Linken) kann damit ohne Kenntnis über den aktiven Speicherbereich (d.h. die relevante physikalische Adresse) erfolgen, da die virtuellen bzw. logischen Adressen, die die Anwendung bzw. Software „sieht“, sich nicht ändern.
-
Weiterhin wird damit eine Vereinfachung des FOTA- bzw. SOTA-Prozesses trotz sofortiger Verfügbarkeit bei Abbruch der Aktualisierung erreicht. Relevante Funktion eines Betriebssystems sind damit möglich, und zwar ohne Einsatz eines unnötig großen bzw. leistungsfähigen Rechners (bzw. Prozessors) in kleinen bzw. einfachen Anwendungen, bzw. in Bereichen, in denen ein Betriebssystem aus anderen Gründen ungeeignet ist.
-
Vorzugsweise umfassen die neuen (und entsprechend insbesondere auch die bisherigen) Programmdaten einen oder mehrere in sich abgeschlossene Funktionseinheiten (oder Funktionsblöcke) der Anwendung. Die Änderung der Zuordnung („Ummappen“) von Adressen ist hier besonders vorteilhaft, da damit die Zeitdauer für solche Aktualisierungen reduziert werden kann (es muss nicht die vollständige Anwendung bzw. Software aktualisiert werden), d.h. zweckmäßig ist es insofern auch, wenn die (zu aktualisierenden) Programmdaten nur diese eine oder diese mehreren Funktionseinheiten umfassen. Zudem müssen auf diese Weise nicht die für die gesamte Anwendung, sondern nur die für einzelne Funktionseinheiten nötigen Programmdaten redundant abgelegt werden, wodurch der Speicherbedarf reduziert wird. Aufrufe zu den Funktionseinheiten können in der Anwendung dann indirekt erfolgen, also z.B. über einen Zeiger, der am Ende des Updates geändert wird.
-
Bevorzugt werden die neuen Programmdaten drahtlos empfangen und dann in dem zweiten physikalischen Speicherbereich des Speichers abgelegt. Dies kann z.B. direkt durch geeignete drahtlose Kommunikationsmittel der Recheneinheit erfolgen; zweckmäßig ist es aber auch, wenn die neuen Programmdaten von einer weiteren, drahtgebunden mit der Recheneinheit verbundenen Recheneinheit (z.B. einem zentralen Steuergerät, wie eingangs erwähnt) drahtlos empfangen und dann drahtgebunden (z.B. über einen Fahrzeugbus wie CAN oder LIN) an die Recheneinheit übermittelt und in dem zweiten physikalischen Speicherbereich des Speichers abgelegt werden. Auf diese Weise sind FOTA- bzw. SOTA-Prozesse besonders effizient möglich, zumal mit einem solchen zentralen Steuergerät neue Programmdaten für mehre, zu aktualisierende Anwendungen und/oder Recheneinheiten empfangen werden können.
-
Insbesondere können die Programmdaten neben der eigentlichen Anwendung auch einen sog. Bootloader enthalten. Im Unterschied zu Aktualisierungsverfahren, bei denen die Aktualisierung in einem sog. Bootloader-Modus stattfindet, kann bei der erfindungsgemäßen Lösung insbesondere auch der Bootloader aktualisiert werden.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Figurenliste
-
- 1 zeigt schematisch ein Fahrzeug mit einer Recheneinheit, bei der ein erfindungsgemäßes Verfahren durchführbar ist.
- 2 zeigt schematisch eine Recheneinheit während verschiedener Phasen eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform.
- 3 zeigt schematisch eine Zuordnung bei einem erfindungsgemäßen Verfahren in einer bevorzugten Ausführungsform.
- 4 zeigt schematisch einen Speicher bei einem erfindungsgemäßen Verfahren in einer weiteren bevorzugten Ausführungsform.
-
Ausführungsform(en) der Erfindung
-
In 1 ist schematisch ein Fahrzeug 100 mit einer als Steuergerät ausgebildeten Recheneinheit 110 dargestellt, bei der ein erfindungsgemäßes Verfahren durchführbar ist. Auf der Recheneinheit 110 ist eine Anwendung 111 vorgesehene, die darauf auszuführen ist und z.B. bestimmte Funktionen bereitstellen kann. Bei der Recheneinheit 110 kann es sich z.B. um ein Motorsteuergerät oder ein Steuergerät für ein Bremsregelsystem handeln, wobei die konkrete Verwendung für die vorliegende Erfindung nicht relevant ist.
-
Die Recheneinheit 110 ist mittels eines Fahrzeugbusses 122 (z.B. ein CAN-Bus) an eine weitere Recheneinheit 120 angebunden, bei der es sich z.B. um ein zentrales Steuergerät handeln kann. Diese weitere Recheneinheit 120 weist Kommunikationsmittel 121 zur drahtlosen Kommunikation, z.B. über Mobilfunk, auf und steht darüber z.B. mit einer externen Recheneinheit (Server) 190 in Verbindung.
-
Von diesem Server 190 kann die weitere Recheneinheit 120 z.B. neue Programmdaten für die Anwendung 111 empfangen, über den Fahrzeugbus 122 können diese neuen Programmdaten dann auf die Recheneinheit 110 geladen werden, sodass die Anwendung 111 aktualisiert werden kann. Der Ablauf hierbei soll nachfolgend näher beschrieben werden.
-
Weiterhin sei erwähnt, dass die weitere Recheneinheit 120 über den Fahrzeugbus 122 beispielhaft an eine Recheneinheit 130 angebunden ist, für die eine Aktualisierung einer darauf auszuführenden Anwendung auf die gleiche Weise wie für die Recheneinheit 110 erfolgen kann.
-
In 2 ist schematisch die Recheneinheit 110 aus 1 während beispielhaft drei verschiedener Phasen eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform dargestellt. Die Recheneinheit 110 stellt einen Speicher 200 bereit (und weist hierzu ein entsprechendes Speichermedium, z.B. Flash-Speicher, auf) und weist z.B. auch einen Mikrocontroller 290 auf.
-
Der Speicher 200 wiederum umfasst mehrere, voneinander verschiedene, physikalische Speicherbereiche, wobei insbesondere ein erster physikalischer Speicherbereich 210 und ein zweiter physikalischer Speicherbereich 220 gezeigt sind, die für Programmdaten für die auf der Recheneinheit 110 auszuführende Anwendung vorgesehen sind. Zudem ist ein weiterer physikalischer Speicherbereich 230 mit einem Bootloader vorgesehen, der jedoch, wie schon erwähnt, ggf. auch entfallen kann, wenn der Bootloader in den Programmdaten enthalten ist.
-
In der linken Abbildung der Recheneinheit 110 ist ein Zustand vor dem Aktualisieren dargestellt, in dem in dem ersten physikalischen Speicherbereich 210 die bisherigen bzw. aktuell verwendeten Programmdaten 211 abgelegt sind. Der zweite physikalische Speicherbereich 220 ist leer bzw. gelöscht, d.h. dort sind keine Daten abgelegt.
-
Während der Aktualisierung werden nun neue Programmdaten 221 in dem zweiten physikalischen Speicherbereich 220 abgelegt, wie in der mittleren Abbildung zu sehen. Dabei sind in der gezeigten Phase die neuen Programmdaten 221 erst zum Teil vorhanden, sodass noch ein Teil des zweiten physikalischen Speicherbereichs 220 frei bzw. gelöscht ist. Während dieser Phase werden jedoch weiterhin die bisherigen Programmdaten 211 verwendet, d.h. diese sind aktiv.
-
Nachdem die neuen Programmdaten 221 vollständig in dem zweiten physikalischen Speicherbereich 220 abgelegt worden sind, können durch eine Veränderung der Zuordnung zwischen logischen und physikalischen Speicheradressen (sog. Adressmapping) die neuen Programmdaten 221 verwendet bzw. aktiv geschaltet werden, wie in der rechten Abbildung gezeigt. Die bisherigen Programmdaten 220 können dann z.B. gelöscht oder bei einer weiteren Aktualisierung überschrieben werden.
-
In 3 ist schematisch eine Zuordnung bei einem erfindungsgemäßen Verfahren in einer bevorzugten Ausführungsform dargestellt, anhand welcher die Anwendung bei Zugriff auf die Programmdaten diese adressiert. Hierzu ist der Speicher 200 mit den bisherigen Programmdaten 211 und den neuen Programmdaten 221, wie auch in 2 schon gezeigt, dargestellt.
-
Dabei sollen die bisherigen Programmdaten 211 an einer ersten physikalischen Adresse 215 liegen, die neuen Programmdaten 221 hingegen sollen an einer zweiten physikalischen Adresse 225 liegen bzw. im Rahmen des vorgeschlagenen Vorgehens, wie in Bezug auf 2 erläutert, dort abgelegt werden.
-
Weiterhin sind beispielhaft zwei logische Adressen 315 und 325 dargestellt, die die Anwendung, die auf der Recheneinheit ausgeführt wird, adressiert. In der oberen Abbildung ist zunächst die Situation vor der Aktualisierung gezeigt, in der mittels einer Zuordnung 350, die z.B. ebenfalls in dem Speicher 220 oder einem anderen Speicher der Recheneinheit oder des Mikrocontrollers hinterlegt ist, der ersten virtuellen Adresse 315 die erste physikalische Adresse 215, an der die bisherigen Programmdaten 211 liegen, zugeordnet ist.
-
Diese Zuordnung bleibt solange erhalten, bis die neuen Programmdaten 221 vollständig in dem Speicher 200 unter der zweiten physikalischen Adresse 225 abgelegt sind. Anschließend wird die Zuordnung 350 geändert, sodass nunmehr der ersten virtuellen Adresse 315 die zweite physikalische Adresse 225 zugeordnet ist. Beispielsweise wird die Änderung unmittelbar oder erst nach einem Reset oder Neustart der Recheneinheit wirksam. Auf diese Weise werden dann die neuen Programmdaten zur Ausführung der Anwendung verwendet. Die hierbei zu adressierende Adresse, nämlich die erste virtuelle Adresse 315, bleibt jedoch dieselbe, sodass in den Programmdaten bzw. der Anwendung (Software) nichts geändert werden muss.
-
Es versteht sich, dass auf diese Weise weitere virtuelle Adressen weiteren physikalische Adressen zugeordnet sein können, wobei die Zuordnung auf die gleiche Weise bei bzw. nach der Aktualisierung geändert werden kann.
-
In 4 ist schematisch ein Speicher 400 bei einem erfindungsgemäßen Verfahren in einer weiteren bevorzugten Ausführungsform dargestellt. Das hier gezeigte Vorgehen entspricht im Grunde demjenigen gemäß 2, dort mit dem Speicher 200, allerdings umfassen die neuen Programmdaten 421 beispielhaft nur eine Funktionseinheit (oder Modul) der Anwendung. Andere Teile oder Funktionseinheiten 430 sollen oder müssen nicht aktualisiert werden.
-
Hierbei sind die Programmdaten 411 in dem ersten physikalischen Speicherbereich 410 abgelegt, die neuen Programmdaten 421 werden in dem zunächst freien bzw. gelöschten, zweiten physikalischen Speicherbereich 420 abgelegt. Auf diese Weise kann der Speicherbedarf reduziert werden, ebenso die Dauer der Aktualisierung. Im Übrigen kann auf die Ausführungen zu 2 verwiesen werden, die hier entsprechend gelten.