-
Die
Erfindung liegt auf dem Gebiet der Kommunikationstechnik und betrifft
ein Verfahren zur Aktualisierung von Programmcode eines Endgeräts sowie
ein entsprechend eingerichtetes Endgerät.
-
Die
Mehrzahl der auf Mikroprozessortechnik basierenden Geräte ermöglicht eine
Aktualisierung von Programmcode (so genannte Softwareupdates), um
Programmcode mit neuen Merkmalen sowie mit beseitigten Fehlern (so
genannten Bugs) bereitzustellen. Bei vielen Endgeräten wird
neuer Programmcode über
eine Drahtverbindung von einem Computer oder Server in das Gerät geladen.
Bei mobilen und schwer erreichbaren Geräten, wie z.B. Mobiltelefone,
Personal Digital Assistants (PDAs), Steuergeräte, Funkmodems, Wireless Area
Network Adapter (WAN-Adapter)
und dergleichen, die über
eine drahtlose Schnittstelle verfügen, kann der Softwareupdate auch über die
drahtlose Schnittstelle erfolgen.
-
Bei
einem Softwareupdate über
eine drahtlose Schnittstelle muss das Gerät, dessen Programmcode aktualisiert
werden soll, während
des Updates zur Sicherung der Datenübertragung funktionsfähig bleiben.
Tritt bei der Übertragung
ein Fehler auf, muss ein erneutes Update durchführbar sein. Dazu ist eine Reihe
von Verfahren entwickelt worden.
-
So
beschreibt beispielsweise
US
6 023 620 Geräte
mit doppeltem Programmspeicher, beispielsweise getrennte Speicherbänke. In
jedem Programmspeicher kann jeweils ein voll funktionsfähiger Programmcode
(Firmware) zur Steuerung des Geräts
abgelegt werden. Allerdings ist jeweils nur eine der beiden Firmware
zeitgleich aktiv. Beim Update wird – gesteuert durch die jeweils
aktive Firmware, beispielsweise des ersten Programmspeichers, – die Firmware
im zweiten Programmspeicher über schrieben.
War dieser Vorgang erfolgreich, wird die soeben abgespeicherte Firmware
aktiviert, so dass die neu geladene Firmware im zweiten Programmspeicher zur
Steuerung des Geräts
verwendet wird. Bei einen erneuten Update wird nun die inaktive
Firmware im ersten Programmspeicher überschrieben und dann aktiviert.
Dieses Verfahren benötigt
zwei vollständige Programmspeicher
und verursacht daher höhere Herstellungskosten.
-
Aus
US 2004/0261072 A1 ist ein mobiles Endgerät mit zwei Mikroprozessoren
bekannt. Der erste Mikroprozessor steuert die drahtlose Kommunikation
des Endgeräts über einen
RF Empfänger.
Der zweite Mikroprozessor führt
nutzerspezifische Programme aus. Jedem Mikroprozessor ist ein separater nichtflüchtiger
sowie ein flüchtiger
Speicher zugeordnet. Die beiden Mikroprozessoren können über eine Interprozessorschnittstelle
(Interprocessor communication unit – IPC) Daten austauschen. Zur
Aktualisierung von Programmcode stellt der erste Mikroprozessor
eine drahtlose Verbindung zu einem Updateserver her und lädt von dort
neuen Programmcode in seinen Speicher. Danach wird der neue Programmcode
vom ersten Mikroprozessor über
die Interprozessorschnittstelle zum zweiten Mikroprozessor übertragen,
der den neuen Programmcode in dem ihm zugeordneten Speicher zunächst temporär ablegt.
Der im Speicher des zweiten Mikroprozessors zwischengespeicherte
neue Programmcode kann Programmcode zur Aktualisierung für beide
Mikroprozessoren enthalten. Daher wird der für den ersten Mikroprozessor
bestimmte neue Programmcode vom zweiten Mikroprozessor zum ersten
Mikroprozessor zurück übertragen.
Jeder Mikroprozessor aktualisiert seinen eigenen Programmcode. Dazu
ist in jedem nicht-flüchtigen
Speicher ein entsprechendes Aktualisierungsprogramm abgelegt, das
von dem jeweiligen Mikroprozessor aktiviert wird, d.h. jeder Mikroprozessor
aktualisiert jeweils den in seinem Speicher abgelegten Programmcode
mit neuem Programmcode. Alternativ ist es auch möglich, dass einer der beiden
Mikroprozessoren den neuen Programmcode für beide Mikroprozessoren aktualisiert.
Voraussetzung dafür
ist jedoch, dass einer der beiden Mikroprozes soren Zugriff auf den
Adressraum des anderen Mikroprozessors hat, um den neuen Programmcode
in den Speicher des anderen Mikroprozessors einzuspeichern.
-
In
US 2004/0261073 wird ein updatefähiges mobiles
Gerät beschrieben.
Dieses Gerät
weist einen Mikroprozessor und einen nicht-flüchtigen Speicher auf. Der nicht-flüchtige Speicher
umfasst einen schreibgeschützten
Bereich, in dem ein Updateprogramm abgelegt ist, sowie einen nicht-schreibgeschützten Bereich,
der die Anwendungssoftware, einen Freibereich zum temporären Ablegen
von neuem Programmcode und einen Journalbereich enthält. Zur
Aktualisierung der Anwendungssoftware wird über eine Funkschnittstelle
neuer Programmcode im Freibereich des nicht-flüchtigen Speichers zwischengespeichert.
Anschließend
wird – gesteuert
durch das Updateprogramm – die
bisherige Anwendungssoftware durch den neuen Programmcode sektorweise überschrieben
und nach jedem erfolgreichen Überschreiben
im Journalbereich eine entsprechende Information hinterlegt. Im
Falle eines zwischenzeitlichen Stromausfalls startet das Updateprogramm neu
und erkennt anhand dieser Information, welche Sektoren bereits beschrieben
sind, so dass lediglich die noch fehlenden Sektoren aktualisiert
werden müssen.
-
Vor
diesem Hintergrund ist es wünschenswert,
ein Verfahren zur Aktualisierung von Programmcode eines Endgeräts bereitzustellen,
das eine hohe Zuverlässigkeit
aufweist, autonom arbeitet, eine hohe Flexibilität bietet und in der Realisierung
kostengünstig
ist.
-
Diese
Aufgabe wird gelöst
durch ein Verfahren zur Aktualisierung von Programmcode eines Endgeräts mit
- – einem
Mikroprozessor;
- – einem
nicht-flüchtigen
Programmspeicher, der dem Mikroprozessor zugeordnet ist und einen ersten
beschreibbaren Bereich, der Programmcode zur Steuerung des Endgeräts enthält, und einen
zweiten schreibgeschützten
Bereich, der Ladeprogrammcode zur Einspeicherung von Programmcode
in den ersten Bereich enthält,
aufweist; und
- – einem
zum nicht-flüchtigen
Programmspeicher separaten nicht-flüchtigen Datenspeicher;
mit
den Schritten:
- – Ausführen des
Ladeprogrammcodes durch den Mikroprozessor, so dass, gesteuert durch
den Ladeprogrammcode, der im ersten Bereich des Programmspeichers
abgelegte Programmcode durch im Datenspeicher enthaltenen neuen
Programmcode teilweise oder vollständig überschrieben wird.
-
Die
genannte Aufgabe wird ebenfalls gelöst durch ein Endgerät mit
- – einem
Mikroprozessor;
- – einem
nicht-flüchtigen
Programmspeicher, der dem Mikroprozessor zugeordnet ist und einen ersten
beschreibbaren Bereich, in welchem Programmcode zur Steuerung des
Endgeräts
gespeichert ist, und einen zweiten schreibgeschützten Bereich, in welchem Ladeprogrammcode
zum Einschreiben von Programmcode in den ersten Bereich gespeichert
ist, aufweist; und
- – einem
zum nicht-flüchtigen
Programmspeicher separaten nicht-flüchtigen Datenspeicher, auf
den der Mikroprozessor, gesteuert durch den Ladeprogrammcode, zugreifen
und dort abgelegten Programmcode auslesen und in den ersten Bereich
des Programmspeichers ablegen kann.
-
Der
neue Programmcode ist im Datenspeicher abgelegt und wird vom den
Ladeprogrammcode ausführenden
Mikroprozessor vom Datenspeicher in den beschreibbaren ersten Bereich
des Programmspeichers übertragen,
so dass der im ersten Bereich abgelegte bisherige Programmcode teilweise
oder komplett überschrieben
wird. Der Ladeprogrammcode selbst wird dabei nicht verändert, da
er im schreibgeschützten
zweiten Bereich des Programmspeichers abgelegt ist. Die im Programmspeicher
abge legte Software ist daher segmentiert organisiert und in Firmware
(Programmcode im ersten Bereich) und Ladesoftware (Ladeprogrammcode
im zweiten Bereich) unterteilt. Der Ladeprogrammcode wird bei der
Aktualisierung nicht überschrieben
und ist speziell gegen ein Überschreiben
geschützt.
Der Ladeprogrammcode kann vergleichsweise klein gehalten werden,
d.h. er beansprucht relativ wenig Speicherplatz, da der Ladeprogrammcode
lediglich die Funktionalität
zur Datenübertragung
vom Datenspeicher in den Programmspeicher bereithalten muss. Auf weitergehende
Funktionen, wie z.B. Ansteuerung von Funkschnittstellen usw., kann
verzichtet werden. Der Ladeprogrammcode funktioniert autonom mit
eigener Steuerlogik, d.h. er wird auch nach einem eventuellen Stromausfall
wieder gestartet und setzt die Aktualisierung fort. Dadurch kann
die Funktionsfähigkeit
des Endgeräts
auch nach einem Stromausfall wieder eigenständig hergestellt werden. Zu
diesem Zweck wird mit Beginn der Aktualisierung ein erstes Flag
(Registereintrag) im nicht-flüchtigen
Programmspeicher gesetzt. Beim erfolgreichen Abschluss wird ein
zweites Flag gesetzt. Alternativ kann nach erfolgreichem Abschluss
das erste Flag zurückgesetzt
werden. Anhand der gesetzten Flags ist auch nach einem Stromausfall
erkennbar, ob eine Aktualisierung vorgenommen wurde und ob diese
erfolgreich beendet werden konnte.
-
Nach
erfolgtem Überschreiben
des Programmcodes wird ein Neustart des Endgeräts durchgeführt und dadurch der neue Programmcode
aktiviert. In der Regel erfolgt dies durch ein speicherresidentes
Bootprogramm, das bei jedem Neustart zuerst ausgeführt wird
und den neuen Programmcode startet.
-
Bei
dem Programmcode zur Steuerung des Endgeräts handelt es sich typischerweise
um die so genannte Firmware, d.h. die Software, welche direkt das
Endgerät
steuert. Auf der Firmware aufbauend kann weiterer Programmcode,
z.B. für
nutzerspezifische Anwendungen, im ersten beschreibbaren Bereich
des Programmspeichers abgelegt sein. Die nutzerspezifischen Anwendungen
lassen sich ebenfalls wie die Firmware mit dem vorgestellten Verfahren
aktualisieren.
-
Der
in Bezug zum Programmspeicher separate Datenspeicher kann bei der
Herstellung des Endgeräts
in seiner Größe unabhängig vom
Programmspeicher angepasst werden. Das Endgerät wird mit einem separaten
Datenspeicher ausgerüstet werden,
wenn eine Aktualisierungsoption gewünscht ist. Dabei kann der Datenspeicher
entsprechend skaliert werden. Außerdem ist es möglich, Endgeräte mit verschieden
großen
Datenspeichern entsprechend des vorgesehenen Einsatzzwecks herstellen.
Somit kann der eigentliche Programmspeicher klein gehalten und mit
unterschiedlich großen
Datenspeichern kombiniert werden. Dies erhöht die Flexibilität bei der Herstellung
der Endgeräte
und senkt gleichzeitig die Herstellungskosten.
-
Außerdem ermöglicht die
zum Programmspeicher separate Ausführung des Datenspeichers eine
gezielte Auswahl von jeweils geeigneten Speichertypen, so dass zum
einen die Leistungsfähigkeit des
Endgeräts
verbessert und zum anderen die Kosten für die Herstellung des Endgeräts weiter
verringert werden können.
-
Ein
weiterer Vorteil besteht darin, dass der neue Programmcode in komprimierter
Form im Datenspeicher abgelegt sein kann. Dadurch lässt sich die
erforderliche Größe des Datenspeichers
und dadurch Herstellungskosten weiter verringern.
-
Unter
einem separaten Datenspeicher wird insbesondere ein Speicher verstanden,
der auf einem anderen Halbleiterchip als der Programmspeicher angeordnet
ist, d.h. Programmspeicher und Datenspeicher sind auf unterschiedlichen
Halbleitersubstraten prozessiert worden.
-
In
einer Ausführungsform
der Erfindung ist der interne Programmspeicher über einen Daten- und Adreßbus mit
dem Mikroprozessor verbunden, d.h. insbesondere direkt verbunden.
Dabei kann der Programmspeicher noch eine eigene Steuerlogik aufweisen,
die den direkten Zugriff auf die einzelnen Speicherzellen des Programmspeichers
steuert.
-
In
einer weiteren Ausführungsform
ist das Endgerät
ein Einzelprozessorgerät,
d.h. das Endgerät
verfügt über lediglich
einen Mikroprozessor. Das erfindungsgemäße Verfahren ist insbesondere
für diese
Art von Endgeräten
vorteilhaft, da durch die Trennung von Programmcode zur Steuerung
des Endgeräts
und Ladeprogrammcode ein Überschreiben
des Programmcodes durch nur einen Mikroprozessor in einfacher Weise
möglich
ist.
-
In
einer weiteren Ausführungsform
weist das Endgerät
eine Schnittstelle zum Datenaustausch mit dem Datenspeicher auf. Über diese
Schnittstelle kann der Mikroprozessor direkt auf den Datenspeicher
zugreifen. Ein Beispiel einer solchen Schnittstelle ist eine SPI-Schnittstelle
(Serial Peripheral Interface), die besonders einfach und kostengünstig ist. Auf
dem Datenspeicher werden typischerweise lediglich Daten abgelegt
und kein unmittelbar ausführbarer
Programmcode, da auf den Datenspeicher nicht direkt über den
Daten- und Adressbus des Mikroprozessors zugegriffen werden kann.
Der Mikroprozessor kann über
die Schnittstelle direkt auf den Datenspeicher zugreifen.
-
In
einer weiteren Ausführungsform
ist der Datenspeicher entfernbar mit dem Endgerät, beispielsweise über eine
SPI-Schnittstelle,
verbunden. Dies gestattet die Verwendung von extern anschließbarem Datenspeicher
für die
Zwischenspeicherung des neuen Programmcodes. Alternativ ist es möglich, den
separaten Datenspeicher fest in das Endgerät zu integrieren.
-
In
einer weiteren Ausführungsform
verfügt das
Endgerät über eine
Kommunikationsschnittstelle zum Kommunizieren mit externen Geräten. Dabei kann,
gesteuert durch den im ersten Bereich gespeicherten Programmcode,
durch die Kommunikationsschnittstelle eine Verbindung zu einem externen
Gerät,
welches den neuen Programmcode bereithält, hergestellt und der neue
Programmcode über
die Kommunikationsschnittstelle in den Datenspeicher übertragen
und dort zwischengespeichert werden. Die Verwendung von verschiedensten
Prüfsummenverfahren
ge währleistet,
dass keine korrupten Daten übertragen
werden. Abschließend
wird der Ladeprogrammcode ausgeführt,
d.h., nach dem Übertragen des
neuen Programmcodes wird der Ladeprogrammcode aktiviert.
-
In
einer weiteren Ausführungsform
hält der Programmcode
zur Steuerung des Endgeräts
eine Filesystemschnittstelle bereit, die mit einem im ersten Bereich
des Programmspeichers abgelegten anwendungsspezifischen Programmcode
kommuniziert, wobei der anwendungsspezifische Programmcode die Übertragung
des neuen Programmcodes in den Datenspeicher steuert. Der anwendungsspezifische Programmcode
und der Programmcode zur Steuerung des Endgeräts stellen separate Software
dar, die miteinander kommunizieren. Bei dem anwendungsspezifischen
Programmcode kann es sich beispielsweise um eine Java-Anwendung handeln.
-
Über die
Kommunikationsschnittstelle kann der neue Programmcode in das Endgerät übertragen werden,
d.h. die Aktualisierung des Programmcodes kann fernüberwacht
werden, ohne dass unmittelbare Maßnahmen vor Ort vorgenommen
werden müssen. Typischerweise
wird die Übertragung
vom noch aktiven Programmcode initiiert, beispielsweise durch regelmäßiges Abfragen
eines Servers nach neuem Programmcode. Alternativ ist auch eine
Initiierung durch einen externen Server möglich.
-
Die Übertragung
des neuen Programmcodes kann als separate (erste) Phase aufgefasst
werden, da sie über
den noch aktiven (alten) Programmcode gesteuert wird. Die eigentliche
Aktualisierung, d.h. das Überschreiben
des alten Programmcodes durch den neuen Programmcode, ist dann eine
zweite separate Phase, da sie durch den Ladeprogrammcode gesteuert
wird. Der Gesamtvorgang umfassend die Übertragung in den Datenspeicher
und das Überschreiben
des alten Programmcodes kann über
die Funktionalität
des aktiven Programmcodes sowie durch einen externen Zugriff auf
das Endgerät
(Remotezugriff) ausgelöst
werden.
-
Bei
der Kommunikationsschnittstelle kann es sich um eine drahtlose Schnittstelle,
beispielsweise Funkmodul, GSM Modul, oder WAN Adapter (Wide Area
Network), oder eine Drahtschnittstelle, beispielsweise Ethernet,
handeln.
-
Im
Folgenden wird die Erfindung anhand von in den beiliegenden Figuren
illustrierten Ausführungsbeispielen
beschrieben. Es zeigen:
-
1 einen
prinzipiellen Aufbau eines Endgeräts gemäß einer Ausführungsform;
-
2A und 2B den
schematischen Ablauf des Verfahrens gemäß einer Ausführungsform;
-
3A, 3B und 4A und 4B den
schematischen Ablauf des Verfahrens gemäß einer weiteren Ausführungsform;
-
5 einer
Dateistruktur, die bei einer Ausführungsform verwendet wird.
-
1 zeigt
ein erfindungsgemäßes Endgerät anhand
eines GSM Moduls 2 eines Mobilfunktelefons. Es versteht
sich von selbst, dass die Erfindung nicht darauf beschränkt ist.
Beispielsweise kann es sich bei dem Endgerät prinzipiell um jedes mobiles oder
schwer erreichbares Gerät
handeln. Beispiele sind PDAs, Funkmodems, WAN-Adapter, quasistationäre Geräte wie beispielsweise
Zähler
zur Messung des Stromverbrauchs und Steuergeräte, die an schwer zugänglichen
Orten eingesetzt werden.
-
Das
GSM Modul 2 umfasst einen Mikroprozessor bzw. Mikrokontroller 4,
einen nicht-flüchtigen Programmspeicher 6 (z.B.
einen FLASH-Speicher), der über
einen Daten- und Adressbus 8 direkt an den Mikroprozessor 4 angeschlossen
ist, ein Kommunikationsmodul 10 und einen separaten nicht-flüchtigen
Datenspeicher 12. Der Mikroprozessor 4 kann auf
den Datenspeicher 12 über
eine Schnittstelle 14 zugreifen. Bei der Schnittstelle 14 handelt
es sich beispielsweise um eine SPI-Schnittstelle. Als Datenspeicher 12 können beliebige
SPI-Speicher verwendet werden, z.B. SD Cards und Flash-Bausteine.
Der Datenspeicher 12 kann ein interner, fest im GSM Modul
integrierter Speicher sein. Dabei ist der Datenspeicher jedoch separat
zum Programmspeicher ausgelegt, z.B. auf einem separaten Chip integriert. Alternativ
kann der Datenspeicher 12 auch als externer Speicher entfernbar,
beispielsweise auch während
des normalen Betriebs des GSM-Moduls, mit dem GSM Modul 2 verbunden
sein, d.h. der Datenspeicher ist austauschbar. Beispiele hierfür sind so genannte
USB-Sticks sowie Speicherkarten.
-
Der
Programmspeicher 6 umfasst einen ersten Bereich 16 und
einen zweiten Bereich 18. Der erste Bereich 16 enthält den zur
Steuerung des GSM-Moduls 2 erforderlichen Programmcode,
so genannte Firmware 16, und ist beschreibbar. Der zweite Bereich 18 ist
schreibgeschützt
und enthält
ein Ladeprogrammcode 18, d.h. eine Software zur Aktualisierung
des im ersten Bereich 16 gespeicherten Programmcodes. Es
ist möglich,
den Schreibschutz für den
zweiten Bereich 18 permanent auszugestalten, z.B. in Form
eines permanenten ROM-Speichers. Alternativ kann der zweite Bereich 18 durch
zusätzliche externe
Programmierungsmittel veränderbar
sein. Allerdings enthält
der Programmspeicher 6 keinen Programmcode, der den zweiten
Bereich 18 beschreiben kann, d.h. der zweite Bereich 18 ist
in Bezug auf die Ausführung
der im Programmspeicher 6 abgelegten Software schreibgeschützt.
-
Das
GSM-Modul 2 kann zusätzlich
noch einen hier nicht dargestellten flüchtigen Speicher (RAM) aufweisen,
der zum temporären
Ablegen von Daten bei der Ausführung
des Programmcodes verwendet wird.
-
Die
Kommunikationsschnittstelle 10, die über eine Daten- und Steuerverbindung 24 mit
dem Prozessor verbunden ist, kann ein Funkmodul sein, d.h. sie stellt
eine drahtlose Schnittstelle 20 dar. Dabei können verschiedene
Datenverbindungen aufgebaut werden, z.B. EDGE, GPRS oder CSD-Verbindungen.
Alternativ oder auch zusätzlich
kann die Kommunikationsschnittstelle 10 eine Drahtschnittstelle 22 umfassen.
Die Kommunikationsschnittstelle 10 wird über den
im ersten Bereich 16 abgelegten Programmcode, d.h. der
Firmware, angesteuert, und baut dabei eine Datenverbindung zu einer
Zentrale oder einem anderen Gerät
auf, um Daten zu übertragen.
Typischerweise liegen die Daten und insbesondere der neue Programmcode,
der zum GSM-Modul übertragen
werden soll, in komprimierter Form auf dem externen Gerät, beispielsweise
einem Server, bereit. Nach Aufbau der beispielsweise drahtlosen Verbindung
(z.B. GPRS, EDGE, CSD) werden die Daten (neuer Programmcode) in
das GSM Modul übertragen
und in dem Datenspeicher 12 abgelegt. Verschiedenste Checksummen
bei der Übertragung sowie
beim Abspeichern gewährleisten,
dass der neue Programmcode fehlerfrei im Datenspeicher 12 vorliegt.
-
Mit
Bezug zu den 2A und 2B wird nachfolgend
die Aktualisierung des Programmcodes ausführlich beschrieben. Dabei zeigen
die grau hinterlegten Felder die jeweils aktiven Komponenten des
GSM-Moduls während
der einzelnen Verfahrensschritte.
-
In 2A ist
die erste Phase des Aktualisierungsprogramms schematisch dargestellt.
Zur Vereinfachung sind hier als Komponenten eines GSM-Moduls 30 ein
Funkmodul 31, ein nichtflüchtiger Programmspeicher 32 mit
einem ersten beschreibbaren Bereich 34 und einem zweiten
nicht-beschreibbaren Bereich 36 und ein separater Datenspeicher 38 dargestellt.
Der Mikroprozessor dieses GSM-Moduls ist nicht dargestellt. Es versteht
sich jedoch von selbst, dass dieses GSM-Modul einen Mikroprozessor
aufweist, der, gesteuert durch den jeweils aktiven Programmcode
(Software), das GSM-Modul 30 steuert.
-
Die
Darstellung des GSM-Moduls 30 ist daher in den 2A und 2B nach
funktionalen Aspekten vorgenommen worden. Unter dem Funkmodul 31 wird
daher hier eine Hardwarekomponente ver standen, die in der Lage ist,
eine Datenverbindung herzustellen. Das Funkmodul 31 steht
somit für
eine vom Mikroprozessor unter Kontrolle des im ersten Bereich 34 abgelegten
Programmcodes (Firmware) 34 angesteuerte drahtlose Kommunikationsschnittstelle.
Zur Herstellung einer Datenverbindung zu einem externen Server erhält das GSM-Modul 31 einen speziellen
Befehl, beispielsweise "Filetransfer
Starten". Dieser
Befehl kann extern oder vor Ort durch eine Bedienperson ausgelöst werden.
Als Datenverbindungen stehen verschiedene Varianten zur Verfügung, beispielsweise
EDLE, GPRS oder CSD-Verbindungen. Der Aufbau der Datenverbindung
und die Datenübertragung
in den externen Datenspeicher 38 werden von der im ersten
Bereich 34 des Programmspeichers 32 abgelegten
Firmware 34 gesteuert. Zur Übertragung (angedeutet durch
Pfeile) der Daten bzw. des neuen Programmcodes (neue Firmware) können verschiedene
gesicherte Protokolle genutzt werden, beispielsweise Filetransferprotokoll
oder ZModem. Der neue Programmcode wird über das Funkmodul 31 in
den externen Speicher übertragen. Zum
Ende der ersten Phase befindet sich ein Abbild (Image) der neuen
Firmware in komprimierter Form im externen Datenspeicher 38.
-
Der
externe Datenspeicher 38 ist hier ein zusätzliches
permanentes SPI-Speichermedium, welches fest im GSM-Modul 30 integriert
ist.
-
In
Phase 2, dargestellt in 2B, wird
die eigentliche, oder unmittelbare Aktualisierung der Firmware 34 vorgenommen.
Dazu wird die Firmware 34 (im ersten Bereich 34 abgelegt)
deaktiviert. Dagegen wird die im zweiten, schreibgeschützten Bereich 36 des
Programmspeichers 32 abgelegte Ladesoftware (Ladeprogrammcode) 36 aktiviert.
Typischerweise erfolgt dies dadurch, dass die Firmware 34 die
Ladesoftware 36 aufruft, welche wiederum die Firmware deaktiviert.
Die Ladesoftware steuert nun über den
Mikroprozessor die Übertragung
der neuen Firmware vom Datenspeicher 38 in den ersten Bereich 34 des
Programmspeichers 32. Ladesoftware 36 und Firmware 34 sind separate
Softwarekomponenten, die unabhängig
voneinander arbeiten.
-
Gesteuert
durch die Ladesoftware 36 wird die deaktivierte Firmware 34 durch
die im Datenspeicher 38 zwischengespeicherte neue Firmware
teilweise oder vollständig überschrieben.
wird die Firmware nicht korrekt überschrieben,
wird dieser Vorgang wiederholt. So kann sichergestellt werden, dass sich
anschließend
nur funktionsfähige
Firmware im Programmspeicher befindet. Die Überprüfung erfolgt typischerweise
durch einen Prüfsummencheck.
Abschließend
erfolgt die Aktivierung der neuen Firmware, indem das GSM Modul
neu gestartet wird, beispielsweise durch einen Selbststart des GSM-Moduls.
-
Alternativ
kann das Aktualisierungsverfahren auch ohne die erste Phase vorgenommen
werden. In diesem Fall ist der externe Speicher entfernbar mit dem
GSM-Modul 31 verbunden. Die neue Firmware ist dann extern
auf den Datenspeicher 38 übertragen worden, der dann
anschließend
mit dem GSM-Modul verbunden wird. Die Übertragung der neuen Firmware
erfolgt dann gemäß der zweiten
Phase (2B).
-
Wird
das Softwareupdate in der zweiten Phase unterbrochen, beispielsweise
durch Unterbrechung der Stromversorgung, erfolgt nach dem Neustart
des GSM-Moduls ein erneutes Schreiben durch die Ladesoftware 36.
Durch die Trennung der Datenübertragung
von eigentlichem Update der Firmware erhöht sich die Zuverlässigkeit
des Verfahrens. Zum anderen muss die Übertragung der Daten nicht
ausschließlich
durch die drahtlose Schnittstelle erfolgen, sondern kann ebenso über drahtgebundene
Netwerkverbindungen (z.B. bei quasistationären Geräten) oder durch den Austausch
des Datenspeichers erfolgen.
-
Mit
Bezug auf 3A bis 4B wird
eine weitere Verfahrensvariante beschrieben. Bei dieser Variante
ist im ersten Bereich 34 des GSM-Moduls 30 neben
der eigentlichen Firmware 40 zusätzlich eine Java-Anwendung
(anwendungsspezifische Software) 42 sowie eine Filesystemschnittstelle 44 abgelegt.
Die Java-Anwendung 42 steuert den eigentlichen Filetransfer.
Damit dies aus Java heraus möglich
ist, stellt die Firmware 40 die Filesystemschnittstelle 44 zur
Verfügung.
Der Aufbau der Dateistruktur ist in 5 erkennbar.
-
Das
Filesystem ist bewusst einfach ausgelegt. Zum einen werden die Erfordernisse
von Java bedient, zum anderen wird eine lineare Datenstruktur aufgebaut,
die es der Ladesoftware 36 ermöglicht, weiterhin in gewohnter
Weise auf den Datenspeicher 38 zuzugreifen. Das Filesystem
besteht nur aus einem Laufwerk, mit der Möglichkeit, nur eine Datei abzuspeichern.
Der Datenspeicher, der hier als SPI Flash 45 realisiert
ist, ist in Sektoren 1 bis N (46..50) aufgeteilt.
Im Sektor 1 (46) wird immer die Headerinformation 51 abgespeichert.
In diesem sind Informationen wie Fileattribute, Filename, Checksummen und
Statusflags gespeichert. Die Daten 52 werden linear beginnend
ab Sektor 2 (47) abgelegt.
-
Die
Filesystemschnittstelle 44 ermöglicht den Zugriff auf den
externen Datenspeicher 38 wie auf ein herkömmliches
Laufwerk und vereinfacht daher die Datenübertragung.
-
Die
eigentliche Dateiübertragung
erfolgt analog zur bereits oben beschriebenen ersten Phase, d.h.
das Funkmodul 31 stellt eine Verbindung zum externen Server
her und überträgt, gesteuert
von der Java-Anwendung 42, die neue Firmware in den Datenspeicher 38.
Die jeweils aktiven Komponenten bzw. der jeweils aktive Verfahrensschritt
sind in 3A und 3B grau
hinterlegt.
-
Nach
der erfolgreichen Übertragung
der neuen Firmware erfolgt die Aktualisierung wie bereits im Zusammenhang
mit dem ersten Ausführungsbeispiel beschrieben.
Die zweite Phase ist hier in 4A und 4B dargestellt.
Die Ladesoftware 36 wird gestartet und steuert die Aktualisierung,
d.h. Übertragung der
neuen Firmware vom Datenspeicher in den Programmspeicher. Abschließend erfolgt
der Neustart des GSM-Moduls.
-
- 2
- GSM
Modul/Endgerät
- 4
- Mikroprozessor
- 6
- Programmspeicher
- 8
- Daten-
und Adressbus
- 10
- Kommunikationsmodul/Kommunikationsschnittstelle
- 12
- Datenspeicher
- 14
- Schnittstelle
- 16
- erster
Bereich/Programmcode
- 18
- zweiter
Bereich/Ladeprogrammcode
- 20
- drahtlose
Schnittstelle
- 22
- Drahtschnittstelle
- 24
- Daten-
und Steuerverbindung
- 30
- GSM-Modul
- 31
- Funkmodul
- 32
- Programmspeicher
- 34
- erste
Bereich/Firmware
- 36
- zweiter
Bereich/Ladesoftware
- 38
- Datenspeicher
- 40
- Firmware
- 42
- Java-Anwendung
- 44
- Filesystemschnittstelle
- 45
- Datenspeicher/SPI-Flash
- 46–50
- Sektoren
- 51
- Headerinformation
- 52
- Daten