DE102006004599A1 - Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts - Google Patents

Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts Download PDF

Info

Publication number
DE102006004599A1
DE102006004599A1 DE200610004599 DE102006004599A DE102006004599A1 DE 102006004599 A1 DE102006004599 A1 DE 102006004599A1 DE 200610004599 DE200610004599 DE 200610004599 DE 102006004599 A DE102006004599 A DE 102006004599A DE 102006004599 A1 DE102006004599 A1 DE 102006004599A1
Authority
DE
Germany
Prior art keywords
terminal
program code
memory
area
microprocessor
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
DE200610004599
Other languages
English (en)
Inventor
Henry Dankert
Gottfried Enders
Burkhard Meischke
Hartmut SCHRÖTER
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.)
Thales DIS AIS Deutschland GmbH
Original Assignee
Siemens 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 Siemens AG filed Critical Siemens AG
Priority to DE200610004599 priority Critical patent/DE102006004599A1/de
Priority to PCT/EP2006/069228 priority patent/WO2007087918A1/de
Publication of DE102006004599A1 publication Critical patent/DE102006004599A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Es wird ein Verfahren zur Aktualisierung von Programmcode eines Endgeräts (2) vorgeschlagen. Das Endgerät (2) weist einen Mikroprozessor (4) und einen dem Mikroprozessor (4) zugeordneten nicht-flüchtigen Programmspeicher (6) auf, der einen ersten beschreibbaren Bereich (16), der Programmcode zur Steuerung des Endgeräts (2) enthält, und einen zweiten schreibgeschützten Bereich (18), der Ladeprogrammcode zur Einspeicherung von Programmcode in den ersten Bereich (16) enthält, umfasst. Weiterhin verfügt das Endgerät (2) über einen separaten nicht flüchtigen Datenspeicher (12). Zur Aktualisierung des im ersten Bereich (16) abgelegten Programmcodes wird der Ladeprogrammcode durch den Mikroprozessor (4) ausgeführt, so dass, gesteuert durch den Ladeprogrammcode, der im ersten Bereich (16) des Programmspeichers (6) abgelegte Programmcode durch im Datenspeicher (2) enthaltenen neuen Programmcode teilweise oder vollständig überschrieben wird.

Description

  • 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

Claims (20)

  1. Verfahren zur Aktualisierung von Programmcode eines Endgeräts mit – einem Mikroprozessor (4); – einem nicht-flüchtigen Programmspeicher (6), der dem Mikroprozessor (4) zugeordnet ist und einen ersten beschreibbaren Bereich (16), der Programmcode zur Steuerung des Endgeräts (2) enthält, und einen zweiten schreibgeschützten Bereich (18), der Ladeprogrammcode zur Einspeicherung von Programmcode in den ersten Bereich (16) enthält, aufweist; und – einem zum nicht-flüchtigen Programmspeicher (6) separaten nicht-flüchtigen Datenspeicher (12); mit den Schritten: – Ausführen des Ladeprogrammcodes durch den Mikroprozessor (4), so dass, gesteuert durch den Ladeprogrammcode, der im ersten Bereich (16) des Programmspeichers (6) abgelegte Programmcode durch im Datenspeicher (12) enthaltenen neuen Programmcode teilweise oder vollständig überschrieben wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass nach erfolgtem Überschreiben ein Neustart des Endgeräts (2) durchgeführt wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass das Endgerät (2) ein Einprozessorgerät ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der Programmspeicher (6) durch einen Daten- und Adressbus (8) mit dem Mikroprozessor (4) verbunden ist.
  5. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass das Endgerät (2) eine Schnittstelle (14) zum Datenaustausch mit dem Datenspeicher (12) hat.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass der Datenspeicher (12) entfernbar mit dem Endgerät (2) verbunden ist.
  7. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass der Datenspeicher (12) fest in das Endgerät (2) integriert ist.
  8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass das Endgerät (2) eine Kommunikationsschnittstelle (10) zum Kommunizieren mit externen Geräten aufweist, und dass vor Ausführung des Ladeprogrammcodes der neue Programmcode über die Kommunikationsschnittstelle (10) im Datenspeicher (12) zwischengespeichert wird.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass, gesteuert durch den im ersten Bereich (16) gespeicherten Programmcode, eine Verbindung zu einem externen Gerät über die Kommunikationsschnittstelle (10) hergestellt und der neue Programmcode über die Kommunikationsschnittstelle (10) in den Datenspeicher (12) übertragen wird.
  10. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass der Programmcode (40) zur Steuerung des Endgeräts (2) eine Filesystemschnittstelle (44) bereithält, die mit einem im ersten Bereich (12) des Programmspeichers abgelegten anwendungsspezifischen Programmcode (42) kommuniziert, wobei der anwendungsspezifische Programmcode (42) die Übertragung des neuen Programmcodes in den Datenspeicher (38) steuert.
  11. Verfahren nach einem der Ansprüche 8 bis 10, dadurch gekennzeichnet, dass nach dem Übertragen des neuen Programmcodes der Ladeprogrammcode aktiviert wird.
  12. Verfahren nach einem der Ansprüche 8 bis 11, dadurch gekennzeichnet, dass die Kommunikationsschnittstelle (10) eine drahtlose Schnittstelle ist.
  13. Endgerät mit – einem Mikroprozessor (4); – einem nicht-flüchtigen Programmspeicher (6), der dem Mikroprozessor (4) zugeordnet ist und einen ersten beschreibbaren Bereich (16), in welchem Programmcode zur Steuerung des Endgeräts (2) gespeichert ist, und einen zweiten schreibgeschützten Bereich (18), in welchem Ladeprogrammcode zum Einschreiben von Programmcode in den ersten Bereich (16) gespeichert ist, aufweist; und – einem zum nicht-flüchtigen Programmspeicher (6) separaten nicht-flüchtigen Datenspeicher (12), auf den der Mikroprozessor (4), gesteuert durch den Ladeprogrammcode, zugreifen und dort abgelegten Programmcode auslesen und in den ersten Bereich (16) des Programmspeichers (6) ablegen kann.
  14. Endgerät nach Anspruch 13, dadurch gekennzeichnet, dass der Datenspeicher (12) über eine Schnittstelle (14) mit dem Mikroprozessor (4) verbunden ist.
  15. Endgerät nach Anspruch 13 oder 14, dadurch gekennzeichnet, dass der Datenspeicher (12) entfernbar mit dem Endgerät (2) verbunden ist.
  16. Endgerät nach Anspruch 13 oder 14, dadurch gekennzeichnet, dass der Datenspeicher (12) fest in das Endgerät (2) integriert ist.
  17. Endgerät nach einem der Ansprüche 13 bis 16, dadurch gekennzeichnet, dass der Programmspeicher (6) über einen Daten- und Adressbus (8) mit dem Mikroprozessor (4) verbunden ist.
  18. Endgerät nach einem der Ansprüche 13 bis 17, dadurch gekennzeichnet, dass das Endgerät (2) eine Kommunikationsschnittstelle (10) zum Kommunizieren mit externen Geräten aufweist und Programmcode über die Kommunikationsschnittstelle (10) in den Datenspeicher (12) übertragbar ist.
  19. Endgerät nach Anspruch 18, dadurch gekennzeichnet, dass die Kommunikationsschnittstelle (10) eine drahtlose Schnittstelle ist.
  20. Endgerät nach einem der Ansprüche 13 bis 19, dadurch gekennzeichnet, dass das Endgerät (2) ein Einzelprozessorgerät ist.
DE200610004599 2006-02-01 2006-02-01 Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts Ceased DE102006004599A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE200610004599 DE102006004599A1 (de) 2006-02-01 2006-02-01 Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts
PCT/EP2006/069228 WO2007087918A1 (de) 2006-02-01 2006-12-01 Endgerät und verfahren zur aktualisierung von programmcode eines endgeräts

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610004599 DE102006004599A1 (de) 2006-02-01 2006-02-01 Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts

Publications (1)

Publication Number Publication Date
DE102006004599A1 true DE102006004599A1 (de) 2007-08-09

Family

ID=37709593

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610004599 Ceased DE102006004599A1 (de) 2006-02-01 2006-02-01 Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts

Country Status (2)

Country Link
DE (1) DE102006004599A1 (de)
WO (1) WO2007087918A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013220523B4 (de) 2013-10-11 2023-05-25 Continental Automotive Technologies GmbH Verfahren zum Aktualisieren einer Betriebsfunktion eines Sensors und ein Sensormodul

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018104227A1 (de) * 2018-02-26 2019-08-29 Insta Gmbh Kommunikationsmodul sowie Verfahren zum Einrichten eines solchen Kommunikationsmoduls
JP7408593B2 (ja) * 2021-03-23 2024-01-05 株式会社東芝 制御装置、情報処理装置、および情報処理システム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0793166A2 (de) * 1995-08-14 1997-09-03 Aisin Aw Co., Ltd. Navigationssystem und Rechnerladeprogramme dafür

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3187624B2 (ja) * 1993-11-19 2001-07-11 京セラミタ株式会社 通信機能を備えた機器の内蔵プログラム更新方法
WO2001017214A1 (en) * 1999-09-01 2001-03-08 Weblink Wireless, Inc. System and method for over-the-air reprogramming of an advanced wireless messaging device
DE10053952A1 (de) * 2000-10-31 2002-06-27 Siemens Ag Verfahren und Anordnung zum Updaten von Software auf einem mobilen prozessorgesteuerten Gerät
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0793166A2 (de) * 1995-08-14 1997-09-03 Aisin Aw Co., Ltd. Navigationssystem und Rechnerladeprogramme dafür

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013220523B4 (de) 2013-10-11 2023-05-25 Continental Automotive Technologies GmbH Verfahren zum Aktualisieren einer Betriebsfunktion eines Sensors und ein Sensormodul

Also Published As

Publication number Publication date
WO2007087918A1 (de) 2007-08-09

Similar Documents

Publication Publication Date Title
EP0849667A2 (de) System zum Austausch von Software
DE102011075776A1 (de) Verfahren und System zum Aktualisieren eines gemeinsam genutzten Speichers
DE102005013285A1 (de) Verfahren zum Konfigurieren eines Steuergeräts und Steuergerät
EP1744236A1 (de) Konfiguration von Bauelementen bei einem Übergang von einem Niedrigleistungs-Betriebsmodus in einen Normalleistungs-Betriebsmodus
DE102008030397A1 (de) Vorrichtung und Verfahren zum drahtlosen Programmieren
EP3218804A1 (de) Update einer firmware
EP1119810A1 (de) Speicherprogrammierbare steuerung mittels datenverwaltung über netzrechner und verfahren zum betrieb einer speicherprogrammierbaren steuerung
DE102006004599A1 (de) Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts
DE102015207795A1 (de) Verfahren und Vorrichtung zum Aktualisieren von Software in einem Transportmittel
DE102016201769A1 (de) Verfahren zum Aktualisieren von Software eines Steuergerätes, vorzugsweise für ein Kraftfahrzeug
DE10312756A1 (de) Verfahren zum Betrieb einer Steuerung an einem Kommunikationsmedium
DE112013003240B4 (de) Verfahren zur Steuerung eines Kraftfahrzeuggetriebes
DE102017125172A1 (de) Verfahren zur Aktualisierung eines Bootloaders eines Controllers einer Leuchte
DE102005009639A1 (de) Verfahren und Vorrichtung zum Sichern individueller Einstellungsdaten
WO2017178211A1 (de) Verfahren zum betreiben eines steuergeräts für ein fahrzeug, steuergerät, betriebssystem, kraftfahrzeug
DE10014561A1 (de) Verfahren zur Programmierung eines Steuergerätes
DE102009047974B4 (de) Verfahren zur Programmierung eines Steuergeräts
DE10050604A1 (de) Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten
DE102005050288A1 (de) System zur Durchführung von Softwareupdates in Embeddded Systemen sowie ein Verfahren dazu
DE19741703C2 (de) Verfahren zum Laden von Betriebssoftware sowie Mobiltelefon hierfür
DE10260103A1 (de) Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
DE102021002079B3 (de) Verfahren zum effizienten Ablegen von Daten
DE102019000493A1 (de) Verfahren zur Aktualisierung einer jeweiligen Software mehrerer Steuergeräte eines Fahrzeugs
EP3602274B1 (de) Firmware-update-over-the air (fota) in der gebäudetechnik
DE102016211772A1 (de) Verfahren und Vorrichtung zum Aktualisieren mehrerer Steuergeräte über einen gemeinsamen Feldbus

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection
8127 New person/name/address of the applicant

Owner name: CINTERION WIRELESS MODULES GMBH, 81669 MUENCHE, DE