DE60206055T2 - System und verfahren für verbesserte sicherheit bei der umprogrammierung eines handgerätes - Google Patents

System und verfahren für verbesserte sicherheit bei der umprogrammierung eines handgerätes Download PDF

Info

Publication number
DE60206055T2
DE60206055T2 DE60206055T DE60206055T DE60206055T2 DE 60206055 T2 DE60206055 T2 DE 60206055T2 DE 60206055 T DE60206055 T DE 60206055T DE 60206055 T DE60206055 T DE 60206055T DE 60206055 T2 DE60206055 T2 DE 60206055T2
Authority
DE
Germany
Prior art keywords
reprogramming
code
wireless communication
communication device
data
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.)
Expired - Lifetime
Application number
DE60206055T
Other languages
English (en)
Other versions
DE60206055D1 (de
Inventor
Gowri Rajaram
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.)
Kyocera Corp
Original Assignee
Kyocera Wireless Corp
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
Priority claimed from US09/917,026 external-priority patent/US7328007B2/en
Priority claimed from US09/916,900 external-priority patent/US7027806B2/en
Priority claimed from US09/916,460 external-priority patent/US7159214B2/en
Priority claimed from US09/927,131 external-priority patent/US7143407B2/en
Priority claimed from US09/969,305 external-priority patent/US7386846B2/en
Application filed by Kyocera Wireless Corp filed Critical Kyocera Wireless Corp
Application granted granted Critical
Publication of DE60206055D1 publication Critical patent/DE60206055D1/de
Publication of DE60206055T2 publication Critical patent/DE60206055T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • H04W8/24Transfer of terminal data
    • H04W8/245Transfer of terminal data from a network towards a terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/18Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
    • H04W8/20Transfer of user or subscriber data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stored Programmes (AREA)
  • Transceivers (AREA)
  • Telephonic Communication Services (AREA)
  • Communication Control (AREA)
  • Sub-Exchange Stations And Push- Button Telephones (AREA)
  • Information Transfer Between Computers (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Circuits Of Receivers In General (AREA)
  • Debugging And Monitoring (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Selective Calling Equipment (AREA)

Description

  • Hintergrund
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein das Gebiet der drahtlosen Kommunikation und insbesondere Sicherheitssysteme zur Neueinrichtung und Umprogrammierung einer drahtlosen Kommunikationsvorrichtung.
  • Drahtlose Kommunikationsvorrichtungen, welche jede Art von Gerät umfassen, das über ein drahtloses Kommunikationsnetzwerk kommuniziert, werden programmiert und eingerichtet, wenn sie hergestellt werden. Alternativ können sie programmiert und eingerichtet werden, wenn sie durch einen Händler oder einen Netzzugangsanbieter, wie zum Beispiel Sprint, Verizon, AT&T Mobile und andere, aktiviert werden. Das Programmieren und Einrichten (hier insgesamt als "Programmieren" bezeichnet) einer drahtlosen Kommunikationsvorrichtung (hier auch als eine "drahtlose Vorrichtung", "Mobilteil" oder "mobiles Gerät" bezeichnet), versorgt das Mobilteil mit seiner Mobil-Identifikationsnummer ("MIN") – auch seine Telefonnummer genannt, und anderen Betriebsparametern, Netzwerkparametern und Anwendungssoftware. Diese Elemente werden in einem persistenten Speicher in dem Mobilteil untergebracht, wo sie nicht verändert oder gelöscht werden können.
  • Typischerweise, siehe zum Beispiel US-A-5673317, werden Mobilteile durch den Netzbetreiber oder Dienstanbieter programmiert, wenn das Mobilteil aktiviert wird. In herkömmlichen Mobilteilen wird, nachdem diese Programmierung stattfand, auch ein Verriegelungscode (hier auch als ein "Zugriffscode" bezeichnet) in dem persistenten Speicher in dem Mobilteil untergebracht. Danach muss jeden weiteren Programmierversuchen zuerst der Zugriffscode geliefert werden, bevor das Mobilteil erlaubt, dass sein persistenter Speicher modifiziert wird, ein Vorgang, der als Neueinrichtung oder Umprogrammierung (hier insgesamt als "Umprogrammierung" bezeichnet) bekannt ist.
  • Diese Art herkömmlicher Sicherheit zum Umprogrammieren von Mobilteilen begegnet vielen Schwierigkeiten. Durch die Interessen des Graumarktes und des Schwarzmarktes wurden Anwendungsdienstprogramme und -werkzeuge entwickelt, die in der Lage sind, den Zugriffscode eines Mobilteiles offen zu legen, so dass das Mobilteil umprogrammiert werden kann. Oftmals werden dann umprogrammierte Telefone als Graumarktgüter an arglose Kunden verkauft. Außerdem werden diese unerlaubt umprogammierten Telefone auch auf dem Schwarzmarkt verkauft, wo ihre Verwendung legale Kunden durch Blockieren des Netzes mit unbezahltem Verkehr durcheinander bringt.
  • Was deshalb gebraucht wird, ist ein System und ein Verfahren, das für zusätzliche Sicherheit in Mobilteilen gegen unbefugtes Umprogrammieren sorgt, ohne das befugte Umprogrammieren zu behindern.
  • Zusammenfassung
  • Herkömmliche Mobilteile können gegenwärtig mit ziemlich preiswerten Softwaredienstprogrammen und einer seriellen Verbindung umprogrammiert werden. Ein solches Umprogrammieren erlaubt es, dass diese Mobilteile auf dem Grau- oder Schwarzmarkt verkauft werden, wo ihre unerlaubte Benutzung die Funkwellen mit zusätzlichem Verkehr blockiert und den Netzzugang für zahlende Kunden vereitelt.
  • Es werden Systeme und Verfahren und ein computerlesbares Medium, wie in den unabhängigen Ansprüchen 1, 7, 13, und 21 definiert, für verbesserte Sicherheit in der Mobilteil-Umprogrammierung bereitgestellt, die verhindern, dass ein Mobilteil, ohne eine Art von Autorisierung von dem Dienstanbieter (hier auch als "Netzbetreiber" bezeichnet) umprogrammiert wird. Ein signifikanter Vorteil dieser neuen Lösung ist, dass der Netzbetreiber Aufzeichnungen führen kann, die sich darauf beziehen, wann, wo und durch wen ihre Telefone, die auf den Markt gebracht wurden, umprogrammiert werden. Außerdem erhöht das Erfordernis einer Netzbetreiberautorisierung für das Umprogrammieren eines Mobilteiles signifikant die Schwierigkeit und Komplexität des Umprogrammierens von Mobilteilen für die Verbreitung auf dem Grau- oder Schwarzmarkt.
  • Wenn ein Mobilteil eine Umprogrammierungsanforderung empfängt oder einen Umprogrammierungsversuch entdeckt, kontaktiert das Mobilteil den Netzbetreiber für eine Autorisierung, umprogrammiert zu werden. Das Netz kann die Autorisierung liefern, die Autorisierung verweigern, zusätzliche Informationen von der Umprogrammierungsvorrichtung verlangen oder die Umprogrammierungsvorrichtung direkt kontaktieren, um die Umprogrammierung zu autorisieren.
  • Zweckmäßigerweise kann das Mobilteil ohne den in dem persistenten Speicher gespeicherten Zugriffscode hergestellt werden. Dieses Fehlen eines Zugriffscodes verschafft dem Mobilteil keine Möglichkeit, dass es ohne Kenntnis und Autorisierung des Netzbetreibers umprogrammiert wird. Weitere Vorteile und Anwendungen der hier vorgestellten Systeme und Verfahren werden nach der Durchsicht der ausführlichen Beschreibung deutlich.
  • Kurze Beschreibung der Zeichnungen
  • Die Details der vorliegenden Erfindung sowohl über ihre Struktur als auch über ihre Funktion können teilweise durch das Studium der beigefügten Zeichnungen erkundet werden, in denen gleiche Bezugszeichen gleiche Teile bezeichnen, und in welchen:
  • 1 ein schematisches Blockdiagramm des gesamten Softwarewartungssystems der drahtlosen Vorrichtung ist;
  • 2 ein schematisches Blockdiagramm des Softwarewartungssystems ist, das die Installation von Befehlssätzen über die Luftverbindungsschnittstelle hervorhebt;
  • 3 ein schematisches Blockdiagramm ist, das das System der vorliegenden Erfindung zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung darstellt;
  • 4 ein schematisches Blockdiagramm des Speichers der drahtlosen Vorrichtung ist;
  • 5 eine Tabelle ist, die die Codeabschnitt-Adresstabelle von 3 darstellt;
  • 6 eine ausführliche Darstellung der Symbolbibliothek eins von 3 mit Symbolen ist;
  • 7 eine Tabelle ist, die die Symboloffset-Adresstabelle von 3 darstellt;
  • 8 eine Darstellung des Operationscodes ("Opcode") ist, auf den durch die Laufzeitmaschine zugegriffen wird;
  • 9 eine ausführlichere Darstellung des ersten Operationscodes von 8 ist;
  • 10 ein Flussdiagramm ist, das das Verfahren der vorliegenden Erfindung zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung darstellt;
  • 11 ein Flussdiagramm ist, das eine beispielhafte Dynamischer-Befehlssatz-Operation darstellt;
  • 12 ein Flussdiagramm ist, das eine weitere beispielhafte Dynamischer-Befehlssatz-Operation darstellt;
  • 13 ein Flussdiagramm ist, das eine dritte beispielhafte Dynamischer-Befehlssatz-Operation darstellt;
  • 14 ein Flussdiagramm ist, das eine vierte beispielhafte Dynamischer-Befehlssatz-Operation darstellt;
  • 15 ein Flussdiagramm ist, das eine fünfte beispielhafte Dynamischer-Befehlssatz-Operation darstellt;
  • 16 ein Schaubild eines Netzwerks auf hoher Ebene ist, das ein Beispiel eines drahtlosen Kommunikationsnetzes darstellt;
  • 17A ein Blockdiagramm ist, das ein Beispiel einer drahtlosen Kommunikationsvorrichtung darstellt;
  • 17B ein Blockdiagramm ist, das ein Beispiel eines Entfernte-Laufzeitbefehle-Codeabschnitts darstellt;
  • 18A ein Blockdiagramm ist, das ein Beispiel eines PMRTI-Servers darstellt;
  • 18B ein Blockdiagramm ist, das ein Beispiel eines Server-Laufzeitbefehle-Codeabschnitts darstellt;
  • 19 ein Flussdiagramm ist, das einen Beispielvorgang zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung darstellt;
  • 20 ein Flussdiagramm ist, das einen Beispielvorgang zum Kompilieren dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung darstellt;
  • 21 ein Flussdiagramm ist, dass einen Beispielvorgang zum Ausführen dynamischer Befehlssätze auf einem PMRTI-Server darstellt;
  • 22 ein Flussdiagramm ist, dass einen Beispielvorgang zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt;
  • 23 ein Flussdiagramm ist, dass einen Öffentlicher-und-Privater-Schlüssel-Beispielvorgang zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt;
  • 24 ein Flussdiagramm ist, dass einen Beispielvorgang zum Erzeugen eines Fensters einer autorisierungsfreien Umprogrammierung an einem Mobilteil darstellt;
  • 25 ein Flussdiagramm ist, dass ein Beispiel eines PMRTI-Vorgangs zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt; und
  • 26 ein Blockdiagramm ist, das ein beispielhaftes Computersystem darstellt, das in Verbindung mit vielen hierin beschriebenen Ausführungsformen verwendet werden kann.
  • Ausführliche Beschreibung
  • Bestimmte Ausführungsformen, wie sie hier offenbart sind, sehen Systeme und Verfahren für eine bidirektionale Kommunikation von dynamischen Befehlssätzen zwischen einer drahtlosen Kommunikationsvorrichtung und einem drahtlosen Kommunikationsnetz vor. Beispielsweise ermöglicht ein Verfahren, wie es hier offenbart ist, dass eine drahtlose Kommunikationsvorrichtung einen Befehlssatz dynamisch aufbaut und diesen Befehlssatz an das Netz zur Ausführung und Verarbeitung sendet.
  • Nach dem Lesen dieser Beschreibung wird es dem Fachmann deutlich werden, wie die Erfindung in verschiedenen alternativen Ausführungsformen und alternativen Anwendungen zu implementieren ist. Obwohl verschiedene Ausführungsformen der vorliegenden Erfindung hier beschrieben werden, versteht es sich jedoch, dass diese Ausführungsformen nur als Beispiel und nicht als Begrenzung dargestellt werden. Von daher sollte diese ausführliche Beschreibung verschiedener alternativer Ausführungsformen nicht ausgelegt werden, um den Bereich oder den Umfang der vorliegenden Erfindung, wie er in den beigefügten Ansprüchen dargelegt ist, zu beschränken.
  • Einige Teile der ausführlichen Beschreibungen, die folgen, werden in Form von Prozeduren, Schritten, logischen Blöcken, Codes, einer Ablaufsteuerung und anderen symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Mikroprozessors oder Speichers einer drahtlosen Vorrichtung präsentiert. Diese Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten in der Datenverarbeitung verwendet werden, um den Inhalt ihrer Arbeit anderen Fachleuten äußerst effektiv mitzuteilen. Eine Prozedur, ein von einem Mikroprozessor ausgeführter Schritt, eine Anwendung, ein logischer Block, ein Prozess u.s.w. wird hier und allgemein verstanden als eine in sich konsistente Folge von Schritten oder Anweisungen, die zu einem gewünschten Ergebnis führen. Die Schritte sind jene, die physikalische Manipulationen physikalischer Größen erfordern. Obgleich nicht notwendigerweise, haben diese Größen üblicherweise die Form von elektrischen oder magnetischen Signalen, die gespeichert, übertragen, kombiniert, verglichen und anderweit in einer mikroprozessorbasierten drahtlosen Vorrichtung verarbeitet werden können. Es hat sich zuweilen erwiesen, hauptsächlich aus Gründen des allgemeinen Gebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder Ähnliches zu bezeichnen. Wo physische Vorrichtungen, wie zum Beispiel ein Speicher, erwähnt werden, sind sie mit anderen physischen Vorrichtungen durch einen Bus oder eine andere elektrische Verbindung verbunden. Diese physischen Vorrichtungen können betrachtet werden, dass sie mit logischen Abläufen oder Anwendungen zusammenwirken, und sind deshalb mit logischen Operationen "verbunden". Zum Beispiel kann ein Speicher einen Code speichern oder auf ihn zugreifen, um eine logische Operation zu unterstützen, oder eine Anwendung kann einen Codeabschnitt aus dem Speicher zur Ausführung aufrufen.
  • Man sollte jedoch nicht vergessen, dass alle diese und ähnliche Terme mit den geeigneten physikalischen Größen in Verbindung zu bringen sind und lediglich zweckmäßige Kennzeichnungen sind, die auf diese Größen angewendet werden. Sofern es nicht speziell anderweitig erklärt wird, als es aus den folgenden Diskussionen ersichtlich ist, versteht es sich, dass in der ganzen vorliegenden Erfindung Diskussionen, die Terme wie zum Beispiel "Verarbeiten" oder "Verbinden" oder "Übersetzen" oder "Anzeigen" oder "Eingeben" oder "Bestimmen" oder "Anzeigen" oder "Erkennen" oder Ähnliches verwenden, die Aktivität und die Prozesse eines Mikroprozessorsystems in einer drahtlosen Vorrichtung bezeichnen, das Daten, die als physikalische (elektronische) Größen innerhalb der Register und der Speicher des Computersystems repräsentiert werden, verarbeitet und in andere Daten umformt, die in gleicher Weise als physikalische Größen innerhalb der Speicher oder Register oder anderer solcher Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen der drahtlosen Vorrichtung repräsentiert werden.
  • 1 ist ein schematisches Blockdiagramm des gesamten Softwarewartungssystems 100 der drahtlosen Vorrichtung. Die Systemsoftware-Organisation der vorliegenden Erfindung ist im Folgenden im Anschluss an einen allgemeinen Überblick über das Softwarewartungssystem 100 ausführlich dargestellt. Das allgemeine System 100 beschreibt einen Vorgang des Lieferns von Systemsoftwareaktualisierungen und Befehlssätzen (Programmen) und das Installieren der gelieferten Software in einer drahtlosen Vorrichtung. Die Systemsoftwareaktualisierungen und Patchmanager-Laufzeitbefehle (PMRTI), die allgemeiner als Befehlssätze oder dynamische Befehlssätze bekannt sind, werden von dem Hersteller der Mobilteile erstellt. Die Systemsoftware ist in Symbolbibliotheken organisiert. Die Symbolbibliotheken sind in Codeabschnitte angeordnet. Wenn Symbolbibliotheken aktualisiert werden müssen, wird das Software-Update 102 als ein oder mehrere Codeabschnitte transportiert. Das Software-Update wird zu den drahtlosen Vorrichtungen gesendet, von denen die drahtlose Kommunikationsvorrichtung 104 repräsentativ ist, oder wird in separater Kommunikation von einer Basisstation 106 unter Verwendung bekannter Luft-, Daten- oder Nachrichtentransportprotokolle übertragen. Die Erfindung ist auf kein bestimmtes Transportformat beschränkt, da die drahtlose Kommunikationsvorrichtung leicht modifiziert werden kann, um jedes verfügbare Über-Luft-Transportprotokoll zum Zweck des Empfangens der Systemsoftware und der PMRTI-Updates zu verarbeiten.
  • Die Systemsoftware kann als eine Sammlung von verschiedenen Untersystemen betrachtet werden. Codeobjekte können fest in einem dieser abstrakten Untersysteme verankert sein, und die resultierende Sammlung kann als eine Symbolbibliothek gekennzeichnet werden. Dies sorgt für eine logische Aufgliederung der Codebasis, und Software-Patches und -Fixes können mit einer dieser Symbolbibliotheken in Verbindung gebracht werden. In den meisten Fällen ist eine einzelne Aktualisierung mit einer oder meistens zwei Symbolbibliotheken verbunden. Der Rest der Codebasis, die anderen Symbolbibliotheken, bleiben unverändert.
  • Der Gedanke der Symbolbibliotheken stellt einen Mechanismus bereit, mit Code und Konstanten umzugehen. Auf der anderen Seite passen die Lese-Schreib (RW)-Daten in eine einzelne individuelle RW-Bibliothek, die RAM-basierte Daten für alle Bibliotheken enthält.
  • Sobald der transportierte Codeabschnitt durch die drahtlose Vorrichtung 104 empfangen wurde, muss er verarbeitet werden. Diese drahtlose Vorrichtung überschreibt einen bestimmten Codeabschnitt des nichtflüchtigen Speichers 108. Der nichtflüchtige Speicher 108 weist einen Dateisystemabschnitt (FSS) 110 und einen Codespeicherabschnitt 112 auf. Der Codeabschnitt wird vor dem Transport typischerweise komprimiert, um die Belegung in dem FSS 110 zu minimieren. Oft wird der aktualisierte Codeabschnitt von seinen RW-Daten begleitet sein, die eine andere Art von Symbolbibliothek sind, die alle RW-Daten für jede Symbolbibliothek enthält. Obwohl die RW-Daten beim Ausführen der Systemsoftware in einen flüchtigen Direktzugriffs-Lese-Schreib-Speicher 114 geladen werden, müssen sie immer in dem nichtflüchtigen Speicher 108 gespeichert werden, so dass sie jedes Mal in den flüchtigen Direktzugriffs-Lese-Schreib-Speicher 114 geladen werden können, wenn die drahtlose Vorrichtung zurückgesetzt wird. Das beinhaltet, dass beim ersten Mal RW-Daten in den flüchtigen Direktzugriffs-Lese-Schreib-Speicher geladen werden. Wie nachfolgend ausführlicher erläutert, sind die RW-Daten typischerweise mit einem Patchmanager-Codeabschnitt angeordnet.
  • Das System 100 weist das Konzept virtueller Tabellen auf. Durch die Verwendung solcher Tabellen können Symbolbibliotheken in einem Codeabschnitt ohne Zerteilen (Ersetzen) anderer Teile der Systemsoftware (anderer Codeabschnitte) eingesetzt (ersetzt) werden. Virtuelle Tabellen werden aus Effizienzgründen von dem flüchtigen Direktzugriffs-Lese-Schreib-Speicher 114 ausgeführt. Eine Codeabschnitt-Adresstabelle und eine Symboloffset-Adresstabelle sind virtuelle Tabellen.
  • Die aktualisierten Codeabschnitte werden durch die drahtlose Vorrichtung 104 empfangen und in dem FSS 110 gespeichert. Eine Benutzerschnittstelle (UI) der drahtlosen Vorrichtung gibt dem Benutzer typischerweise bekannt, dass neue Software verfügbar ist. In Antwort auf UI-Eingabeaufforderungen bestätigt der Benutzer die Bekanntgabe und signalisiert den Patch- oder Aktualisierungsvorgang. Alternativ wird der Aktualisierungsvorgang automatisch ausgeführt. Es kann sein, dass die drahtlose Vorrichtung normale Kommunikationsaufgaben nicht ausführen kann, während der Aktualisierungsvorgang ausgeführt wird. Der Patchmanager- Codeabschnitt weist eine nichtflüchtige Lese-Schreib-Treiber-Symbolbibliothek auf, die auch in den flüchtigen Direktzugriffs-Lese-Schreib-Speicher 114 geladen wird. Die nichtflüchtige Lese-Schreib-Treiber-Symbolbibliothek bewirkt, dass Codeabschnitte mit aktualisierten Codeabschnitten überschrieben werden. Der Patchmanager-Codeabschnitt weist die Lese-Schreib-Daten, die Codeabschnitt-Adresstabelle und die Symboloffset-Adresstabelle sowie einen Symbol-Zugriffscode und die Symbol-Zugriffscodeadresse (im Folgenden erörtert) auf. Teile von diesen Daten sind ungültig, wenn aktualisierte Codeabschnitte eingeführt werden, und ein aktualisierter Patchmanager-Codeabschnitt weist Lese-Schreib-Daten, eine Codeabschnitt-Adresstabelle und eine Symboloffset-Adresstabelle auf, die für die aktualisierten Codeabschnitte gültig sind. Sobald die aktualisierten Codeabschnitte in den Codespeicherabschnitt 112 geladen sind, wird die drahtlose Vorrichtung zurückgesetzt. Anschließend an den Rücksetzvorgang kann die drahtlose Vorrichtung die aktualisierte Systemsoftware ausführen. Es versteht sich, dass der Patchmanager-Codeabschnitt andere Symbolbibliotheken beinhalten kann, die oben nicht erörtert wurden. Diese anderen Symbolbibliotheken müssen nicht in den flüchtigen Lese-Schreib-Speicher 114 geladen werden.
  • 2 ist ein schematisches Blockdiagramm des Softwarewartungssystems 100, welches die Installation von Befehlssätzen über die Luftverbindungsschnittstelle hervorhebt. Zusätzlich zum Aktualisieren von Systemsoftware-Codeabschnitten kann dass Wartungssystem 100 dynamische Befehlssätze, Programme oder Patchmanager-Befehlssätze (PMIS), die hier als Patchmanager-Laufzeitbefehle (PMRTI) bezeichnet werden, herunterladen und installieren. Der PMRTI-Codeabschnitt 200 wird zu der drahtlosen Vorrichtung 104 in der gleichen Weise wie die oben beschriebenen Systemsoftware- Codeabschnitte transportiert. PMRTI-Codeabschnitte werden am Anfang in dem FSS 110 gespeichert. Ein PMRTI-Codeabschnitt ist typischerweise eine Binärdatei, die man sich als kompilierte Anweisungen für das Mobilteil vorstellen kann. Ein PMRTI-Codeabschnitt ist umfassend genug, um für die Ausführung von grundlegenden mathematischen Operationen und die Ausführung von bedingt ausgeführten Operationen zu sorgen. Beispielsweise könnte ein RF-Kalibrierung-PMRTI die folgenden Operationen ausführen:
    IF RF CAL ITEM IS LESS THAN X
    EXECUTE INSTRUCTION
    ELSE
    EXECUTE INSTRUCTION
  • Ein PMRTI kann grundlegende mathematische Operationen unterstützen, wie zum Beispiel Addition, Subtraktion, Multiplikation und Division. Wie bei den Systemsoftware-Codeabschnitten kann der PMRTI-Codeabschnitt in Antwort auf UI-Eingabeaufforderungen geladen werden, und die drahtlose Vorrichtung muss zurückgesetzt werden, nachdem der PMRTI in den Codespeicherabschnitt 112 geladen ist. Dann kann der PMRTI-Abschnitt ausgeführt werden. Wenn der PMRTI-Codeabschnitt mit irgendwelchen virtuellen Tabellen oder Lese-Schreib-Daten verknüpft ist, wird ein aktualisierter Patchmanager-Codeabschnitt mit dem PMRTI für die Installation in den Codespeicherabschnitt 112 transportiert. Alternativ kann der PMRTI von dem FSS 110 aufbewahrt und verarbeitet werden. Nachdem das Mobilteil 104 all die Befehle in dem PMRTI-Abschnitt ausgeführt hat, kann der PMRTI-Abschnitt aus dem FSS 110 gelöscht werden. Alternativ wird der PMRTI für zukünftige Vorgänge behalten. Zum Beispiel kann der PMRTI jedes Mal ausgeführt werden, wenn die drahtlose Vorrichtung eingeschaltet wird.
  • PMRTI ist eine sehr leistungsfähige Laufzeit-Befehlsmaschine. Das Mobilteil kann jeden zu ihm gelieferten Befehl durch die PMRTI-Umgebung ausführen. Dieser Mechanismus kann verwendet werden, um RF-Kalibrierungen zu unterstützen. Allgemeiner kann PMRTI verwendet werden, um Fehler in der Software der drahtlosen Vorrichtung ferngesteuert zu beseitigen, wenn, typischerweise als das Ergebnis von Benutzerbeschwerden, Softwareprobleme durch den Hersteller oder den Dienstanbieter erkannt werden. PMRTI kann auch Daten erfassen, die benötigt werden, um Softwareprobleme zu diagnostizieren. PMRTI kann neu heruntergeladene Systemanwendungen für die Datenanalyse, die Fehlersuche und die Fehlerbeseitigung starten. PMRTI kann RW-Daten basierte Updates für die Analyse und mögliche vorläufige Behebung eines Problems anstatt eines aktualisierten Systemsoftware-Codeabschnitts bereitstellen. PMRTI kann Speicherkompaktierungsalgorithmen zur Verwendung durch die drahtlose Vorrichtung bereitstellen.
  • In einigen Aspekten der Erfindung kann die Organisation der Systemsoftware in Symbolbibliotheken Auswirkungen auf die Größe des flüchtigen Speichers 114 und des nichtflüchtigen Speichers 108 haben, die für die Ausführung erforderlich ist. Das liegt an der Tatsache, dass die Codeabschnitte typischerweise größer sind als die Symbolbibliotheken, die in den Codeabschnitten angeordnet sind. Diese größeren Codeabschnitte existieren, um aktualisierte Codeabschnitte aufzunehmen. Das Organisieren der Systemsoftware als eine Sammlung von Bibliotheken beeinflusst die Anforderung an die Größe des nichtflüchtigen Speichers. Für die gleiche Codegröße ist die Menge des verwendeten nichtflüchtigen Speichers infolge der Tatsache höher, dass Codeabschnitte so dimensioniert werden können, dass sie größer als die darin angeordneten Symbolbibliotheken sind.
  • Sobald die Softwareaktualisierungen zu der drahtlosen Vorrichtung geliefert wurden, unterstützt das Softwarewartungssystem 100 die Speicherkompaktierung. Speicherkompaktierung ist ähnlich der Disketten-Defragmentierungsanwendungen in Desktop-Computern. Der Kompaktierungsmechanismus stellt sicher, dass der Speicher optimal genutzt wird und gut ausgewogen für zukünftige Codeabschnittsaktualisierungen ist, bei denen die Größe der aktualisierten Codeabschnitte unvorhersagbar ist. Das System 100 analysiert den Codespeicherabschnitt, während er gepatcht (aktualisiert) wird. Das System 100 versucht, aktualisierte Codeabschnitte in den Speicherplatz einzupassen, der durch den Codeabschnitt belegt wird, der gerade ersetzt wird. Wenn der aktualisierte Codeabschnitt größer ist als der Codeabschnitt, der gerade ersetzt wird, kompaktiert das System 100 die Codeabschnitte im Speicher 112. Alternativ kann die Kompaktierung durch den Hersteller oder Dienstanbieter berechnet werden, und Kompaktierungsanweisungen können zu der drahtlosen Vorrichtung 104 transportiert werden.
  • Die Kompaktierung kann infolge der Komplexität des Algorithmus und auch des enormen Volumens der Datenbewegung ein zeitaufwendiger Vorgang sein. Der Kompaktierungsalgorithmus sagt die Machbarkeit voraus, bevor er irgendeine Verarbeitung beginnt. UI-Eingabeaufforderungen können verwendet werden, um um Erlaubnis von dem Benutzer nachzusuchen, bevor die Kompaktierung versucht wird.
  • In einigen Aspekten der Erfindung können alle Systemsoftware-Codeabschnitte gleichzeitig aktualisiert werden. Ein vollständiges Systemsoftware-Upgrade würde jedoch einen größeren FSS 110 erfordern.
  • 3 ist ein schematisches Blockdiagramm, das die Ausführung eines dynamischen Befehlssatzes der vorliegenden Erfindung in einer drahtlosen Kommunikationsvorrichtung darstellt. Das System 300 weist einen Codespeicherabschnitt 112 im Speicher 108 einschließlich ausführbarer Systemsoftware der drahtlosen Vorrichtung auf, die in eine Mehrzahl von aktuellen Codeabschnitten aufgeteilt ist. Es sind Codeabschnitt eins (302), Codeabschnitt zwei (304), Codeabschnitt n (306) und ein Patchmanager-Codeabschnitt 308 gezeigt. Jedoch ist die Erfindung nicht auf irgendeine bestimmte Anzahl von Codeabschnitten beschränkt. Ferner weist das System 300 eine erste Mehrzahl von Symbolbibliotheken auf, die in der zweiten Mehrzahl von Codeabschnitten angeordnet sind. Gezeigt sind die in Codeabschnitt eins (302) angeordnete Symbolbibliothek eins (310), die in Codeabschnitt zwei (304) angeordneten Symbolbibliotheken zwei (312) und drei (314) und die in Codeabschnitt n (306) angeordnete Symbolbibliothek m (316). Jede Bibliothek weist Symbole auf, die eine zugehörige Funktionalität haben. Zum Beispiel kann die Symbolbibliothek eins (310) den Betrieb des Flüssigkristalldisplays (LCD) der drahtlosen Vorrichtung umfassen. Dann würden die Symbole mit Displayfunktionen in Verbindung stehen. Wie im Folgenden ausführlich erörtert, sind zusätzliche Symbolbibliotheken in dem Patchmanager-Codeabschnitt 308 angeordnet.
  • 4 ist ein schematisches Blockdiagramm des Speichers der drahtlosen Vorrichtung. Wie gezeigt, ist der Speicher der Codespeicherabschnitt 112 von 1. Der Speicher ist ein beschreibbarer, nichtflüchtiger Speicher, wie zum Beispiel ein Flash-Speicher. Es versteht sich, dass die Codeabschnitte nicht notwendigerweise in dem gleichen Speicher wie der FSS 110 gespeichert sein müssen. Es versteht sich auch, dass die Systemsoftware-Struktur der vorliegenden Erfindung mit Codeabschnitten ermöglicht werden könnte, die in einer Mehrzahl von kooperierenden Speichern gespeichert sind. Der Codespeicherabschnitt 112 weist eine zweite Mehrzahl von angrenzend adressierten Speicherblöcken auf, wobei jeder Speicherblock einen zugehörigen Codeabschnitt von der zweiten Mehrzahl von Codeabschnitten speichert. So ist Codeabschnitt eins (302) in einem ersten Speicherblock 400, Codeabschnitt zwei (304) in dem zweiten Speicherblock 402, Codeabschnitt n (306) in dem n-ten Speicherblock 404 und der Patchmanager-Codeabschnitt (308) in dem p-ten Speicherblock 406 gespeichert.
  • Stellt man die 3 und 4 gegenüber, ist der Anfang jedes Codeabschnitts an entsprechenden Startadressen im Speicher gespeichert, und die Symbolbibliotheken sind so angeordnet, dass sie an dem Anfang von Codeabschnitten beginnen. Das heißt, jede Symbolbibliothek beginnt an einer ersten Adresse und durchläuft sequentiell einen Bereich von Adressen von der ersten Adresse an. Zum Beispiel beginnt Codeabschnitt eins (302) an der ersten Startadresse 408 (markiert mit "S") in dem Codespeicherabschnitt-Speicher 112. In 3 beginnt Symbolbibliothek eins (310) am Anfang 318 des ersten Codeabschnitts. Gleichermaßen beginnt Codeabschnitt zwei (304) an einer zweiten Startadresse 410 (4), und die Symbolbibliothek zwei beginnt am Anfang 320 von Codeabschnitt zwei (3). Codeabschnitt n (306) beginnt an einer dritten Startadresse 412 in dem Codespeicherabschnitt-Speicher 112 (4), und die Symbolbibliothek m (316) beginnt am Anfang des Codeabschnitts n 322 (3). Der Patchmanager-Codeabschnitt beginnt an der p-ten Startadresse 414 im Codespeicherabschnitt-Speicher 112, und die erste Symbolbibliothek in dem Patchmanager-Codeabschnitt 308 beginnt am Anfang 324 des Patchmanager-Codeabschnitts. Somit ist die Symbolbibliothek eins (310) ultimativ in dem ersten Speicherblock 400 gespeichert. Wenn ein Codeabschnitt eine Mehrzahl von Symbolbibliotheken aufweist, wie zum Beispiel Codeabschnitt zwei (304), werden die Mehrzahl von Symbolbibliotheken in dem zugehörigen Speicherblock gespeichert, in diesem Fall dem Speicherblock 402.
  • In 3 weist das System 300 ferner eine Codeabschnitt-Adresstabelle 326 als einen Symboltyp auf, der in einer Symbolbibliothek enthalten ist, die in dem Patchmanager-Codeabschnitt 308 angeordnet ist. Die Codeabschnitt-Adresstabelle stellt Querverweise von Codeabschnitt-Bezeichnern mit zugehörigen Codeabschnitt-Startadressen im Speicher her.
  • 5 ist eine Tabelle, die die Codeabschnitt-Adresstabelle 326 von 3 darstellt. Die Codeabschnitt-Adresstabelle 326 wird konsultiert, um die Codeabschnitt-Startadresse für eine Symbolbibliothek zu finden. Zum Beispiel sucht das System 300 den Codeabschnitt eins, wenn ein Symbol in der Symbolbibliothek eins zur Ausführung erforderlich ist. Um die Startadresse von Codeabschnitt eins zu finden und folglich das Symbol in der Symbolbibliothek eins zu lokalisieren, wird die Codeabschnitt-Adresstabelle 326 konsultiert. Die Anordnung von Symbolbibliotheken in Codeabschnitten und das Aufspüren von Codeabschnitten mit einer Tabelle erlaubt es, dass die Codeabschnitte verschoben oder ausgedehnt werden. Die Ausdehnungs- oder Verschiebungsvorgänge können erforderlich sein, um aktualisierte Codeabschnitte (mit aktualisierten Symbolbibliotheken) zu installieren.
  • Zurückkehrend zu 3 sollte beachtet werden, dass nicht jede Symbolbibliothek notwendigerweise an dem Anfang eines Codeabschnitts beginnt. Wie gezeigt, ist die Symbolbibliothek drei (314) im Codeabschnitt zwei (304) angeordnet, aber beginnt nicht an der Codeabschnitt-Startadresse 320. Daher konsultiert das System 300, wenn ein Symbol in der Symbolbibliothek drei (314) für die Ausführung erforderlich ist, die Codeabschnitt-Adresstabelle 326 für die Startadresse von Codeabschnitt zwei (304). Wie im Folgenden erläutert, erlaubt es eine Symboloffset-Adresstabelle, dass die Symbole in der Symbolbibliothek drei (314) lokalisiert werden. Es macht nichts, dass die Symbole über mehrere Bibliotheken verteilt sind, solange sie in dem gleichen Codeabschnitt gehalten werden.
  • Wie oben erwähnt, weist jede Symbolbibliothek funktionell zugehörige Symbole auf. Ein Symbol ist ein programmiererdefinierter Name zum Lokalisieren und Verwenden des Rumpfes einer Routine, einer Variable oder einer Datenstruktur. Somit kann ein Symbol eine Adresse oder ein Wert sein. Symbole können interne oder externe sein. Interne Symbole sind über den Bereich des aktuellen Codeabschnitts hinaus nicht sichtbar. Genauer gesagt, sie werden nicht von anderen Symbolbibliotheken in anderen Codeabschnitten gesucht. Externe Symbole werden über Codeabschnitte hinweg verwendet und aufgerufen und werden von Bibliotheken in unterschiedlichen Codeabschnitten gesucht. Die Symboloffset-Adresstabelle enthält typischerweise eine Liste von allen externen Symbolen.
  • Zum Beispiel kann die Symbolbibliothek eins (310) Zeichen auf einer Anzeige der drahtlosen Vorrichtung erzeugen. Symbole in dieser Bibliothek würden wiederum Telefonnummern, Namen, die Uhrzeit oder andere Anzeigemerkmale erzeugen. Jedes Merkmal wird mit Routinen erzeugt, die hier als ein Symbol bezeichnet werden. Beispielsweise erzeugt ein Symbol in der Symbolbibliothek eins (310) Telefonnummern auf der Anzeige. Dieses Symbol wird durch ein "X" dargestellt und ist extern. Wenn die drahtlose Vorrichtung einen Telefonanruf empfängt und der Anrufer-ID-Dienst aktiviert ist, muss das System das "X"-Symbol ausführen, um die Nummer auf der Anzeige zu erzeugen. Folglich muss das System das "X"-Symbol lokalisieren.
  • 6 ist eine ausführliche Darstellung der Symbolbibliothek eins (310) von 3 mit Symbolen. Die Symbole sind angeordnet, dass sie von den entsprechenden Codeabschnitt-Startadressen versetzt sind. In vielen Fällen ist der Anfang der Symbolbibliothek der Anfang eines Codeabschnitts, aber das stimmt nicht, wenn ein Codeabschnitt mehr als eine Symbolbibliothek aufweist. Symbolbibliothek eins (310) beginnt am Anfang des Codeabschnitts eins (siehe 3). Wie in 6 gezeigt, ist das "X"-Symbol bei einem Adressabstand von (03) von dem Anfang der Symbolbibliothek lokalisiert, und das "Y"-Symbol ist bei einem Adressabstand von (15) lokalisiert. Die Symboloffset-Adressen sind in einer Symboloffset-Adresstabelle 328 in dem Patchmanager-Codeabschnitt gespeichert (siehe 3).
  • 7 ist eine Tabelle, die die Symboloffset-Adresstabelle 328 von 3 darstellt. Die Symboloffset-Adresstabelle 328 stellt Querverweise von Symbol-Bezeichnern mit zugehörigen Offset-Adressen und mit zugehörigen Codeabschnitt-Bezeichnern im Speicher her. So wird, wenn das System das "X"-Symbol in der Symbolbibliothek eins ausführen möchte, die Symboloffset-Adresstabelle 328 konsultiert, um die exakte Adresse des Symbols in Bezug auf den Codeabschnitt zu lokalisieren, in welchem es angeordnet ist.
  • Zurückkehrend zu 3 weisen die erste Mehrzahl von Symbolbibliotheken typischerweise alle Lese-Schreib-Daten auf, die bei der Ausführung dieser Symbolbibliotheken konsultiert oder eingestellt werden müssen. Zum Beispiel kann eine Symbolbibliothek eine Operation enthalten, die von einem bedingten Befehl abhängt. Der Lese-Schreib-Datenbereich wird konsultiert, um den Zustand zu bestimmen, der erforderlich ist, um den bedingten Befehl auszuführen. Die vorliegende Erfindung gruppiert die Lese-Schreib-Daten von allen Symbolbibliotheken in einen gemeinsamen Lese-Schreib- Abschnitt. In einigen Aspekten der Erfindung sind die Lese-Schreib-Daten 330 in dem Patchmanager-Codeabschnitt 308 angeordnet. Alternativ (nicht gezeigt) können die Lese-Schreib-Daten in einem anderen Codeabschnitt, zum Beispiel Codeabschnitt n (306), angeordnet sein.
  • Die erste Mehrzahl von Symbolbibliotheken weist auch einen Symbol-Zugriffscode auf, der in einem Codeabschnitt angeordnet ist, um die Adresse eines gesuchten Symbols zu berechnen. Der Symbol-Zugriffscode kann an einer Adresse in einem separaten Codeabschnitt, zum Beispiel Codeabschnitt zwei (304), angeordnet und gespeichert sein. Jedoch ist, wie gezeigt, der Symbol-Zugriffscode 332 an einer Adresse in dem Patchmanager-Codeabschnitt 308 angeordnet und gespeichert. Das System 300 weist ferner eine erste Speicherstelle zur Speicherung der Symbol-Zugriffscodeadresse auf. Die erste Speicherstelle kann ein Codeabschnitt in dem Codespeicherabschnitt 112 oder in einem separaten Speicherabschnitt der drahtlosen Vorrichtung (nicht gezeigt) sein. Die erste Speicherstelle kann auch in dem selben Codeabschnitt wie die Lese-Schreib-Daten angeordnet sein. Wie gezeigt, ist die erste Speicherstelle 334 in dem Patchmanager-Codeabschnitt 308 mit den Lese-Schreib-Daten 330, der Symboloffset-Adresstabelle 328, der Codeabschnitt-Adresstabelle 326 und dem Symbol-Zugriffscode 332 und der Patch-Bibliothek (Patch-Symbolbibliothek) 336 gespeichert.
  • Der Symbol-Zugriffscode greift auf die Codeabschnitt-Adresstabelle und die Symboloffset-Adresstabelle zu, um die Adresse eines gesuchten Symbols im Speicher zu berechnen oder zu finden. Das heißt, der Symbol-Zugriffscode berechnet die Adresse des gesuchten Symbols unter Verwendung eines zugehörigen Symbol-Bezeichners und eines zugehörigen Codeabschnitt-Bezeichners. Wenn beispielsweise das "X"-Symbol in der Symbolbibliothek eins gesucht wird, wird der Symbol-Zugriffscode aufgerufen, um den Symbol-Bezeichner (Symbol-ID) "X_1" entsprechend dem "X"-Symbol zu suchen (siehe 7). Der Symbol-Zugriffscode konsultiert die Symboloffset-Adresstabelle, um zu bestimmen, dass der "X_1"-Symbol-Bezeichner einen Adressabstand von (03) von dem Anfang des Codeabschnitts eins hat (siehe 6). Der Symbol-Zugriffscode wird aufgerufen, um den Codeabschnittsbezeichner "CS_1" entsprechend dem Codeabschnitt eins zu suchen. Der Symbol-Zugriffscode konsultiert die Codeabschnitt-Adresstabelle, um die Startadresse zu bestimmen, die dem Codeabschnittsbezeichner (Codeabschnitt-ID) "CS_1" zugeordnet ist. Auf diese Weise bestimmt der Symbol-Zugriffscode, dass der Symbol-Bezeichner "X_1" einen Adressabstand von (03) von der Adresse (00100) hat, oder dass er sich an der Adresse (00103) befindet.
  • Das Symbol "X" ist ein reservierter Name, da er ein Teil des eigentlichen Codes ist. Mit anderen Worten, er hat absolute Daten, die mit ihm verknüpft sind. Die Daten können eine Adresse oder ein Wert sein. Der Symbol-Bezeichner ist ein alias, der erzeugt wurde, um das Symbol aufzuspüren. Sowohl die Symboloffset-Adresstabelle als auch die Codeabschnitt-Adresstabelle arbeiten mit Bezeichnern, um eine Verwechslung mit reservierten Symbol- und Codeabschnittsnamen zu vermeiden. Es ist auch möglich, das der gleiche Symbolname über viele Symbolbibliotheken hinweg verwendet wird. Die Verwendung von Bezeichnern verhindert eine Verwechslung zwischen diesen Symbolen.
  • Zurückkehrend zu 1 weist das System 300 ferner einen flüchtigen Lese-Schreib-Speicher 114 auf, typischerweise einen Direktzugriffsspeicher (RAM). Die Lese-Schreib-Daten 330, die Codeabschnitt-Adresstabelle 326, die Symboloffset-Adresstabelle 328, der Symbol-Zugriffscode 332 und die Symbol-Zugriffscodeadresse 334 werden von dem Patchmanager-Codeabschnitt in den flüchtigen Lese-Schreib-Speicher 114 für den Zugriff während der Ausführung der Systemsoftware geladen. Wie bekannt, ist die Zugriffszeit für im RAM gespeicherten Code signifikant geringer als der Zugriff auf einen nichtflüchtigen Speicher, wie zum Beispiel einen Flash.
  • Zurückkehrend zu 3 kann man bemerken, dass die Symbolbibliotheken die Codeabschnitte, in welchen sie angeordnet sind, nicht notwendigerweise ausfüllen müssen, obwohl die Speicherblöcke dimensioniert sind, um die entsprechenden, darin gespeicherten Codeabschnitte genau aufzunehmen. Anders gesagt, jeder von der zweiten Mehrzahl von Codeabschnitten hat eine Größe in Byte, die die angeordneten Symbolbibliotheken aufnimmt, und jeder der angrenzend andressierten Speicherblöcke hat eine Größe in Byte, die entsprechende Codeabschnitte aufnimmt. Zum Beispiel kann Codeabschnitt eins (302) ein 100-Byte-Abschnitt sein, um eine Symbolbibliothek aufzunehmen, die eine Länge von 100 Byte hat. Der erste Speicherblock würde 100 Byte haben, damit er zu der Byte-Größe von Codeabschnitt eins passt. Jedoch kann die in Codeabschnitt 1 geladene Symbolbibliothek kleiner als 100 Byte sein. Wie in 3 gezeigt, hat der Codeabschnitt eins (302) einen ungenutzten Abschnitt 340, da die Symbolbibliothek eins (310) kleiner als 100 Byte ist. Somit kann jeder der zweiten Mehrzahl von Codeabschnitten eine Größe haben, die größer ist als die Größe, die benötigt wird, um die angeordneten Symbolbibliotheken aufzunehmen. Durch "Überdimensionieren" der Codeabschnitte können größere aktualisierte Symbolbibliotheken aufgenommen werden.
  • Angrenzend adressierte Speicherblöcke beziehen sich auf das Partitionieren des physischen Speicherplatzes in logische Blöcke variabler Größe. Codeabschnitte und Speicherblöcke sind Begriffe, die im Wesentlichen austauschbar sind, wenn der Codeabschnitt im Speicher gespeichert wird. Das Konzept eines Codeabschnitts wird verwendet, um einen Abschnitt von Code, der vielleicht größer als die Symbolbibliothek ist, oder die Sammlung von Symbolbibliotheken in dem Codeabschnitt zu identifizieren, wenn er bewegt und verarbeitet wird.
  • Wie in 3 zu sehen, weist das System 300 eine Patch-Symbolbibliothek auf, welche hier als Patchbibliothek 336 bezeichnet wird, um neue Codeabschnitte in dem Codespeicherabschnitt mit den aktuellen Codeabschnitten anzuordnen. Die Anordnung von neuen Codeabschnitten mit aktuellen Codeabschnitten in dem Codespeicherabschnitt bildet eine aktualisierte, ausführbare Systemsoftware. Der Patchmanager 336 ordnet nicht nur neue Codeabschnitte mit den aktuellen Codeabschnitten an, er ersetzt auch Codeabschnitte durch aktualisierte Codeabschnitte.
  • Zurückkehrend zu 4 empfängt der Dateisystemabschnitt 110 des Speichers 108 neue Codeabschnitte, wie zum Beispiel den neuen Codeabschnitt 450 und einen aktualisierten Patchmanager-Codeabschnitt 452. Der Dateisystemabschnitt empfängt auch einen ersten Patchmanger-Laufzeitbefehl (PMRTI) 454 einschließlich Anweisungen zum Anordnen der neuen Codeabschnitte mit den aktuellen Codeabschnitten. Wie in 1 zu sehen, empfängt eine Luftverbindungsschnittstelle 150 neue oder aktualisierte Codeabschnitte sowie den ersten PMRTI. Obwohl die Luftverbindungsschnittstelle 150 durch eine Antenne dargestellt ist, versteht es sich, dass die Luftverbindungsschnittstelle auch einen RF-Transceiver, eine Basisband-Schaltung und eine Demodulationsschaltung (nicht gezeigt) umfassen würde. Der Dateisystemabschnitt 110 speichert die neuen Codeabschnitte, die über die Luftverbindungsschnittstelle 150 empfangen wurden. Die Patchbibliothek 336, die von dem flüchtigen Lese-Schreib-Speicher 114 ausgeführt wird, ersetzt einen ersten Codeabschnitt in dem Codespeicherabschnitt, zum Beispiel Codeabschnitt n (306), durch den neuen oder aktualisierten Codeabschnitt 450 in Antwort auf den ersten PMRTI 454. Typischerweise wird der Patchmanager-Codeabschnitt 308 durch den aktualisierten Patchmanager-Codeabschnitt 452 ersetzt. Wenn Codeabschnitte ersetzt werden, überschreibt die Patchbibliothek 336 den ersten Codeabschnitt, zum Beispiel Codeabschnitt n (306), in dem Codespeicherabschnitt 112 mit dem aktualisierten Codeabschnitt, zum Beispiel Codeabschnitt 450, in dem Datensystemabschnitt 110. Im Extremfall werden alle Codeabschnitte in dem Codespeicherabschnitt 112 durch aktualisierte Codeabschnitte ersetzt. Das heißt, der FSS 110 empfängt eine zweite Mehrzahl von aktualisierten Codeabschnitten (nicht gezeigt), und die Patchbibliothek 336 ersetzt die zweite Mehrzahl von Codeabschnitten in dem Codespeicherabschnitt 112 durch die zweite Mehrzahl von aktualisierten Codeabschnitten. Natürlich muss der FSS 110 groß genug sein, um die zweite Mehrzahl von aktualisierten Codeabschnitten aufzunehmen, die über die Luftverbindungsschnittstelle empfangen wurden.
  • Wie oben erwähnt, können die aktualisierten Codeabschnitte, die empfangen werden, Lese-Schreib-Daten-Codeabschnitte, Codeabschnitt-Adresstabelle-Codeabschnitte, Symbolbibliotheken, Symboloffset-Adresstabelle-Codeabschnitte, Symbol-Zugriffscode-Abschnitte oder einen Codeabschnitt mit einer neuen Patchbibliothek aufweisen. Alle diese Codeabschnitte mit ihren zugehörigen Symbolbibliotheken und Symbolen können als eindeutige und unabhängige Codeabschnitte gespeichert werden. Dann würde jeder dieser Codeabschnitte durch einen unikalen aktualisierten Codeabschnitt ersetzt werden. Das heißt, ein aktualisierter Lese-Schreib-Codeabschnitt würde empfangen werden und würde den Lese-Schreib-Codeabschnitt in dem Codespeicherabschnitt ersetzen. Ein aktualisierter Codeabschnitt-Adresstabelle-Codeabschnitt würde empfangen werden und würde den Codeabschnitt- Adresstabelle-Codeabschnitt in dem Codespeicherabschnitt ersetzen. Ein aktualisierter Symboloffset-Adresstabelle-Codeabschnitt würde empfangen werden und würde den Symboloffset-Adresstabelle-Codeabschnitt in dem Codespeicherabschnitt ersetzen. Ein aktualisierter Symbol-Zugriffscode-Abschnitt würde empfangen werden und würde den Symbol-Zugriffscode-Abschnitt in dem Codespeicherabschnitt ersetzen. Gleichermaßen würde ein aktualisierter Patchmanager-Codeabschnitt (mit einer Patchbibliothek) empfangen werden und würde den Patchmanager-Codeabschnitt in dem Codespeicherabschnitt ersetzen.
  • Jedoch sind die oben erwähnten Codeabschnitte typischerweise zusammen in dem Patchmanager-Codeabschnitt gebündelt. Daher wird der Lese-Schreib-Codeabschnitt in dem Codespeicherabschnitt durch den aktualisierten Lese-Schreib-Codeabschnitt aus dem Dateisystemabschnitt 110 ersetzt, wenn der Patchmanager-Codeabschnitt 308 durch den aktualisierten Patchmanager-Codeabschnitt 450 ersetzt wird. Gleichermaßen werden die Codeabschnitt-Adresstabelle, die Symboloffset-Adresstabelle, der Symbol-Zugriffscode-Abschnitt sowie die Patchbibliothek ersetzt, wenn der aktualisierte Patchmanager-Codeabschnitt 450 installiert wird. Die Anordnung der neuen Lese-Schreib-Daten, der neuen Codeabschnitt-Adresstabelle, der neuen Symboloffset-Adresstabelle, des neuen Symbol-Zugriffscodes und der neuen Patchbibliothek als der aktualisierte Patchmanager-Codeabschnitt 450 bildet zusammen mit den aktuellen Codeabschnitten in dem Codespeicherabschnitt eine aktualisierte, ausführbare Systemsoftware.
  • Wenn der Dateisystemabschnitt 110 eine aktualisierte Symbol-Zugriffscodeadresse empfängt, ersetzt der Patchmanager die Symbol-Zugriffscodeadresse an der ersten Stelle im Speicher durch eine aktualisierte Symbol-Zugriffscodeadresse. Wie oben erwähnt, ist die erste Stelle im Speicher 334 typischerweise in dem Patchmanager-Codeabschnitt (siehe 3).
  • Wie in 3 zu sehen, weist die Patchbibliothek 308 auch einen Kompaktierer oder eine Kompaktierer-Symbolbibliothek 342 auf. Der Kompaktierer 342 kann auch als ein eindeutiger und unabhängiger Codeabschnitt ermöglicht werden, jedoch ist es, wie oben erwähnt, nützlich und effizient, die Funktionen, die mit Systemsoftware-Upgrades zusammenhängen, in einem einzigen Patchmanager-Codeabschnitt zu bündeln. Im allgemeinen kann gesagt werden, dass der Kompaktierer 342 Codeabschnitte in der Größe anpasst, so dass neue Abschnitte mit aktuellen Codeabschnitten in dem Codespeicherbereich 112 angeordnet werden können.
  • Mit den Organisations-, Herunterlade- und Kompaktierungsaspekten der nun eingerichteten Erfindung konzentriert sich die folgende Diskussion auf das Dynamische-Befehlssatz-Ausführungssystem 300 der drahtlosen Kommunikationsvorrichtung. Das System 300 weist ausführbare Systemsoftware und Systemdaten auf, die in Codeabschnitte aufgeteilt sind, wie es oben sehr ausführlich erörtert wurde. Ferner weist das System 300 dynamische Befehlssätze zum Arbeiten an den Systemdaten und der Systemsoftware und zum Steuern der Ausführung der Systemsoftware auf. Wie in 4 zu sehen, ist ein dynamischer Befehlssatz 470 in dem ersten PMRTI 454 organisiert. Wie in 3 zu sehen, weist das System auch eine Laufzeitmaschine zum Verarbeiten der dynamischen Befehlssätze auf, die als Laufzeitbibliothek 370 ermöglicht werden. Wie die oben erwähnte Kompaktiererbibliothek 342 und die Patchbibliothek 336 ist die Laufzeitbibliothek 370 typischerweise in dem Patchmanager-Codeabschnitt 308 angeordnet. Jedoch könnte die Laufzeitbibliothek 370 alternativ in einem anderen Codeabschnitt, zum Beispiel dem ersten Codeabschnitt 304, angeordnet sein.
  • Die dynamischen Befehlssätze sind einzelne oder multiple Sätze von Anweisungen, die bedingten Operationscode und im allgemeinen Datenelemente aufweisen. Die Laufzeitmaschine liest den Operationscode und bestimmt, welche Operationen ausgeführt werden müssen. Operationscode kann bedingt, mathematisch, verfahrenstechnisch oder logisch sein. Die Laufzeitmaschine oder die Laufzeitbibliothek 370 verarbeitet die dynamischen Befehlssätze, um Operationen, wie zum Beispiel mathematische oder logische Operationen auszuführen. Das heißt, die Laufzeitmaschine liest den dynamischen Befehlssatz 470 und führt eine Folge von Operationen in Antwort auf den Operationscode aus. Obwohl die dynamischen Befehlssätze nicht auf irgendeine bestimmte Sprache beschränkt sind, ist der Operationscode typischerweise eine Form von Maschinencode, da der Speicher der drahtlosen Vorrichtung begrenzt ist und die Ausführungsgeschwindigkeit wichtig ist. Der Operationscode wird dahingehend als bedingt betrachtet, dass er ein Datenelement analysiert und als Ergebnis der Analyse eine Entscheidung trifft. Die Laufzeitmaschine kann auch bestimmen, dass eine Operation an den Daten ausgeführt wird, bevor sie analysiert werden.
  • Zum Beispiel kann der Operationscode spezifizieren, dass ein Datenelement von einem Speicher der drahtlosen Vorrichtung mit einem vorbestimmten Wert verglichen wird. Wenn das Datenelement kleiner als der vorbestimmte Wert ist, wird das Datenelement belassen, und wenn das Datenelement größer als der vorbestimmte Wert ist, wird es durch den vorbestimmten Wert ersetzt. Alternativ kann der Operationscode einen zweiten vorbestimmten Wert zu einem Datenelement aus dem Speicher der drahtlosen Vorrichtung hinzufügen, bevor die oben erwähnte Vergleichsoperation ausgeführt wird.
  • Wie oben erwähnt, empfängt der Dateisystemabschnitt 110 des nichtflüchtigen Speichers die dynamischen Befehlssätze durch eine Schnittstelle, wie zum Beispiel die Luftverbindung 150. Wie in 1 gezeigt, kann die Schnittstelle auch eine Radiofrequenz (RF)-Standleitung 160 sein. Dann kann der PMRTI durch den FSS 110 empfangen werden, ohne dass die Systemsoftware in Betrieb ist, wie zum Beispiel in einer Werkskalibrierungs-Umgebung. Der PMRTI kann auch über eine logische Portschnittstelle 162 oder ein installierbares Speichermodul 164 empfangen werden. Das Speichermodul 164 kann bei der Anfangskalibrierung in der drahtlosen Vorrichtung 104 installiert werden, im Außendienst installiert werden oder während einer Werksneukalibrierung installiert werden. Obwohl nicht speziell gezeigt, kann der PMRTI über eine Infrarot- oder Bluetooth-Schnittstelle empfangen werden.
  • 8 ist eine Darstellung von Befehlen, auf die durch die Laufzeitmaschine 370 zugegriffen wird. Es sind ein erster Befehl 800, ein zweiter Befehl 802 und ein j-ter Befehl 804 gezeigt, jedoch ist der dynamische Befehlssatz nicht auf irgendeine bestimmte Anzahl von Befehlen beschränkt. Die Länge des Operationscodes in jedem Befehl ist festgelegt. Die Laufzeitmaschine 370 erfasst die Länge des Befehls als ein Größenwert von Bytes oder Bits, der bestimmt, ob der Befehl Datenelemente enthält. Die verbleibende Länge des Befehls, nachdem der Operationscode abgezogen wurde, enthält die Datenelemente. Die Laufzeitmaschine extrahiert die Datenelemente aus dem Befehl. Wie gezeigt, wird die Länge 806 des ersten Befehls 800 gemessen und die Datenelemente 808 werden extrahiert. Es ist zu beachten, dass nicht notwendig alle Befehle zu extrahierende Datenelemente enthalten. Die Laufzeitmaschine 370 verwendet die extrahierten Daten 808 beim Ausführen der Folge von Operationen in Antwort auf den Operationscode 810 in dem Befehl 800.
  • 9 ist eine ausführlichere Darstellung des ersten Befehls 800 von 8. Unter Verwendung des ersten Befehls 800 als ein Beispiel weist der Befehl Operationscode 810 und Daten 808 auf. Der Befehl, und spezieller der Datenelementabschnitt 808, weist Symbol-Bezeichner auf, die als eine Verbindung zu Symbolen in den Codeabschnitten der drahtlosen Vorrichtung fungieren. Wie oben ausführlich erklärt, werden die Symbol-Bezeichner mit der Codeabschnitt-Adresstabelle 326 (siehe 5) und der Symboloffset-Adresstabelle 328 (siehe 7) verwendet, um das Symbol entsprechend dem Symbol-Bezeichner zu lokalisieren. Wie gezeigt, ist ein Symbolbezeichner "X_1" in dem ersten Befehl 800 gezeigt. Die Symboloffset-Adresstabelle 328 lokalisiert das zugehörige Symbol in einem Codeabschnitt mit dem Bezeichner "CS_1" und einem Adressabstand von "3". Die Codeabschnitt-Adresstabelle 326 liefert die Startadresse von Codeabschnitt eins (302). Auf diese Weise wird das Symbol "X" gefunden (siehe 6).
  • Nachdem die Laufzeitmaschine die Symbole entsprechend den empfangenen Symbol-Bezeichnern unter Verwendung der Codeabschnitt-Adresstabelle und der Symboloffset-Adresstabelle lokalisiert hat, extrahiert sie Daten, wenn die lokalisierten Symbole Datenelemente sind. Wenn zum Beispiel das Symbol "X" ein Datenelement in der Symbolbibliothek eins (310) ist, extrahiert es die Laufzeitmaschine. Alternativ kann das "X"-Symbol Operationscode sein, und die Laufzeitmaschine führt das Symbol "X" aus, wenn es lokalisiert wird.
  • PMRTI kann verwendet werden, um Systemdaten oder Systemdatenelemente zu aktualisieren. In einigen Aspekten der Erfindung werden Systemdaten in einem Codeabschnitt in dem Dateisystemabschnitt 110, zum Beispiel Codeabschnitt 472, gespeichert, siehe 4. Die Laufzeitmaschine greift auf die Systemdaten von Codeabschnitt 472 zu und analysiert die Systemdaten. Die Laufzeitmaschine verarbeitet den Operationscode der dynamischen Befehlssätze, um an Datenelementen mathematische oder logische Operationen auszuführen, wie es oben beschrieben ist. Nach der Operation verarbeitet die Laufzeitmaschine die Befehle, um aktualisierte Systemdaten zu erzeugen. Es ist zu beachten, dass die aktualisierten Systemdaten unter manchen Umständen unveränderte Datenelemente aufweisen können. Die Systemdaten in dem zweiten Codeabschnitt 472 werden durch die aktualisierten Systemdaten in Antwort auf den Operationscode ersetzt. Somit wird die Systemsoftware durch das Verarbeiten von Befehlen durch die Laufzeitmaschine gesteuert, damit sie unter Verwendung der aktualisierten Systemdaten im Codeabschnitt 472 ausgeführt wird. Auf diese Weise können spezifisch abgezielte Symbole in der Systemsoftware aktualisiert werden, ohne dass ganze Codeabschnitte ersetzt werden. Durch den gleichen Vorgang können die Systemdaten in einem Codeabschnitt in dem Codespeicherabschnitt 112 ersetzt werden. Zum Beispiel können die Systemdaten in dem dritten Codeabschnitt 344 gespeichert sein, und die Laufzeitmaschine kann die Systemdaten in dem dritten Codeabschnitt durch aktualisierte Systemdaten in Antwort auf den Operationscode ersetzen.
  • PMRTI kann auch verwendet werden, um Datenelemente in dem flüchtigen Speicher 114 zu aktualisieren. Als ein Beispiel empfängt der flüchtige Speicher 114 Lese-Schreib-Daten 330, siehe 1. Die Lese-Schreib-Daten können aus einem oder aus einer Mehrzahl von Codeabschnitten in dem Codespeicherabschnitt 112 und/oder dem FSS 110 sein. Die Laufzeitmaschine greift auf die Lese-Schreib-Daten zu, analysiert die Lese-Schreib-Daten 330, erzeugt aktualisierte Lese-Schreib-Daten und ersetzt die Lese-Schreib-Daten 330 in dem flüchtigen Speicher 114 durch die aktualisierten Lese- Schreib-Daten in Antwort auf den Operationscode. Dann wird die Systemsoftware gesteuert, damit sie unter Verwendung der aktualisierten Lese-Schreib-Daten in dem flüchtigen Speicher 114 ausgeführt wird.
  • In einigen Aspekten der Erfindung überwacht die Laufzeitmaschine die Ausführung der Systemsoftware. Ausführungsüberwachung ist weit definiert, um eine große Anzahl von Aktivitäten der drahtlosen Vorrichtung zu umfassen. Zum Beispiel können Daten wie zum Beispiel Kanalparameter, Kanalcharakteristika, System-Stapelspeicher, Fehlerbedingungen oder eine Aufzeichnung von Datenelementen im RAM durch eine Folge von Operationen, die zu einem spezifischen Fehlerzustand oder zu einem Zustand reduzierter Leistung führen, gesammelt werden. Es ist auch möglich, dynamische Befehlssätze zu verwenden, um gesammelte Ausführungsdaten zu analysieren, aktualisierte Datenvarianten bereitzustellen und Daten wiederzuerlangen, um mögliche Lösungen für das Problem zu studieren. Temporäre Fehlerbehebungen können unter Verwendung von PMRTI-Prozessen auch bereitgestellt werden.
  • Insbesondere sammelt die Laufzeitmaschine Ausführungsdaten und speichert die Ausführungsdaten in dem Dateisystemabschnitt in Antwort auf den Operationscode. Dann wird die Systemsoftware gesteuert, damit sie durch Sammeln der Ausführungsdaten für die Beurteilung der Systemsoftware ausgeführt wird. Die Beurteilung kann als eine Form der Analyse auftreten, die durch den Dynamischer-Befehlssatz-Operationscode ausgeführt wird, oder sie kann außerhalb der drahtlosen Vorrichtung ausgeführt werden. In einigen Aspekten der Erfindung greift die Laufzeitmaschine auf die Ausführungsdaten zu, die von dem Dateisystemabschnitt gesammelt wurden, und überträgt die Ausführungsdaten über eine Luftverbindungsschnittstelle in Antwort auf den Operationscode. Das Sammeln von Ausführungsdaten von auf dem Markt befindlichen drahtlosen Vorrichtungen erlaubt es einem Hersteller, Probleme, entweder lokal oder global, gründlich zu analysieren, ohne die Geräte zurückzurufen.
  • In einigen Aspekten der Erfindung empfängt der Dateisystemabschnitt 110 einen Patchmananger-Laufzeitbefehl, der einen neuen Codeabschnitt aufweist. Zum Beispiel ist ein neuer Codeabschnitt 474 in 4 gezeigt. Alternativ kann der neue Codeabschnitt von dem PMRTI unabhängig sein, wie zum Beispiel der neue Codeabschnitt n (450). Beispielsweise kann der neue Codeabschnitt n (450) in einer früheren Luftverbindungskommunikation empfangen worden sein, oder er kann während der Werkskalibrierung installiert worden sein. Die Laufzeitmaschine fügt den neuen Codeabschnitt 474 (450) dem Codespeicherabschnitt in Antwort auf den Operationscode hinzu. In einigen Aspekten der Erfindung wird der neue Codeabschnitt einem ungenutzten Block in dem Codespeicherabschnitt 112 hinzugefügt. Alternativ ist ein Kompaktierungsvorgang erforderlich. Dann wird die Systemsoftware gesteuert, damit sie unter Verwendung des neuen Codeabschnitts 474 (450) ausgeführt wird. In anderen Aspekten der Erfindung weist der PMRTI 454 einen aktualisierten Codeabschnitt 474 auf. Alternativ ist der neue Codeabschnitt 450 ein aktualisierter Codeabschnitt unabhängig von dem PMRTI. Die Laufzeitmaschine ersetzt einen Codeabschnitt in dem Codespeicherabschnitt, zum Beispiel Codespeicherabschnitt zwei (304) durch den aktualisierten Codeabschnitt 474 (450) in Antwort auf den Operationscode. Die Systemsoftware wird gesteuert, damit sie unter Verwendung des aktualisierten Codeabschnitts 474 (450) ausgeführt wird. In einigen Aspekten der Erfindung ist ein Kompaktierungsvorgang erforderlich, um den aktualisierten Codeabschnitt unterzubringen. Alternativ wird der aktualisierte Codeabschnitt einem ungenutzten oder freien Abschnitt des Codespeicherabschnitts hinzugefügt.
  • Wie oben erläutert, erfordert die Hinzufügung eines neuen Codeabschnitts oder das Aktualisieren eines Codeabschnitts typischerweise der Erzeugung einer neuen Codeabschnitt-Adresstabelle, da dieser Vorgang entweder neue und/oder geänderte Codeabschnitt-Startadressen nach sich zieht. Ferner erfordert auch ein Kompaktierungsvorgang eine neue Codeabschnitt-Adresstabelle. Die Kompaktierungsvorgänge können ein Ergebnis des Betriebes des oben erläuterten Kompaktierers 342 oder das Ergebnis von PMRTI-Befehlen sein, die Details liefern, wie die Kompaktierung zu erfolgen hat. Wenn der PMRTI Herunterlade- und Kompaktierungsbefehle aufweist, weist der PMRTI typischerweise auch eine neue Codeabschnitt-Adresstabelle auf, die gültig wird, nachdem der Herunterlade- und der Kompaktierungsvorgang abgeschlossen worden sind.
  • Die 10a und 10b sind Flussdiagramme, die das Verfahren der vorliegenden Erfindung zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung darstellen. Obwohl es der Klarheit wegen als eine Folge von nummerierten Schritten beschrieben wird, sollte aus der Nummerierung (und der Nummerierung in den im Folgenden dargestellten Verfahren) keine Reihenfolge abgeleitet werden, es sei denn, es wird explizit erklärt. Das Verfahren beginnt bei Schritt 1000. Schritt 1001a formt die Systemsoftware in Symbolbibliotheken, wobei jede Symbolbibliothek Symbole aufweist, die eine zugehörige Funktionalität haben. Schritt 1001b ordnet die Symbolbibliotheken in Codeabschnitte an. Schritt 1002 führt die Systemsoftware aus. Schritt 1003 empfängt die dynamischen Befehlssätze. Das Empfangen der dynamischen Befehlssätze in Schritt 1003 weist das Empfangen der dynamischen Befehlssätze durch eine Schnittstelle auf, die aus der Gruppe gewählt wird, die eine Luftverbindung, eine Radiofrequenz (RF)-Standleitung, ein installierbares Speichermodul, Infrarot und Logik-Portschnittstellen aufweist. In einigen Aspekten der Erfindung weist das Empfangen des dynamischen Befehlssatzes in Schritt 1003 das Empfangen eines Patchmanager-Laufzeitbefehls (PMRTI) in einem Dateisystemabschnitt des nichtflüchtigen Speichers auf.
  • Schritt 1004 startet eine Laufzeitmaschine. Typischerweise weist das Starten einer Laufzeitmaschine das Aufrufen einer Laufzeitbibliothek von einem ersten Codeabschnitt auf. Die Laufzeitmaschine kann entweder von einem flüchtigen oder einem nichtflüchtigen Speicher gestartet werden. Schritt 1006 verarbeitet die dynamischen Befehlssätze. Das Verarbeiten der dynamischen Befehlssätze weist das Verarbeiten von Befehlen in Antwort auf mathematische und logische Operationen auf. In einigen Aspekten der Erfindung löscht Schritt 1007 (nicht gezeigt) im Anschluss an das Verarbeiten der dynamischen Befehlssätze die dynamischen Befehlssätze. Schritt 1008 arbeitet an Systemdaten und Systemsoftware. Schritt 1010 steuert in Antwort auf das Arbeiten an den Systemdaten und der Systemsoftware die Ausführung der Systemsoftware.
  • Typischerweise weist das Empfangen der Patchmanager-Laufzeitbefehle in Schritt 1003 das Empfangen von bedingtem Operationscode und Datenelementen auf. Dann weist das Verarbeiten der dynamischen Befehlssätze in Schritt 1006 Unterschritte auf. Schritt 1006a1 verwendet die Laufzeitmaschine, um den Patchmanager-Laufzeitbefehl-Operationscode zu lesen. Schritt 1006b führt eine Folge von Operationen in Antwort auf den Operationscode aus.
  • In einigen Aspekten weist das Anordnen der Symbolbibliotheken in Codeabschnitte in Schritt 1001b das Starten von Symbolbibliotheken am Anfang von Codeabschnitten und das Anordnen von Symbolen auf, damit sie von ihren jeweiligen Codeabschnitt-Startadressen versetzt sind. Dann weist das Verfahren weitere Schritte auf. Schritt 1001c speichert den Anfang von Codeabschnitten an zugehörigen Startadressen. Schritt 1001d hält eine Codeabschnitt-Adresstabelle (CSAT) aufrecht, die Querverbindungen von Codeabschnitt-Bezeichnern mit zugehörigen Startadressen herstellt. Schritt 1001e hält eine Symboloffset-Adresstabelle (SOAT) aufrecht, die Querverbindungen von Symbol-Bezeichnern mit zugehörigen Offsetadressen und zugehörigen Codeabschnitt-Bezeichnern herstellt.
  • In einigen Aspekten der Erfindung weist das Empfangen des Patchmanager-Laufzeitbefehls in Schritt 1003 das Empfangen von Symbol-Bezeichnern auf. Dann weist das Verfahren einen weiteren Schritt auf. Schritt 1006a2 lokalisiert Symbole entsprechend der empfangenen Symbol-Bezeichner unter Verwendung der Codeabschnitt-Adresstabelle und der Symboloffset-Adresstabelle. Das Ausführen einer Folge von Operationen in Antwort auf den Operationscode in Schritt 1006b weist Unterschritte auf. Schritt 1006b1 extrahiert die Daten, wenn die lokalisierten Symbole Datenelemente sind. Schritt 1006b2 führt die Symbole aus, wenn die lokalisierten Symbole Anweisungen sind.
  • In einigen Aspekten der Erfindung weist das Verarbeiten dynamischer Befehlssätze in Schritt 1006b1 zusätzliche Unterschritte auf. Schritt 1006b1a verwendet die Laufzeitmaschine, um die Länge des Patchmanager-Laufzeitbefehls zu erhalten. Schritt 1006b1b extrahiert die Datenelemente aus dem Patchmanager-Laufzeitbefehl in Antwort auf den Operationscode. Schritt 1006b1c verwendet die extrahierten Daten beim Ausführen der Folge von Operationen in Antwort auf den Operationscode.
  • 11 ist ein Flussdiagramm, dass eine beispielhafte Dynamischer-Befehlssatz-Operation darstellt. Verschiedene der Schritte in 11 sind die gleichen wie in 10 und werden hier im Interesse der Kürze nicht wiederholt. Das Verarbeiten dynamischer Befehlssätze in Schritt 1106 weist Unterschritte auf. Schritt 1106a greift auf Systemdaten zu, die in einem zweiten Codeabschnitt in dem Dateisystemabschnitt gespeichert sind. Schritt 1106b analysiert die Systemdaten. Schritt 1106c erzeugt aktualisierte Systemdaten. Dann weist das Arbeiten an Systemdaten und Systemsoftware in Schritt 1108 das Ersetzen der Systemdaten in dem zweiten Abschnitt durch die aktualisierten Systemdaten auf, und das Steuern der Ausführung der Systemsoftware in Schritt 1010 weist das Verwenden der aktualisierten Systemdaten bei der Ausführung der Systemsoftware auf.
  • 12 ist ein Flussdiagramm, das eine weitere beispielhafte Dynamischer-Befehlssatz-Operation darstellt. Verschiedene der Schritte in 12 sind die gleichen wie in 10 und werden hier im Interesse der Kürze nicht wiederholt. Schritt 1201c speichert eine Mehrzahl von Codeabschnitten in einem Codespeicherabschnitt des nichtflüchtigen Speichers. Das Verarbeiten dynamischer Befehlssätze in Schritt 1206 weist Unterschritte auf. Schritt 1206a greift auf Systemdaten zu, die in einem dritten Codeabschnitt in dem Codespeicherabschnitt (CSS) gespeichert sind. Schritt 1206b analysiert die Systemdaten. Schritt 1206c erzeugt aktualisierte Systemdaten. Das Arbeiten an den Systemdaten und der Systemsoftware in Schritt 1208 weist das Ersetzen der Systemdaten in dem dritten Codeabschnitt durch die aktualisierten Systemdaten auf. Das Steuern der Ausführung der Systemsoftware in Schritt 1210 weist das Verwenden der aktualisierten Systemdaten bei der Ausführung der Systemsoftware auf.
  • 13 ist ein Flussdiagramm, das eine dritte beispielhafte Dynamischer-Befehlssatz-Operation darstellt. Verschiedene der Schritte in 13 sind die gleichen wie in 10 und werden hier im Interesse der Kürze nicht wiederholt. Schritt 1301c speichert eine Mehrzahl von Codeabschnitten in einem Codespeicherabschnitt des nichtflüchtigen Speichers. Schritt 1301d lädt Lese-Schreib-Daten in den flüchtigen Speicher. Das Verarbeiten dynamischer Befehlssätze in Schritt 1306 weist Unterschritte auf. Schritt 1306a greift auf die Lese-Schreib-Daten in dem flüchtigen Speicher zu. Schritt 1306b analysiert die Lese-Schreib-Daten. Schritt 1306c erzeugt aktualisierte Lese-Schreib-Daten. Das Arbeiten an den Systemdaten und der Systemsoftware in Schritt 1308 weist das Ersetzen der Lese-Schreib-Daten in dem flüchtigen Speicher durch die aktualisierten Lese-Schreib-Daten auf. Das Steuern der Ausführung der Systemsoftware weist das Verwenden der aktualisierten Lese-Schreib-Daten bei der Ausführung der Systemsoftware auf.
  • 14 ist ein Flussdiagramm, das eine vierte beispielhafte Dynamischer-Befehlssatz-Operation darstellt. Verschiedene der Schritte in 14 sind die gleichen wie in 10 und werden hier im Interesse der Kürze nicht wiederholt. Das Verarbeiten dynamischer Befehlssätze weist Unterschritte auf. Schritt 1406a überwacht in Antwort auf den Operationscode die Ausführung der Systemsoftware. Schritt 1406b sammelt Ausführungsdaten. Schritt 1406c speichert die Ausführungsdaten. Schritt 1406d sendet die gespeicherten Daten über eine Luftverbindungsschnittstelle. Das Arbeiten an den Systemdaten und der Systemsoftware in Schritt 1408 weist das Verwenden der Ausführungsdaten bei der Beurteilung der Systemsoftware auf.
  • 15 ist ein Flussdiagramm, das eine fünfte beispielhafte Dynamischer-Befehlssatz-Operation darstellt. Verschiedene der Schritte in 15 sind die gleichen wie in 10 und werden hier im Interesse der Kürze nicht wiederholt. Schritt 1501c speichert eine Mehrzahl von Codeabschnitten in einem Codespeicherabschnitt des nichtflüchtigen Speichers. Das Empfangen von Patchmanager- Laufzeitbefehlen in Schritt 1503 weist das Empfangen eines neuen Codeabschnitts auf. Das Arbeiten an den Systemdaten und der Systemsoftware in Schritt 1508 weist das Hinzufügen des neuen Codeabschnitts zu dem Codespeicherabschnitt auf, und das Steuern der Ausführung der Systemsoftware in Schritt 1510 weist das Verwenden des neuen Codeabschnitts bei der Ausführung der Systemsoftware auf.
  • Alternativ weist das Empfangen eines neuen Codeabschnitts in Schritt 1503 das Empfangen eines aktualisierten Codeabschnitts auf. Dann weist das Arbeiten an den Systemdaten und der Systemsoftware in Schritt 1508 das Ersetzen eines vierten Codeabschnitts in dem Codespeicherabschnitt durch den aktualisierten Codeabschnitt auf.
  • Ein System und ein Verfahren zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung wurden bereitgestellt, um bei dem Vorgang des Aktualisierens der Software und des Überwachens der Ausführung der Software zu helfen. Das System ist wegen der Anordnung von Symbolbibliotheken in Codeabschnitten leicht aktualisierbar, mit Tabellen, um auf die Startadressen der Codeabschnitte im Speicher und die Offsetadressen der Symbole in den Symbolbibliotheken zuzugreifen. Die Verwendung von dynamischen Befehlssätzen gestattet, dass kundenspezifische Modifikationen an jeder drahtlosen Vorrichtung, basierend auf spezifischen Charakteristika dieser Vorrichtung, ausgeführt werden. Ein paar allgemeine Beispiele wurden gegeben, die mögliche Verwendungen für die dynamischen Befehlssätze darstellen. Jedoch ist die vorliegende Erfindung nicht auf genau diese Beispiele beschränkt. Andere Variationen und Ausführungsformen der Erfindung werden dem Fachmann einfallen.
  • 16 ist ein Schaubild eines Netzwerks auf hoher Ebene, das ein Beispiel eines drahtlosen Kommunikationsnetzes gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Das dargestellte drahtlose Kommunikationsnetzwerk weist eine Mehrzahl von drahtlosen Kommunikationsvorrichtungen 10, 12 und 14; eine Mehrzahl von Basisstationen 20 und 22; einen PMRTI-Server 30 und einen Sicherheitsserver 35 auf, von denen jeder über ein Netz 40 mit den drahtlosen Kommunikationsvorrichtungen 10, 12 und 14 verbunden ist.
  • In der dargestellten Ausführungsform ist auch eine Umprogrammierungsvorrichtung 45 gezeigt, die mittels einer direkten Verbindung 47 mit dem Mobilteil 14 verbunden ist. Die direkte Verbindung 47 ist eine festverdrahtete, physische Verbindung zwischen dem Mobilteil 14 und der Umprogrammierungsvorrichtung 45, zum Beispiel ein serielles Kabel oder eine drahtgebundene Netzwerkverbindung. Die Umprogrammierungsvorrichtung 45 kann auch mit einem Netzwerk, wie zum Beispiel dem Internet 42, verbunden sein, das die Umprogrammierungsvorrichtung 45 durch Zugriff auf das Netz 40 bereitstellen kann. Außerdem kann die Umprogrammierungsvorrichtung 45 eine Fähigkeit zur drahtlosen Kommunikation haben, die es erlaubt, sie mit dem Netz 40 über eine Basisstation, wie zum Beispiel die Basisstation 22, zu verbinden.
  • Die drahtlose Kommunikationsvorrichtung 10 kann jede Art von Vorrichtung mit der Fähigkeit sein, innerhalb des drahtlosen Kommunikationsnetzes zu kommunizieren. Zum Beispiel kann die drahtlose Kommunikationsvorrichtung 10 ein Mobiltelefon, ein Minicomputer ("PDA"), ein Laptop-Computer, eine Armbanduhr oder jede andere Vorrichtung sein, die für drahtlose Kommunikation konfiguriert ist. Drahtlose Kommunikationsvorrichtungen können hier auch als "Mobilteile" oder "Mobiltelefone" oder "mobile Geräte" bezeichnet sein.
  • Die Basisstation 20 ist vorzugsweise konfiguriert, um über die Luft mit einer Mehrzahl von drahtlosen Kommunikationsvorrichtungen zu kommunizieren und weist einen Transceiver (nicht gezeigt) auf, der die Über-die-Luft-Kommunikation in eine drahtgebundene Kommunikation umwandelt, die über das Netz 40 läuft. Vorzugsweise ist das Netz 40 ein privates Netz, das von dem Drahtlos-Netzbetreiber betrieben wird. Das Netz 40 stellt vorzugsweise die Infrastruktur für das Weiterreichen zwischen Basisstationen, wie zum Beispiel den Basisstationen 20 und 22, bereit. Außerdem stellt das Netz 40 vorzugsweise die Kommunikationsverbindung zwischen verschiedenen Anwendungen, Diensten und anderen computerbasierten Servern, wie zum Beispiel dem PMRTI-Server 30 und dem Sicherheitsserver 35, bereit.
  • Das Netz 40 kann auch als Kanal für Verbindungen zu anderen Netzen (nicht gezeigt) dienen, wie zum Beispiel einem dienstintegrierten Digitalnetz ("ISDN"), einem öffentlichen analogen Telefonnetz ("PSTN"), einem öffentlichen landgestützten Mobilnetz ("PLMN"), einem öffentlichen, paketvermittelten Datennetz ("PSPDN") und dem Internet, nur um einige zu nennen.
  • Der PMRTI-Server 30 kann als ein einzelner Computer oder als eine Mehrzahl von logisch angeordneten Servern implementiert sein, um dynamische Befehlssätze an mobile Vorrichtungen zu liefern und um dynamische Befehlssätze auszuführen, die von mobilen Vorrichtungen empfangen werden. In gleicher Weise kann der Sicherheitsserver 35 unter Verwendung eines Mehrzweckcomputers mit einem oder mehreren Mikroprozessoren implementiert sein, wie es in der Technik wohlverstanden wird. Insbesondere können der Sicherheitsserver 35 und der PMRTI-Server 30 zusammen in einer einzigen physischen Servermaschine eingebaut sein, wo sie Hardware- und Systemressourcen teilen. Der Sicherheitsserver 35 und der PMRTI-Server 30 können auch Datenfiles teilen und durch Interprozesskommunikationstechniken oder physische oder drahtlose Verbindungen durch das Netz 40 kommunikativ gekoppelt sein.
  • 17A ist ein Blockdiagramm, das ein Beispiel einer drahtlosen Kommunikationsvorrichtung 10 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Die allgemeinen Merkmale der drahtlosen Kommunikationsvorrichtung 10, die erlauben, dass sie als solche funktioniert, sind in der Technik gut bekannt und werden deshalb hier nicht dargestellt oder beschrieben.
  • In einer Ausführungsform weist das Mobilteil 10 einen Zugriffscode 55 auf. Der Zugriffscode 55 ist in dem persistenten Speicher im Mobilteil 10 gespeichert, wo er nicht modifiziert oder gelöscht werden kann. Der Zugriffscode 55 kann eine alphanumerische Zeichenkette, eine Hexadezimalzahl, eine Binärzahl oder Ähnliches sein. Vorzugsweise ist der Zugriffscode 55 eine große Zahl oder Zeichenkette, die zufällig und sehr schwer durch illegale Umprogrammierungs-Dienstprogramme oder -Werkzeuge zu erlangen ist. In einer alternativen Ausführungsform weist das Mobilteil 10 den Zugriffscode 55 nicht auf. Wenn kein Zugriffscode im Mobilteil 10 verfügbar ist, sind die Umprogrammierungs-Dienstprogramme überhaupt nicht in der Lage, in solch einer Weise Zugriff auf das Mobilteil zu erlangen, die ein Umprogrammieren erlauben würde. Zweckmäßigerweise kann nur der Netzbetreiber das Umprogrammieren autorisieren, wenn kein Zugriffscode im Mobilteil 10 vorhanden ist. Solch eine Ausführungsform erhöht signifikant die Umprogrammierungssicherheit in dem Mobilteil.
  • In einer Ausführungsform kann der Zugriffscode 55 ein Flag enthalten, das das Mobilteil anweist, den Netzbetreiber nach der Autorisierung zu fragen, es umzuprogrammieren. Auf diese Weise kann der Netzbetreiber das in dem Zugriffscode 55 enthaltene Flag aktualisieren, so dass die Umprogrammierungssicherheit ausgeschaltet werden kann, für eine lokale Bestimmung eingestellt werden kann (zum Beispiel, wenn der richtige Zugriffscode bereitgestellt wird) oder für eine Netzbetreiber-Autorisierung eingestellt werden kann. Zweckmäßigerweise erlaubt das dem Netzbetreiber, die Umprogrammierungssicherheit auf einem individuellen Mobilteil-Detailtiefe-Pegel flexibel zu steuern.
  • Das Mobilteil 10 weist auch die Laufzeitmaschine 50, die Entfernter-Operationscode ("Opcode")-Bibliothek 60, die Server-Opcode-Bibliothek 70 und den Entfernte-Laufzeitbefehle-Codeabschnitt 80 auf. Die Laufzeitmaschine 50 ist vorzugsweise konfiguriert, um dynamische Befehlssätze zu verarbeiten. Ein Beispiel eines dynamischen Befehlssatzes ist ein PMRTI-Befehlssatz. Ein anderes Beispiel eines dynamischen Befehlssatzes ist ein RPMRTI-Befehlssatz. Der Unterschied zwischen diesen beiden Befehlssätzen ist, dass der PMRTI-Satz jene Funktionen aufweist, die durch die drahtlose Vorrichtung ausgeführt werden können, während der RPMRTI-Befehlssatz jene Funktionen aufweist, die durch den PMRTI-Server 30 ausgeführt werden können, der sich in dem Netz 40 befindet.
  • Das Verarbeiten von dynamischen Befehlssätzen weist die Ausführung von PMRTI-Sätzen, die von dem PMRTI-Server 30 empfangen werden, und die Kompilierung von RPMRTI-Sätzen und entsprechenden Daten zur Lieferung an den PMRTI-Server 30 auf. Vorzugsweise kann die Laufzeitmaschine 50, wenn erforderlich, durch die drahtlose Kommunikationsvorrichtung 10 gestartet werden, so dass sie nur läuft, wenn es notwendig ist und einen minimalen Umfang an Systemressourcen (z.B. Speicher, CPU-Zyklen etc.) in der Vorrichtung 10 verbraucht.
  • Die Entfernter-Opcode-Bibliothek 60 weist vorzugsweise die Gesamtheit der Operationscodes auf, die jede PMRTI-Funktion oder jedes ausführbare Codesegment repräsentieren. Zweckmäßigerweise weist die Entfernter-Opcode-Bibliothek 60 die Operationscodes auf, die als Platzhalter für die tatsächlich ausführbaren Maschinencodefunktionen oder Codesegmente dienen. Als solche enthält die Entfernter-Opcode-Bibliothek 60 eine Liste von allen verfügbaren Operationscodes, die jeder PMRTI-Funktion entsprechen, die durch die drahtlose Kommunikationsvorrichtung 10 ausgeführt werden kann.
  • In gleicher Weise weist die Server-Opcode-Bibliothek 70 vorzugsweise die Gesamtheit der Operationscodes auf, die jede RPMRTI-Funktion oder jedes ausführbare Codesegment repräsentieren. Zweckmäßigerweise weist die Server-Opcode-Bibliothek 70 nur die Operationscodes für die tatsächlich ausführbaren Maschinencodefunktionen oder Codesegmente auf, die sich nicht in der drahtlosen Kommunikationsvorrichtung 10 befinden. Als solche enthält die Server-Opcode-Bibliothek 70 eine Liste von all den Operationscodes für jede verfügbare RPMRTI-Funktion, die durch den PMRTI-Server 30 im Auftrag der drahtlosen Kommunikationsvorrichtung 10 ausgeführt werden kann.
  • In der bevorzugten Ausführungsform kann die Anzahl der verfügbaren RPMRTI-Funktionen gut die Anzahl der verfügbaren PMRTI-Funktionen übersteigen, weil der PMRTI-Server 30 nicht an den minimalen Ressourcen leidet, die man typischerweise in mobilen Vorrichtungen, wie zum Beispiel Mobiltelefonen und Minicomputern, findet.
  • Außerdem weist die drahtlose Kommunikationsvorrichtung 10 den Entfernter-Laufzeit-Befehlscode-Abschnitt 80 auf. Der Codeabschnitt 80 ist dort, wo sich der tatsächliche Maschinencode oder ausführbare Befehle in dem persistenten Speicher in der Vorrichtung 10 befinden. Diese ausführbaren Befehle oder Codesegmente entsprechen vorzugsweise in einer Eins-zu-Eins-Beziehung den Opcodes, die in der Entfernter-Opcode-Bibliothek 60 enthalten sind. 17B ist ein Blockdiagramm, das einen Beispiel- Codeabschnitt 80 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Wie gezeigt, kann jede Anzahl von PMRTI-Funktionen in dem Codeabschnitt 80 enthalten sein, von Befehl 01 bis Befehl n. Optimalerweise sind eine große Anzahl von Funktionen in dem Codeabschnitt 80 verfügbar und verbrauchen dennoch sehr wenig Ressourcen (d.h. persistenten Speicher) der Vorrichtung 10.
  • Zweckmäßigerweise können die Server-Opcode-Bibliothek 70, die Entfernter-Opcode-Bibliothek 60 und der entsprechende Codeabschnitt 80 in dem persistenten Speicher in der drahtlosen Kommunikationsvorrichtung 10 während der Herstellung der Vorrichtung 10 und vor ihrem Einsatz auf dem Markt (d.h. bevor sie an den Kunden verkauft wird) installiert werden. Spätere Updates zu dem Satz von Opcodes, der in beiden Bibliotheken enthalten ist, oder zu dem Satz von ausführbaren Befehlen in dem Codeabschnitt 80 können durch den PMRTI-Server 30, der den später mit Bezug auf 22 beschriebenen Vorgang implementiert, bereitgestellt werden.
  • Schließlich weist in der dargestellten Ausführungsform die drahtlose Kommunikationsvorrichtung eine Über-die-Luft-Kommunikationsverbindung 90 auf. Die Implementierung der Kommunikationsverbindung 90 ist in der Technik gut bekannt und versieht die drahtlose Kommunikationsvorrichtung 10 mit der Fähigkeit, innerhalb des drahtlosen Kommunikationsnetzes 100 über eine Radio- oder eine andere Über-die-Luft-Verbindung zu kommunizieren. Zweckmäßigerweise kann die Über-die-Luft-Kommunikationsverbindung 90 die Mittel für den PMRTI-Server 30 bereitstellen, um die Entfernter-Opcode-Bibliothek 60, die Server-Opcode-Bibliothek 70 und den Entfernte-Laufzeitbefehle-Codeabschnitt 80 zu aktualisieren.
  • 18A ist ein Blockdiagramm, das ein Beispiel eines PMRTI-Servers 30 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Die Merkmale eines Mehrzweck-Computers, der den PMRTI-Server implementieren kann, werden später mit Bezug auf 23 beschrieben.
  • In der dargestellten Ausführungsform weist der PMRTI-Server 30 ein Steuermodul 95, eine Entfernter-Opcode-Bibliothek 60, eine Server-Opcode-Bibliothek 70 und einen Server-Laufzeitbefehle-Codeabschnitt 82 auf. Die Entfernter-Opcode-Bibliothek 60 und die Server-Opcode-Bibliothek 70 enthalten vorzugsweise die gleiche Liste von Opcodes wie die Bibliotheken, die in der drahtlosen Kommunikationsvorrichtung 10 vorhanden sind. Das Steuermodul 95 ist vorzugsweise konfiguriert, dynamische Befehlssätze zu verarbeiten und ein Netz von PMRTI-Kommunikationen zwischen dem PMRTI-Server 30 und einer Mehrzahl von drahtlosen Kommunikationsvorrichtungen zu managen, die über das drahtlose Kommunikationsnetz verfügbar sind.
  • Zum Beispiel kann das Steuermodul 95 verschiedene dynamische PMRTI-Sätze kompilieren und jene Befehlssätze zu einer Vielzahl von einzelnen drahtlosen Kommunikationsvorrichtungen senden. In gleicher Weise kann das Steuermodul 95 auch eine Mehrzahl von dynamischen RPMRTI-Sätzen empfangen und solche Befehlssätze im Auftrag der sendenden drahtlosen Kommunikationsvorrichtung ausführen.
  • Die Entfernter-Opcode-Bibliothek 60 weist vorzugsweise die Gesamtheit der Operationscodes auf, die jeder verfügbaren PMRTI-Funktion oder jedem ausführbaren Codesegment entsprechen. Zweckmäßigerweise weist die Entfernter-Opcode-Bibliothek 60 eine Liste der Operationscodes auf, die als Platzhalter für die tatsächlich ausführbaren Maschninencodefunktionen oder Codesegmente in dem Entfernte-Laufzeitbefehle-Codeabschnitt 80 (in der drahtlosen Kommunikationsvorrichtung) dienen. Als solche enthält die Entfernter-Opcode-Bibliothek 60 eine Liste von allen verfügbaren Opcodes für alle verfügbaren PMRTI-Funktionen, die durch eine drahtlose Kommunikationsvorrichtung ausgeführt werden können.
  • In gleicher Weise weist die Server-Opcode-Bibliothek 70 vorzugsweise die Gesamtheit der Operationscodes auf, die jeder RPMRTI-Funktion oder jedem ausführbaren Codesegment entsprechen. Zweckmäßigerweise weist die Server-Opcode-Bibliothek 70 nur die Operationscodes für die tatsächlich ausführbaren Maschinencodefunktionen oder Codesegmente auf, die durch den PMRTI-Server 30 ausgeführt werden können. In der bevorzugten Ausführungsform kann die Anzahl der verfügbaren RPMRTI-Funktionen gut die Anzahl der verfügbaren PMRTI-Funktionen übersteigen, weil der PMRTI-Server 30 nicht an den minimalen Ressourcen leidet, die man typischerweise in mobilen Vorrichtungen, wie zum Beispiel Mobiltelefonen oder Minicomputern, findet.
  • Außerdem weist der PMRTI-Server 30 den Server-Laufzeitbefehle-Codeabschnitt 82 auf. Der Codeabschnitt 82 ist dort, wo sich der tatsächliche Maschinencode oder die ausführbaren Befehle in dem persistenten Speicher in dem Server 30 befinden. Diese ausführbaren Befehle oder Codesegmente entsprechen vorzugsweise in einer Eins-zu-Eins-Beziehung den Operationscodes, die in der Server-Opcode-Bibliothek 70 enthalten sind, die sich sowohl in dem Server 30 also auch in der drahtlosen Kommunikationsvorrichtung 10 befindet. 18B ist ein Blockdiagramm, das ein Beispiel eines Server-Laufzeitbefehle-Codeabschnitts gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 19 ist ein Flussdiagramm, das einen Beispielvorgang zum Ausführen dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Zunächst empfängt die drahtlose Vorrichtung in Schritt 500 einen Satz von entfernten Opcodes. Der Satz von entfernten Opcodes kann über eine Über-die-Luft-Kommunikationsverbindung, zum Beispiel eine Verbindung mit einem drahtlosen Kommunikationsnetz, empfangen werden. Vorzugsweise werden die Opcodes optimiert, um die Menge an Daten zu minimieren, die über die Luft gesendet werden. Außerdem können mit dem Satz von Opcodes, der durch die drahtlose Vorrichtung empfangen wird, Nutzdaten enthalten sein.
  • Im Schritt 502 startet die drahtlose Vorrichtung ihre Laufzeitmaschine, um den entfernten Opcode-Satz zu verarbeiten. Wie in Schritt 504 dargestellt, analysiert die Laufzeitmaschine den entfernten Opcode-Satz und extrahiert dann in Schritt 506 die Nutzdaten. Wenn keine Daten-Nutzinformation existiert, dann kann dieser Schritt übersprungen werden. Wenn Nutzdaten existieren, dann können die resultierenden Daten in einem verfügbaren Abschnitt des flüchtigen Speichers für die spätere Verwendung gespeichert werden. Als nächstes erhält die Laufzeitmaschine die ausführbaren Befehle, die den Opcodes in dem entfernten Opcode-Satz entsprechen, wie in Schritt 508 gezeigt. Diese Befehle können von dem Entfernte-Laufzeitbefehle-Codeabschnitt der drahtlosen Vorrichtung erhalten werden.
  • Sobald die ausführbaren Befehle entsprechend den Opcodes in dem entfernten Opcode-Satz erhalten worden sind, führt die Laufzeitmaschine die Befehle aus, wie in Schritt 510 dargestellt. Wenn die Befehle ausgeführt werden, können alle notwendigen Daten, an denen zu arbeiten ist, aus dem flüchtigen Speicher erhalten werden, wo die Daten-Nutzinformation gespeichert ist. Alternativ oder zusätzlich können alle notwendigen Daten, an denen zu arbeiten ist, als das Ergebnis eines ausgeführten Befehls erhalten werden.
  • Zum Beispiel kann die Daten-Nutzinformation ein aktualisiertes Softwaremodul für die drahtlose Vorrichtung aufweisen. Außerdem kann einer der Opcodes in dem entfernten Opcode-Satz einem ausführbaren Befehl zum Ersetzen eines Abschnitts des persistenten Speichers durch einen Abschnitt der Daten-Nutzinformation entsprechen. In diesem Beispiel ist der Abschnitt des persistenten Speichers, der ersetzt wird, das veraltete Softwaremodul, und als Ergebnis wird das aktualisierte Softwaremodul durch den Befehl in den persistenten Speicher geladen. Somit operieren der entfernte Opcode-Satz und die Daten-Nutzinformation in der drahtlosen Vorrichtung, um ein Softwaremodul zu aktualisieren.
  • Sobald der Befehlssatz in seiner Gesamtheit durch die Laufzeitmaschine ausgeführt wurde, kann die Laufzeitmaschine beendet werden, wie in Schritt 512 gezeigt. Zweckmäßigerweise kann die Laufzeitmaschine so gestartet und beendet werden, dass sie nur läuft, wenn es notwendig ist. Das spart Systemressourcen in der drahtlosen Vorrichtung, es können zum Beispiel flüchtiger Speicherplatz und CPU-Zyklen gespart werden.
  • 20 ist ein Flussdiagramm, das einen Beispielvorgang für das Kompilieren dynamischer Befehlssätze in einer drahtlosen Kommunikationsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Zunächst wird die Laufzeitmaschine gestartet, wie in Schritt 520 dargestellt. Sobald die Laufzeitmaschine läuft, kann die Maschine einen Satz von Server-Opcodes kompilieren, wie in Schritt 522 gezeigt. Der Satz von Server-Opcodes kann von einem Hintergrundprozess erhalten werden, der in der drahtlosen Vorrichtung läuft. Alternativ kann der Server-Opcode-Satz von einem Prozess erhalten werden, der in der drahtlosen Vorrichtung unter Leitung eines Benutzers läuft.
  • Zum Beispiel kann die drahtlose Vorrichtung einen Satz von Routinen aufweisen, die durch das Betriebssystem periodisch und automatisch laufen gelassen werden, um die Systemwartung oder andere wünschenswerte Funktionen auszuführen. Diese Prozeduren können im Ergebnis ihrer Ausführung bewirken, dass ein Server-Opcode-Satz durch die Laufzeitmaschine erzeugt wird. Alternativ kann ein Benutzer einen bestimmen Satz von Routinen auslösen, der nur ausgeführt wird, wenn er durch einen Benutzer angefordert wird. Dieser Satz von Routinen kann auch bewirken, dass ein Server-Opcode-Satz durch die Laufzeitmaschine erzeugt wird. In beiden Fällen ist das Ergebnis ein durch die Laufzeitmaschine erzeugter Server-Opcode-Satz, wie in Schritt 522 gezeigt.
  • Sobald der Server-Opcode-Satz erzeugt wurde, bestimmt die Laufzeitmaschine in Schritt 524, ob Nutzdaten den Server-Opcode-Satz begleiten sollten. Wenn es Daten gibt, die zusammen mit dem Server-Opcode-Satz gehen müssen, holt die Laufzeitmaschine in Schritt 526 die Daten von dem persistenten oder dem flüchtigen Speicher oder führt einen Befehl aus, der die benötigten Daten zurückgibt. Sobald die Daten erhalten wurden, fügt die Laufzeitmaschine als nächstes die Daten in den Server-Opcode-Satz ein, wie in Schritt 528 dargestellt. Ein einfacher Weg, das zu erreichen, ist, die Nutzdaten an den Server-Opcode-Satz in einem einzigen Datenpacket anzuhängen.
  • Sobald die Nutzdaten mit dem Server-Opcode-Satz verbunden wurden, oder wenn keine Nutzdaten erforderlich sind, dann sendet die Laufzeitmaschine den Server-Opcode-Satz (mit oder ohne Nutzdaten) an den Server, wie in Schritt 530 gezeigt. Nachdem der Server-Opcode-Satz gesendet wurde, kann die Laufzeitmaschine beendet werden, um Ressourcen in der drahtlosen Vorrichtung freizusetzen, wie in Schritt 532 gezeigt.
  • 21 ist ein Flussdiagramm, das einen Beispielvorgang zum Ausführen dynamischer Befehlssätze auf einem PMRTI-Server gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Zunächst empfängt der Server in Schritt 540 den Server-Opcode-Satz. Der Opcode-Satz ist vorzugsweise eine Liste von Phantasienamen, die eine Reihe von ausführbaren Befehlen repräsentieren, wobei jeder Opcode einen diskret ausführbaren Befehl oder einen diskreten Satz von ausführbaren Befehlen repräsentiert. Sobald der Satz von Server-Opcodes empfangen wurde, parst der Server dann in Schritt 542 den Server-Opcode-Satz und extrahiert jegliche Nutzdaten, die mit dem Server-Opcode-Satz enthalten sind, wie in Schritt 544 dargestellt. Wenn die Nutzdaten extrahiert sind, können sie temporär in dem flüchtigen Speicher auf dem Server für eine spätere Verwendung gespeichert werden.
  • Als nächstes erhält der Server den entsprechenden Befehlssatz, wie in Schritt 546 gezeigt. Vorzugsweise ist der entsprechende Befehlssatz in einem Server-Laufzeitbefehle-Codeabschnitt gespeichert, der sich in dem persistenten Speicher auf der PMRTI-Servermaschine befindet. Sobald der Befehlssatz erhalten wurde, führt der Server dann den Befehlssatz aus, wie in Schritt 548 zu sehen. Wenn der Befehlssatz ausgeführt wird, können die Ausführungsroutinen die Nutzdaten verwenden, die mit dem Server-Opcode-Satz gekommen sind. Vorzugsweise werden die Nutzdaten zu diesen Zweck im Speicher auf dem Server gespeichert. Alternativ können die Ausführungsroutinen Befehle aufweisen, die die Daten erzeugen, die für den Befehlssatz notwendig sind, seine Funktion auszuführen.
  • 22 ist ein Flussdiagramm, dass einen Beispielvorgang zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt. Zunächst empfängt in Schritt 580 das Mobilteil eine Umprogrammierungsanforderung von einer Umprogrammierungsvorrichtung. Die Vorrichtung kann mit dem Mobilteil über ein direktes serielles Kabel oder eine lokale physische Netzwerkverbindung verbunden sein. Die Vorrichtung kann auch an eine Mehrzahl von Mobilteilen über eine lokale Netzwerkverbindung oder eine serielle One-to-many-Kabelverbindung angeschlossen sein, die es erlaubt, dass die Umprogrammierungsvorrichtung mit mehreren Mobilteilen arbeitet.
  • Sobald das Mobilteil die Umprogrammierungsanforderung, einen Umprogrammierungsversuch oder einen Versuch empfängt, den Zugriffscode des Mobilteils zu bestimmen, sendet das Mobilteil eine Anfrage zu dem Netzbetreiber über ein drahtloses Kommunikationsmittel, wie in Schritt 582 gezeigt. Diese Anfrage wird gesendet, um zu bestimmen, ob die Umprogrammierung des Mobilteils durch den Netzbetreiber autorisiert ist. Wenn das Mobilteil eine Antwort von dem Netzbetreiber über das selbe drahtlose Kommunikationsmittel erhält, bestimmt das Mobilteil, ob die Umprogrammierung autorisiert ist, wie in Schritt 584 gezeigt. Wenn die Umprogrammierung autorisiert ist, erlaubt das Mobilteil in Schritt 586 die Umprogrammierung, zum Beispiel indem der Umprogrammierungsvorrichtung der Zugriffscode, falls einer existiert, geliefert wird.
  • Falls die Umprogrammierung nicht autorisiert ist, verweigert das Mobilteil die Umprogrammierungsanforderung, wie in Schritt 588 dargestellt. Zweckmäßigerweise kann der Netzbetreiber die Anforderung protokollieren. Außerdem kann der Netzbetreiber das Mobilteil nach Standortinformationen, wie zum Beispiel GPS, abfragen, um den Standort zu bestimmen, an dem der Umprogrammierungsversuch unternommen wurde. Diese Informationen können hilfreich sein, falls der Umprogrammierungsversuch unbefugt war.
  • 23 ist ein Flussdiagramm, das einen Öffentlicher-und-Privater-Schlüssel-Beispielvorgang zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt. Zunächst empfängt das Mobilteil in Schritt 590 eine Umprogrammierungsanforderung. Als nächstes erhält das Mobilteil so viel wie möglich Informationen über die Umprogrammierungsvorrichtung. Zum Beispiel kann das Mobilteil die IP-Adresse oder die MIN der Umprogrammierungsvorrichtung erhalten, falls die Vorrichtung drahtlos aktiviert ist. Es können auch zusätzliche Informationen erhalten werden.
  • In Schritt 594 erhält das Mobilteil seine eigenen Informationen, wie zum Beispiel seine MIN und seine ESN und andere Informationen, die von dem Netzbetreiber zur Identifikation des Mobilteils benötigt werden. Sobald die Informationen erhalten wurden, sendet das Mobilteil die Informationen an den Netzbetreiber, wie in Schritt 596 dargestellt. Diese Informationen können zu dem Sicherheitsserver in dem drahtlosen Netzwerk zur Verarbeitung geliefert werden. Nach dem Senden der Informationen empfängt das Mobilteil einen privaten Schlüssel von dem Netzbetreiber, wie in Schritt 598 gezeigt. Das Mobilteil konvertiert dann in Schritt 600 den privaten Schlüssel unter Verwendung seines eigenen öffentlichen Schlüssels und empfängt dann in Schritt 602 einen Schlüssel von der Umprogrammierungsvorrichtung. Das Mobilteil fährt dann fort, den konvertierten Schlüssel mit dem Schlüssel von der Umprogrammierungsvorrichtung zu vergleichen, um zu sehen, ob sie übereinstimmen, wie in Schritt 604 dargestellt. Wenn die Schlüssel übereinstimmen, dann wird eine Autorisierung für eine Umprogrammierung bereitgestellt, wie in Schritt 608 gezeigt. Wenn die Schlüssel jedoch nicht übereinstimmen, dann verweigert das Mobilteil in Schritt 606 die Umprogrammierungsanforderung.
  • Bei dem oben beschriebenen Vorgang (vom Standpunkt des Mobilteils aus) ist es wichtig zu betonen, dass der Netzbetreiber die Informationen der Umprogrammierungsvorrichtung verwendet, um die Umprogrammierungsvorrichtung zu kontaktieren und den privaten Schlüssel des Netzbetreibers zu der Umprogrammierungsvorrichtung zu senden, ähnlich wie der Netzbetreiber in Schritt 598 seinen privaten Schlüssel an das Mobilteil sendet. Der private Schlüssel ist der Ursprung einer jeden Schlüsselkonvertierung durch die Umprogrammierungsvorrichtung, und deshalb muss die Umprogrammierungsvorrichtung den privaten Schlüssel erhalten, so dass er konvertiert und an das Mobilteil zum Vergleich gesendet werden kann. Wenn die Umprogrammierungsvorrichtung nicht in der Lage ist, den privaten Schlüssel zu empfangen und ihn zu konvertieren und den konvertierten Schlüssel an das Mobilteil zu senden, kann das Mobilteil konfiguriert sein, dass es ein Timeout realisiert und die Umprogrammierungsanforderung verweigert.
  • 24 ist ein Flussdiagramm, das einen Beispielvorgang zum Bilden eines Fensters einer autorisierungsfreien Umprogrammierung an einem Mobilteil darstellt. In einer Ausführungsform, in der ein Netzbetreiber einen großen Bestand an Telefonen hat, die umprogrammiert werden müssen, kann sich der Netzbetreiber entscheiden, die Umprogrammierungs-Sicherheitsprozeduren für ein vorbestimmtes Zeitintervall auszuschalten. Zum Beispiel kann ein Fenster von 6 Stunden festgelegt werden, um es einem Dienstanbieter zu ermöglichen, einen Block von Mobilteilen umzuprogrammieren.
  • Zunächst sendet der Netzbetreiber einen Befehl an eine Gruppe von Mobilteilen oder alternativ an ein einzelnes Mobilteil aus. Solch ein Befehl kann durch den PMRTI-Server unter Verwendung des vorher beschriebenen Entfernter-Opcode-Satzes geliefert werden. In Schritt 620 empfängt das Mobilteil diesen Befehl von dem Netzbetreiber. Der Befehl teilt dem Mobilteil mit, die Umprogrammierungs-Sicherheitsprozeduren während eines bestimmten Zeitfensters auszuschalten. Der Befehl kann dem Mobilteil auch mitteilen, die Umprogrammierungs-Sicherheitsprozeduren auf unbestimmte Zeit auszuschalten. Alternativ kann der Befehl dem Mobilteil mitteilen, die Sicherheitsprozeduren einzuschalten. In diesem Fall teilt der Befehl dem Mobilteil mit, die Sicherheitsprozeduren für ein Fenster von 6 Stunden, das sofort beginnt, auszuschalten.
  • In Schritt 622 schaltet das Mobilteil die Umprogrammierungs-Sicherheitsmerkmale aus. Das Mobilteil prüft dann periodisch, um zu sehen, ob das Ende der vorbestimmten Periode erreicht ist, wie in Schritt 624 dargestellt. Wenn die Periode noch in Kraft ist, wartet das Mobilteil weiter, wie in Schritt 626 gezeigt. Die Warteperiode zwischen jeder Prüfung kann in einem kleinen Intervall, einem großen Intervall oder einem variablen Intervall, welches dadurch bestimmt wird, wie nahe das Wiedereinschalten der Umprogrammierungs-Sicherheitsmerkmale liegt, eingestellt werden.
  • 25 ist ein Flussdiagramm, dass einen beispielhaften PMRTI-Vorgang zur Netzbetreiber-Autorisierung der Mobilteil-Umprogrammierung darstellt. Zunächst empfängt das Mobilteil eine Umprogrammierungsanforderung, wie in Schritt 640 zu sehen. Auf das Empfangen solch einer Anforderung hin erhält das Mobilteil Informationen von der Umprogrammierungsvorrichtung, wie in Schritt 642 gezeigt. Diese Informationen können eine Software-Identifikationsnummer (um das Umprogrammierungs-Dienstprogramm zu validieren), eine MIN oder andere unikale Identifizierungsmerkmale für die Umprogrammierungsvorrichtung oder das Software-Dienstprogramm oder das Werkzeug aufweisen, das durch die Umprogrammierungsvorrichtung verwendet wird.
  • In Schritt 644 erhält das Mobilteil seine eigenen Identifikationsinformationen wie zum Beispiel seine MIN, seine ESN oder andere nützliche oder hilfreiche Informationen, wie zum Beispiel seinen Standort. Sobald die Informationen des Mobilteils und der Umprogrammierungsvorrichtung erhalten wurden, erzeugt das Mobilteil in Schritt 646 Nutzdaten, die diese Informationen enthalten. Es können auch zusätzliche Informationen bereitgestellt werden. Als nächstes kompiliert das Mobilteil in Schritt 648 einen Server-Opcode-Satz, der die Nutzdaten und einen Server-Opcode enthält, der einen Befehl für den Server repräsentiert, die Umprogrammierung zu autorisieren. Dieser Server-Opcode-Satz wird dann in Schritt 650 an den Netzbetreiber gesendet, wo er zuerst an den PMRTI-Server und dann an den Sicherheitsserver geliefert wird. Diese beiden Server können in der selben Maschine untergebracht sein und sogar als eine einzige kombinierte Software-Anwendung laufen.
  • Nachdem der Server-Opcode-Satz durch den Netzbetreiber verarbeitet ist, empfängt das Mobilteil einen Entfernter-Opcode-Satz von dem Netzbetreiber, wie in Schritt 652 zu sehen. Auf den Empfang des Entfernter-Opcode-Satzes hin extrahiert das Mobilteil in Schritt 654 die Nutzdaten und übersetzt dann die entfernten Opcodes in dem Satz in ausführbare Befehle, wie in Schritt 656 dargestellt. Das Mobilteil führt dann in Schritt 658 diese Befehle aus, um zu bestimmen, ob eine Autorisierung durch den Netzbetreiber bereitgestellt wurde. Die Autorisierung oder die Verweigerung von dem Netzbetreiber kann in den Nutzdaten enthalten sein, mit einem Befehl, der die Antwort aus den Nutzdaten entpackt und die Antwort zu dem Betriebssystem oder dem Dienstprogramm des Mobilteils liefert, das in Kommunikation mit der Umprogrammierungsvorrichtung steht. Sobald das Mobilteil seine Autorisierung oder Verweigerung von dem Netzbetreiber hat, antwortet das Mobilteil der Umprogrammierungsvorrichtung entsprechend in einer bestätigenden oder negativen Art und Weise.
  • Auf der Serverseite protokolliert der Netzbetreiber vorzugsweise jede Umprogrammierungsanforderung von einem Mobilteil. Außerdem kann der Netzbetreiber eine Statistik über erfolgreiche und erfolglose Umprogrammierungsversuche führen. Ferner kann der Netzbetreiber die Umprogrammierung basierend auf den bereitgestellten Informationen autorisieren, die die Umprogrammierungsvorrichtung betreffen. Der Netzbetreiber kann auch eine teilweise Umprogrammierung des Mobilteils autorisieren. Zum Beispiel kann dies vorteilhaft sein, wenn ältere Mobilteile an Schutz- oder andere Organisationen gespendet werden. Diese Mobilteile können für bestimmte Arten des Netzwerkzugangs umprogrammiert werden, während die originale MIN des Mobilteils behalten wird.
  • 26 ist ein Blockdiagramm, dass ein beispielhaftes Computersystem 550 darstellt, das in Verbindung mit den verschiedenen, hierin beschriebenen Beispielen verwendet werden kann. Zum Beispiel kann das Computersystem 550 als der PMRTI-Server oder der Sicherheitsserver verwendet werden, der sich innerhalb des drahtlosen Kommunikationsnetzes befindet. Das Computersystem 550 kann auch als eines der verschiedenen anderen Allgemeinzweck- oder Spezialzweck-Computersysteme verwendet werden, die das drahtlose Kommunikationsnetz und seine konstituierenden Komponenten umfassen. Es können jedoch andere Computersysteme und Architekturen verwendet werden, wie dem Fachmann klar sein wird.
  • Das Computersystem 550 weist vorzugsweise einen oder mehrere Prozessoren auf, wie zum Beispiel den Prozessor 552. Zusätzliche Prozessoren können vorgesehen sein, wie zum Beispiel ein zusätzlicher Prozessor, um die Eingabe und Ausgabe zu managen, ein zusätzlicher Prozessor, um mathematische Fließkommaoperationen auszuführen, ein Spezial-Mikroprozessor mit einer Architektur, die für eine schnelle Ausführung von Signalverarbeitungsalgorithmen (zum Beispiel ein digitaler Signalprozessor) geeignet ist, ein Slave- Prozessor, der dem Hauptprozessorsystem untergeordnet ist (zum Beispiel ein nachgestellter Prozessor), ein zusätzlicher Mikroprozessor oder -controller für Dual- oder Multiprozessorsysteme, oder ein Koprozessor. Solche zusätzlichen Prozessoren können diskrete Prozessoren sein oder können mit dem Prozessor 552 integriert sein.
  • Der Prozessor 552 ist vorzugsweise an einen Kommunikationsbus 554 angeschlossen. Der Kommunikationsbus 554 kann einen Datenkanal zum Ermöglichen des Informationstransfers zwischen Speicher- und anderen Peripheriekomponenten des Computersystems 550 aufweisen. Der Kommunikationsbus 554 kann ferner einen Satz von Signalen bereitstellen, die für die Kommunikation mit dem Prozessor 552 verwendet werden, einschließlich eines Datenbusses, eines Adressbusses und eines Steuerbusses (nicht gezeigt). Der Kommunikationsbus 554 kann jede standardisierte oder nicht standardisierte Busarchitektur aufweisen, zum Beispiel Busarchitekturen, die mit der Industry Standard Architecture ("ISA"), der Extended Industry Standard Architecture ("EISA"), der Micro Channel Architecture ("MCA"), dem Peripheral-Component-Interconnect ("PCI")-Lokalbus oder Standards konform sind, die durch das Institute of Electrical and Electronics Engineers ("IEEE") veröffentlicht wurden, einschließlich des IEEE-488-General-Purpose-Interface-Bus ("GPIB"), IEEE 696/S-100 und ähnliche.
  • Das Computersystem 550 weist vorzugsweise einen Hauptspeicher 556 auf und kann auch einen sekundären Speicher 558 aufweisen. Der Hauptspeicher 556 stellt einen Speicher von Befehlen und Daten für Programme bereit, die in dem Prozessor 552 ausgeführt werden. Der Hauptspeicher 556 ist typischerweise ein halbleiterbasierter Speicher wie zum Beispiel ein dynamischer Schreib-Lese-Speicher ("DRAM") und/oder ein statischer Schreib-Lese-Speicher ("SRAM"). Andere halbleiterbasierte Speicherarten weisen beispielsweise einen Synchronous Dynamic Random Access Memory ("SDRAM"), Rambus Dynamic Random Access Memory ("RDRAM"), Ferroelectric Random Access Memory ("FRAM") und ähnliche auf, einschließlich einen Festwertspeicher ("ROM").
  • Der sekundäre Speicher 558 kann optional ein Festplattenlaufwerk 560 und/oder eine Wechselspeicherlaufwerk 562, zum Beispiel ein Diskettenlaufwerk, ein Magnetbandlaufwerk, eine Kompaktdisk ("CD")-Laufwerk, ein Digital-Versatile-Disc ("DVD")-Laufwerk u.s.w. aufweisen. Das Wechselspeicherlaufwerk 562 liest von und/oder schreibt auf einem/ein Wechselspeichermedium 564 in einer bekannten Weise. Das Wechselspeichermedium 564 kann zum Beispiel eine Diskette, ein Magnetband, eine CD, eine DVD u.s.w. sein.
  • Das Wechselspeichermedium 564 ist vorzugsweise ein computerlesbares Medium mit darauf gespeichertem computerausführbaren Code (das heißt Software) und/oder Daten. Die auf dem Wechselspeichermedium 564 gespeicherte Computersoftware oder die auf dem Wechselspeichermedium 564 gespeicherten Daten werden in das Computersystem 550 als elektrische Kommunikationssignale 578 eingelesen.
  • In alternativen Ausführungsformen kann der sekundäre Speicher 558 andere ähnliche Mittel aufweisen, die es ermöglichen, dass Computerprogramme oder andere Daten oder Befehle in das Computersystem 550 geladen werden. Solche Mittel können zum Beispiel ein externes Speichermedium 572 und eine Schnittstelle 570 aufweisen. Beispiele des externen Speichermediums 572 können ein externes Festplattenlaufwerk oder ein externes optisches Laufwerk oder ein externes magnetooptisches Laufwerk aufweisen.
  • Andere Beispiele des sekundären Speichers 558 können halbleiterbasierte Speicher, wie zum Beispiel einen programmierbaren Festwertspeicher ("PROM"), einen löschbaren programmierbaren Festwertspeicher ("EPROM"), einen elektrisch löschbaren Festwertspeicher ("EEPROM") oder einen Flashspeicher (block-orientierter Speicher ähnlich dem EEPROM) aufweisen. Es sind auch beliebige andere Wechselspeichereinheiten 572 und Schnittstellen 570 umfasst, die es ermöglichen, dass Software und Daten von der Wechselspeichereinheit 572 zu dem Computersystem 550 übertragen werden.
  • Das Computersystem 550 kann auch eine Kommunikationsschnittstelle 574 aufweisen. Die Kommunikationsschnittstelle 574 ermöglicht es, dass Software und Daten zwischen dem Computersystem 550 und externen Geräten (zum Beispiel Druckern), Netzwerken oder Informationsquellen übertragen werden. Zum Beispiel kann Computersoftware oder ausführbarer Code von einem Netzwerkserver über die Kommunikationsschnittstelle 574 zu dem Computersystem 550 übertragen werden. Beispiele der Kommunikationsschnittstelle 574 weisen ein Modem, eine Netzwerk-Schnittstellenkarte ("NIC"), einen Kommunikationsanschluss, einen PCMCIA-Steckplatz und eine PCMCIA-Karte, eine Infrarot-Schnittstelle, und IEEE 1394 Fire Wire auf, um nur ein paar zu nennen.
  • Die Kommunikationsschnittstelle 574 implementiert vorzugsweise von der Industrie veröffentlichte Protokollstandards wie zum Beispiel die IEEE-802-Ethernet-Standards, Glasfaserkanal, Digital Subscriber Line ("DSL"), Asynchronous Digital Subscriber Line ("ADSL"), Frame Relay, Asynchronous Transfer Mode ("ATM"), Integrated Digital Services Network ("ISDN"), Personal Communications Services ("PCS"), Transmission Control Protocol/Internet Protocol ("TCP/IP"), Serial Line Internet Protocol/Point to Point Protocol ("SLIP/PPP") und so weiter, kann aber ebenso auch kundenspezifische oder nicht standardisierte Schnittstellenprotokolle implementieren.
  • Software und Daten, die über die Kommunikationsschnittstelle 574 übertragen werden, sind im Allgemeinen in der Form von elektrischen Kommunikationssignalen 578. Diese Signale 578 werden der Kommunikationsschnittstelle 574 vorzugsweise über einen Kommunikationskanal 576 geliefert. Der Kommunikationskanal 576 transportiert Signale 578 und kann unter Verwendung einer Vielfalt von Kommunikationsmitteln einschließlich Draht oder Kabel, Faseroptik, der herkömmlichen Telefonleitung, einer Mobilfunkverbindung, einer Hochfrequenz (RF)-Verbindung oder einer Infrarotverbindung, nur um ein paar zu nennen, implementiert werden.
  • Computerausführbarer Code (das heißt Computerprogramme oder Software) wird in dem Hauptspeicher 556 und/oder dem sekundären Speicher 558 gespeichert. Computerprogramme können auch über die Kommunikationsschnittstelle 574 empfangen und in dem Hauptspeicher 556 und/oder dem sekundären Speicher 558 gespeichert werden. Solche Computerprogramme ermöglichen, wenn sie ausgeführt werden, dass das Computersystem 550 die wie vorher beschriebenen, verschiedenen Funktionen ausführt.
  • In dieser Beschreibung wird der Begriff "computerlesbares Medium" verwendet, um jedes Medium zu bezeichnen, das verwendet wird, um dem Computersystem 550 computerausführbaren Code (das heißt Software und Computerprogramme) bereitzustellen. Beispiele dieser Medien weisen den Hauptspeicher 556, den sekundären Speicher 558 (einschließlich Festplattenlaufwerk 560, Wechselspeichermedium 564 und externes Speichermedium 572) und jedes periphere Gerät auf, das kommunikativ mit der Kommunikationsschnittstelle 574 (einschließlich eines Netzinformationsservers oder eines anderen Netzwerkgerätes) gekoppelt ist. Diese computerlesbaren Medien sind Mittel zum Bereitstellen eines ausführbaren Codes, von Programmbefehlen und Software an das Computersystem 550.
  • In einer Ausführungsform, die unter Verwendung von Software implementiert ist, kann die Software auf einem computerlesbaren Medium gespeichert sein und mittels des Wechselspeicherlaufwerks 562, der Schnittstelle 570 oder der Kommunikationsschnittstelle 574 in das Computersystem 550 geladen werden. In solch einer Ausführungsform wird die Software in das Computersystem 550 in der Form von elektrischen Kommunikationssignalen 578 geladen. Die Software, wenn sie durch den Prozessor 552 ausgeführt wird, bewirkt vorzugsweise, dass der Prozessor 552 die hierin vorher beschriebenen erfinderischen Merkmale und Funktionen ausführt.
  • Viele Beispiele können auch primär in Hardware, zum Beispiel unter Verwendung von Komponenten wie zum Beispiel anwendungsspezifischer Schaltkreise ("ASIC's") oder Field Programmable Gate Arrays ("FPGA's") implementiert werden. Die Implementierung einer Hardwaremaschine, die in der Lage ist, die hier beschriebenen Funktionen auszuführen, wird dem einschlägigen Fachmann auch offenbar sein. Viele Beispiele können auch unter Verwendung einer Kombination von sowohl Hardware als auch Software implementiert werden.
  • Obwohl die einzelnen Systeme und Verfahren, die hierin gezeigt und ausführlich beschrieben sind, vollauf in der Lage sind, die oben beschriebenen Ziele dieser Erfindung zu erreichen, versteht es sich, dass die Beschreibung und die hierin präsentierten Zeichnungen stellvertretend für den Gegenstand sind, der durch die vorliegende Erfindung breit betrachtet wird. Es versteht sich ferner, dass der Bereich der vorliegenden Erfindung vollauf andere Ausführungsformen umfasst, die dem Fachmann offenbar werden können, und dass der Bereich der vorliegenden Erfindung dementsprechend durch nichts anderes als die beigefügten Ansprüche begrenzt wird.

Claims (21)

  1. Verfahren für verbesserte Sicherheit bei der Umprogrammierung drahtloser Kommunikationsvorrichtungen (10, 12, 14), wobei das Verfahren die Schritte aufweist: Empfangen einer Autorisierungsanforderung von einer umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) in Kommunikation mit einer Umprogrammierungsvorrichtung (45), wobei die Autorisierungsanforderung eine unikale Kennung (55) für die nachfragende umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) hat; Konsultieren eines Datenspeicherbereichs für Umprogrammierungsinformationen, die zu der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) gehören; Bestimmen des aktuellen Programmierstatus der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14); und Senden einer Autorisierungsantwort an die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14), basierend auf dem aktuellen Programmierstatus.
  2. Verfahren nach Anspruch 1, wobei die Autorisierungsantwort die Umprogrammierung verweigert.
  3. Verfahren nach Anspruch 1, wobei die Autorisierungsantwort die Umprogrammierung erlaubt.
  4. Verfahren nach Anspruch 1, wobei die Autorisierungsantwort die Umprogrammierung teilweise erlaubt.
  5. Verfahren nach Anspruch 1, welches ferner die Schritte aufweist: Speichern der Autorisierungsanfrage und der Autorisierungsantwort in dem Datenspeicherbereich; und In-Verbindung-bringen der Autorisierungsanforderung und der Autorisierungsantwort mit der anfordernden umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14).
  6. Verfahren nach Anspruch 1, wobei die Autorisierungsanforderung Kontaktinformationen für die Umprogrammierungsvorrichtung aufweist, das ferner die Schritte aufweist: Senden eines privaten Schlüssels an die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14); und Senden des privaten Schlüssels an die Umprogrammierungsvorrichtung (45), wobei die privaten Schlüssel durch die jeweiligen Vorrichtungen (10, 12, 14 und 45) konvertiert werden und verglichen werden, um die Umprogrammierungs-Autorisierungsantwort zu bestimmen.
  7. Computerlesbares Medium, welches darauf eine oder mehrere Sequenzen von Anweisungen gespeichert hat, um zu bewirken, dass ein oder mehrere Mikroprozessoren die Schritte für die verbesserte Sicherheit bei der Umprogrammierung drahtloser Kommunikationsvorrichtungen (10, 12, 14) ausführen, wobei die Schritte aufweisen: Empfangen einer Autorisierungsanforderung von einer umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14), wobei die Autorisierungsanforderung eine unikale Kennung (55) für die anfordernde umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) hat; Konsultieren eines Datenspeicherbereichs für Umprogrammierungsinformationen, die zu der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) gehören; Bestimmen des aktuellen Programmierstatus der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14); und Senden einer Autorisierungsantwort an die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14), basierend auf dem aktuellen Programmierstatus.
  8. Computerlesbares Medium nach Anspruch 7, wobei die Autorisierungsantwort die Umprogrammierung verweigert.
  9. Computerlesbares Medium nach Anspruch 7, wobei die Autorisierungsantwort die Umprogrammierung erlaubt.
  10. Computerlesbares Medium nach Anspruch 7, wobei die Autorisierungsantwort die Umprogrammierung teilweise erlaubt.
  11. Computerlesbares Medium nach Anspruch 7, das ferner Befehle zum Ausführen der Schritte aufweist des: Speicherns der Autorisierungsanforderung und der Autorisierungsantwort in dem Datenspeicherbereich; und In-Verbindung-bringens der Autorisierungsanforderung und der Autorisierungsantwort mit der anfordernden umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14).
  12. Computerlesbares Medium nach Anspruch 7, wobei die Autorisierungsanforderung Kontaktinformationen für die Umprogrammierungsvorrichtung aufweist, das ferner Befehle zum Ausführen der Schritte aufweist des Sendens eines privaten Schlüssels an die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14); und Sendens des privaten Schlüssels an die Umprogrammierungsvorrichtung (45), wobei die privaten Schlüssel durch die jeweiligen Vorrichtungen (10, 12, 14 und 45) konvertiert werden und verglichen werden, um die Umprogrammierungs-Autorisierungsantwort zu bestimmen.
  13. System für verbesserte Sicherheit bei der Umprogrammierung drahtloser Kommunikationsvorrichtungen (10, 12, 14), wobei das System aufweist: eine umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14), die eine serielle Schnittstelle hat, die für eine Kommunikation mit einer Umprogrammierungsvorrichtung (45) verwendbar ist; und einen Sicherheitsserver (35), der mit der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (45) über ein drahtloses Kommunikationsnetzwerk kommunikativ gekoppelt ist, wobei die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14), um umprogrammiert zu werden, den Sicherheitsserver (35) in Antwort auf eine Kommunikation von der Umprogrammierungsvorrichtung (45) für eine Autorisierung kontaktiert.
  14. System gemäß Anspruch 13, das ferner einen Datenspeicherbereich aufweist, der mit dem Sicherheitsserver (35) gekoppelt ist, wobei der Datenspeicherbereich konfiguriert ist, um Informationen in Bezug auf die Umprogrammierung der umprogrammierbaren, drahtlosen Kommunikationsvorrichtungen (10, 12, 14) zu speichern.
  15. System gemäß Anspruch 13, wobei die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) einen Zugriffscode (55) aufweist, wobei der Zugriffscode (55) eine Autorisierung bereitstellt, um die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) umzuprogrammieren.
  16. System gemäß Anspruch 15, wobei die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) konfiguriert ist, eine Umprogrammierung zu verweigern, wenn der Autorisierungscode bereitgestellt wird.
  17. System gemäß Anspruch 13, wobei die umprogrammierbare, drahtlose Kommunikationsvorrichtung (10, 12, 14) ferner ein Zugriffsflag aufweist, wobei das Zugriffsflag durch den Sicherheitsserver (35) modifizierbar ist.
  18. System gemäß Anspruch 17, wobei das Zugriffsflag eingestellt ist, es der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) zu erlauben, die Umprogrammierung zu autorisieren.
  19. System gemäß Anspruch 17, wobei das Zugriffsflag eingestellt ist, dass der Sicherheitsserver (35) benötigt wird, um die Umprogrammierung der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) zu autorisieren.
  20. System gemäß Anspruch 17, wobei das Zugriffsflag eingestellt ist, die Umprogrammierung ohne Autorisierung zu erlauben.
  21. Verfahren für verbesserte Sicherheit bei der Umprogrammierung drahtloser Kommunikationsvorrichtungen (10, 12, 14), wobei das Verfahren die Schritte aufweist: Empfangen einer Umprogrammierungsanforderung in einer umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) von einer damit verbundenen Umprogrammierungsvorrichtung (45); Senden einer Anfrage von der umprogrammierbaren, drahtlosen Kommunikationsvorrichtung (10, 12, 14) über ein drahtloses Kommunikationsmittel (20, 22) an einen Betreiber-Sicherheitsserver (35); Empfangen einer Antwort von dem Sicherheitsserver (35) über das drahtlose Kommunikationsmittel (20, 22), wobei die Antwort die Umprogrammierungsanforderung autorisiert oder verweigert; und Antworten auf die Umprogrammierungsanforderung gemäß der Antwort.
DE60206055T 2001-07-26 2002-07-25 System und verfahren für verbesserte sicherheit bei der umprogrammierung eines handgerätes Expired - Lifetime DE60206055T2 (de)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US09/917,026 US7328007B2 (en) 2001-07-26 2001-07-26 System and method for organizing wireless communication device system software
US916900 2001-07-26
US916460 2001-07-26
US917026 2001-07-26
US09/916,900 US7027806B2 (en) 2001-07-26 2001-07-26 System and method for field downloading a wireless communications device software code section
US09/916,460 US7159214B2 (en) 2001-07-26 2001-07-26 System and method for compacting field upgradeable wireless communication device software code sections
US09/927,131 US7143407B2 (en) 2001-07-26 2001-08-10 System and method for executing wireless communications device dynamic instruction sets
US927131 2001-08-10
US09/969,305 US7386846B2 (en) 2001-07-26 2001-10-02 System and method for the management of wireless communications device system software downloads in the field
US969305 2001-10-02
PCT/IB2002/002906 WO2003010942A2 (en) 2001-07-26 2002-07-25 System and method for improved security in a handset reprovisioning and reprogramming

Publications (2)

Publication Number Publication Date
DE60206055D1 DE60206055D1 (de) 2005-10-13
DE60206055T2 true DE60206055T2 (de) 2006-06-29

Family

ID=27542295

Family Applications (7)

Application Number Title Priority Date Filing Date
DE60205755T Expired - Lifetime DE60205755T2 (de) 2001-07-26 2002-07-23 System und verfahren um einen softwarekodeabschnitt eines drahtlosen kommunikationsgerätes herunterzuladen
DE60211704T Expired - Lifetime DE60211704T2 (de) 2001-07-26 2002-07-23 Felddiagnosesystem und verfahren einer systemsoftware in einem drahtlosen kommunikationsgerät
DE60206389T Expired - Lifetime DE60206389T2 (de) 2001-07-26 2002-07-23 System und verfahren zum aktualisieren von persistenten daten in einem drahtlosen kommunikationsgerät
DE60211719T Expired - Lifetime DE60211719T2 (de) 2001-07-26 2002-07-25 System und verfahren für gleichrangiges kommunikationshandgerät
DE60219536T Expired - Lifetime DE60219536T2 (de) 2001-07-26 2002-07-25 System und Verfahren für verbesserte Sicherheit in Versorgung und Umprogrammierung von Handgeräten
DE60207429T Expired - Lifetime DE60207429T2 (de) 2001-07-26 2002-07-25 Vorrichtung und verfahren zur bidirektionalen kommunikation und ausführung dynamischer befehlsätze
DE60206055T Expired - Lifetime DE60206055T2 (de) 2001-07-26 2002-07-25 System und verfahren für verbesserte sicherheit bei der umprogrammierung eines handgerätes

Family Applications Before (6)

Application Number Title Priority Date Filing Date
DE60205755T Expired - Lifetime DE60205755T2 (de) 2001-07-26 2002-07-23 System und verfahren um einen softwarekodeabschnitt eines drahtlosen kommunikationsgerätes herunterzuladen
DE60211704T Expired - Lifetime DE60211704T2 (de) 2001-07-26 2002-07-23 Felddiagnosesystem und verfahren einer systemsoftware in einem drahtlosen kommunikationsgerät
DE60206389T Expired - Lifetime DE60206389T2 (de) 2001-07-26 2002-07-23 System und verfahren zum aktualisieren von persistenten daten in einem drahtlosen kommunikationsgerät
DE60211719T Expired - Lifetime DE60211719T2 (de) 2001-07-26 2002-07-25 System und verfahren für gleichrangiges kommunikationshandgerät
DE60219536T Expired - Lifetime DE60219536T2 (de) 2001-07-26 2002-07-25 System und Verfahren für verbesserte Sicherheit in Versorgung und Umprogrammierung von Handgeräten
DE60207429T Expired - Lifetime DE60207429T2 (de) 2001-07-26 2002-07-25 Vorrichtung und verfahren zur bidirektionalen kommunikation und ausführung dynamischer befehlsätze

Country Status (9)

Country Link
EP (12) EP1410189B1 (de)
JP (11) JP2005505813A (de)
KR (10) KR100940178B1 (de)
CN (10) CN1275150C (de)
AT (9) ATE387658T1 (de)
AU (9) AU2002319569A1 (de)
DE (7) DE60205755T2 (de)
ES (9) ES2300454T3 (de)
WO (10) WO2003010663A2 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143407B2 (en) * 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
JP4417123B2 (ja) 2003-02-19 2010-02-17 パナソニック株式会社 ソフトウェア更新方法及び無線通信装置
EP1654640B1 (de) * 2003-06-04 2018-08-01 Qualcomm Incorporated Netzwerk mit konfiguriebaren generatoren von software-aktualisierungen und mit mobilen elektronischen geräten, die ein konfigurierbares programm zum aktualisieren von software besitzen
US7873956B2 (en) 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
EP1757132B1 (de) * 2004-05-18 2013-07-17 Kyocera Corporation Modulare datenkomponenten für drahtlose kommunikationseinrichtungen
GB2416876B (en) * 2004-08-03 2007-01-10 Nec Technologies Export file processing within a mobile radio communications device
US7512939B2 (en) * 2004-10-05 2009-03-31 Neopost Technologies System and method of secure updating of remote device software
EP1659810B1 (de) * 2004-11-17 2013-04-10 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Aktualisierung der Konfigurationsparameter in einem mobilen Endgerät
USRE48433E1 (en) 2005-01-27 2021-02-09 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
US8422667B2 (en) 2005-01-27 2013-04-16 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
US9148409B2 (en) 2005-06-30 2015-09-29 The Chamberlain Group, Inc. Method and apparatus to facilitate message transmission and reception using different transmission characteristics
CA2577244A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for controlling software version updates
CN100442708C (zh) * 2005-06-17 2008-12-10 上海华为技术有限公司 一种主备备份的方法及系统
CN100476728C (zh) * 2005-08-19 2009-04-08 光宝科技股份有限公司 应用程序更新方法及使用上述方法的移动通讯装置
CN100410893C (zh) * 2005-09-28 2008-08-13 联想(北京)有限公司 自行修复嵌入式设备的主控应用程序的方法及设备
CN1980447B (zh) * 2005-12-06 2010-06-16 中兴通讯股份有限公司 一种通信系统软件版本的平滑升级方法
WO2007105274A1 (ja) * 2006-03-10 2007-09-20 Fujitsu Limited 適用パッチ選別装置及び適用パッチ選別方法
EP2025095A2 (de) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Geräteverwaltung in einem netzwerk
EP2047420A4 (de) 2006-07-27 2009-11-18 Hewlett Packard Development Co Benutzererfahrungs- und abhängigkeitsverwaltung bei einer mobilen vorrichtung
CN100403263C (zh) * 2006-08-16 2008-07-16 华为技术有限公司 按配置下载设备软件的方法
KR100924647B1 (ko) * 2008-08-07 2009-11-02 주식회사 케이티 모바일 플랫폼 런타임 다이나믹 링킹 라이브러리 관리 방법및 시스템
EP2417202A2 (de) 2009-04-07 2012-02-15 Sensient Colors LLC Selbstdispergierende teilchen und verfahren zu ihrer herstellung und verwendung
CN101539885B (zh) * 2009-04-23 2011-06-08 大唐微电子技术有限公司 一种无线通信模块软件自主空中升级的方法、装置及系统
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
CN102253847A (zh) * 2010-05-19 2011-11-23 宏碁股份有限公司 制作系统软件的系统及系统软件的部署方法
US8756256B2 (en) * 2010-05-26 2014-06-17 Qualcomm Incorporated Method and systems for the management of non volatile items and provisioning files for a communication device with multiple service accounts
US9477585B2 (en) * 2012-11-09 2016-10-25 Coherent Logix, Incorporated Real time analysis and control for a multiprocessor system
US10064251B2 (en) * 2013-03-15 2018-08-28 Cree, Inc. Updatable lighting fixtures and related components
CN103345412B (zh) * 2013-07-10 2016-08-24 华为技术有限公司 打补丁的方法及装置
US10652743B2 (en) 2017-12-21 2020-05-12 The Chamberlain Group, Inc. Security system for a moveable barrier operator
WO2019213672A1 (en) * 2018-05-04 2019-11-07 Herdx, Inc. Food supply tracking, verification, and feedback system
US11074773B1 (en) 2018-06-27 2021-07-27 The Chamberlain Group, Inc. Network-based control of movable barrier operators for autonomous vehicles
CA3107457A1 (en) 2018-08-01 2020-02-06 The Chamberlain Group, Inc. Movable barrier operator and transmitter pairing over a network
KR102176204B1 (ko) 2018-10-15 2020-11-09 김용대 유명인 사용물품 기부 중개 서비스 방법
US10997810B2 (en) 2019-05-16 2021-05-04 The Chamberlain Group, Inc. In-vehicle transmitter training
JP7461755B2 (ja) * 2020-02-21 2024-04-04 日立Astemo株式会社 情報処理装置、プログラム更新システム、及びプログラム更新方法
US11588924B2 (en) * 2020-10-29 2023-02-21 Hewlett Packard Enterprise Development Lp Storage interface command packets over fibre channel with transport and network headers as payloads

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
FR2662891A1 (fr) * 1990-05-30 1991-12-06 Cit Alcatel Dispositif de telechargement de logiciel pour un terminal de telecommunication.
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH07182178A (ja) * 1993-02-19 1995-07-21 Nec Corp プリロードモジュール修正システム
US5488648A (en) * 1993-08-17 1996-01-30 Telefonaktiebolaget L M Ericsson Behavior monitoring and analyzing system for stored program controlled switching system
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
JP3140906B2 (ja) * 1994-04-12 2001-03-05 株式会社エヌ・ティ・ティ・データ システムファイルの更新及び復元方法
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
JPH08166877A (ja) * 1994-12-13 1996-06-25 Olympus Optical Co Ltd 修正プログラムの実行可能なワンチップマイクロコンピュータ及びrom修正可能なマイクロコンピュータ
DE19502728A1 (de) * 1995-01-28 1996-08-01 Philips Patentverwaltung Telekommunikationsvorrichtung
US5673317A (en) * 1995-03-22 1997-09-30 Ora Electronics, Inc. System and method for preventing unauthorized programming of wireless network access devices
US5699275A (en) * 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
DE19527808C2 (de) * 1995-07-28 1999-04-01 Siemens Ag Verfahren zum Modifizieren der Softwareprozeduren eines Kommunikationssystems
DE19543843C2 (de) * 1995-11-24 2001-02-08 Acer Peripherals Inc Verfahren zur Aktualisierung der Software in einem mikrocomputergestützten Telefon
JP2002515999A (ja) * 1996-08-28 2002-05-28 ウィンド リヴァー システムズ インコーポレイテッド 複数プロセッサーで分割されるソフトウエア診断のためのツール
US6247065B1 (en) * 1996-12-26 2001-06-12 At&T Corp. Messaging platform process
US6023620A (en) * 1997-02-26 2000-02-08 Telefonaktiebolaget Lm Ecrisson Method for downloading control software to a cellular telephone
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
SE512110C2 (sv) * 1997-06-17 2000-01-24 Ericsson Telefon Ab L M System och förfarande för att kundanpassa trådlösa kommunikationsenheter
JPH1115689A (ja) * 1997-06-19 1999-01-22 Nec Corp ソフトウェアのデバッグ方法及びデバッグ・プログラムを記録した記録媒体
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6496979B1 (en) * 1997-10-24 2002-12-17 Microsoft Corporation System and method for managing application installation for a mobile device
JPH11141394A (ja) * 1997-11-07 1999-05-25 Nissan Motor Co Ltd 車両制御用メモリ書き換え装置
JPH11146011A (ja) * 1997-11-11 1999-05-28 Nec Corp 電子メールシステム及び電子メールサーバ及び通信端末
JP3337062B2 (ja) * 1997-11-21 2002-10-21 日本電気株式会社 無線データ転送方法及びそのシステム
US6275694B1 (en) * 1997-12-19 2001-08-14 Vlsi Technology, Inc. Method for remotely updating software code for personal handy phone system equipment
US6438711B2 (en) * 1998-07-15 2002-08-20 Intel Corporation Method and apparatus for performing field diagnostics on a computer system
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
SE516806C2 (sv) * 1999-05-26 2002-03-05 Ericsson Telefon Ab L M Sätt för inladdning av programvara i en radioterminal, såsom en mobiltelefon, och tillhörande radioterminal
US6282647B1 (en) * 1999-06-02 2001-08-28 Adaptec, Inc. Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
FR2800963B1 (fr) * 1999-11-09 2001-12-07 Wavecom Sa Procede de mise a jour d'un programme principal execute par un module de radiocommunication et/ou de donnees associees a ce programme principal, et module de radiocommunication correspondant
US7264532B2 (en) * 2004-12-27 2007-09-04 Tsan-Yao Chen Cup structure

Also Published As

Publication number Publication date
KR100940179B1 (ko) 2010-02-03
ATE382159T1 (de) 2008-01-15
JP4106020B2 (ja) 2008-06-25
CN1535423A (zh) 2004-10-06
EP1410188A2 (de) 2004-04-21
ATE304272T1 (de) 2005-09-15
KR100817387B1 (ko) 2008-03-27
ES2284112T3 (es) 2007-11-01
EP1410192A2 (de) 2004-04-21
EP1410193B1 (de) 2005-09-28
ES2263796T3 (es) 2006-12-16
EP1410209A2 (de) 2004-04-21
WO2003010668A2 (en) 2003-02-06
WO2003010658A3 (en) 2003-12-24
WO2003012639A2 (en) 2003-02-13
KR20040015823A (ko) 2004-02-19
JP2008108268A (ja) 2008-05-08
CN1310488C (zh) 2007-04-11
JP2004537123A (ja) 2004-12-09
ES2248568T3 (es) 2006-03-16
EP1410665A2 (de) 2004-04-21
ATE387658T1 (de) 2008-03-15
EP1425894B1 (de) 2005-11-16
CN1535418A (zh) 2004-10-06
WO2003010656A3 (en) 2003-11-13
ATE327628T1 (de) 2006-06-15
WO2003010662A2 (en) 2003-02-06
JP2004537899A (ja) 2004-12-16
WO2003010942A3 (en) 2003-05-15
KR100932058B1 (ko) 2009-12-15
WO2003010942A2 (en) 2003-02-06
DE60207429T2 (de) 2006-07-27
AU2002319576A1 (en) 2003-02-17
DE60219536D1 (de) 2007-05-24
EP1410190B1 (de) 2005-08-24
ATE327536T1 (de) 2006-06-15
CN1535421A (zh) 2004-10-06
CN100378661C (zh) 2008-04-02
WO2003010656A2 (en) 2003-02-06
EP1425894A2 (de) 2004-06-09
JP2004537120A (ja) 2004-12-09
EP1410189A2 (de) 2004-04-21
DE60207429D1 (de) 2005-12-22
ES2249602T3 (es) 2006-04-01
EP1410192B1 (de) 2007-12-26
CN1537272A (zh) 2004-10-13
EP1410193A2 (de) 2004-04-21
ES2299587T3 (es) 2008-06-01
JP2005502105A (ja) 2005-01-20
EP1610222A2 (de) 2005-12-28
WO2003010664A2 (en) 2003-02-06
DE60205755D1 (de) 2005-09-29
KR100911604B1 (ko) 2009-08-07
CN1537397A (zh) 2004-10-13
ATE359681T1 (de) 2007-05-15
WO2003013103A3 (en) 2004-04-08
AU2002355308A1 (en) 2003-02-17
KR20040022462A (ko) 2004-03-12
DE60206389D1 (de) 2006-02-09
EP1410209B1 (de) 2006-05-24
JP4310186B2 (ja) 2009-08-05
JP2004537209A (ja) 2004-12-09
JP4077408B2 (ja) 2008-04-16
ATE305632T1 (de) 2005-10-15
EP1601217A3 (de) 2006-05-10
WO2003010932A3 (en) 2004-04-08
JP4104546B2 (ja) 2008-06-18
EP1423959A2 (de) 2004-06-02
ES2253553T3 (es) 2006-06-01
DE60219536T2 (de) 2008-01-03
KR20040017352A (ko) 2004-02-26
CN1250035C (zh) 2006-04-05
CN1279447C (zh) 2006-10-11
DE60205755T2 (de) 2006-06-29
DE60211719T2 (de) 2007-01-11
WO2003010663A3 (en) 2003-12-24
CN1235137C (zh) 2006-01-04
DE60211704D1 (de) 2006-06-29
EP1410189B1 (de) 2008-02-27
JP2004537895A (ja) 2004-12-16
EP1423959B1 (de) 2006-05-24
CN1535529A (zh) 2004-10-06
KR20040022460A (ko) 2004-03-12
EP1610222A3 (de) 2007-01-31
WO2003010662A3 (en) 2003-12-24
EP1410190A2 (de) 2004-04-21
KR20040019334A (ko) 2004-03-05
ATE310354T1 (de) 2005-12-15
CN1235138C (zh) 2006-01-04
CN1288554C (zh) 2006-12-06
CN1535420A (zh) 2004-10-06
DE60211719D1 (de) 2006-06-29
DE60211704T2 (de) 2007-05-10
AU2002319569A1 (en) 2003-02-17
AU2002328167A1 (en) 2003-02-17
WO2003010663A2 (en) 2003-02-06
CN1275149C (zh) 2006-09-13
EP1410665B1 (de) 2005-09-07
EP1601217A2 (de) 2005-11-30
KR20040022464A (ko) 2004-03-12
WO2003013103A2 (en) 2003-02-13
JP2004537121A (ja) 2004-12-09
ES2247355T3 (es) 2006-03-01
KR100918162B1 (ko) 2009-09-17
CN1535422A (zh) 2004-10-06
JP2005505813A (ja) 2005-02-24
WO2003010658A2 (en) 2003-02-06
KR100984895B1 (ko) 2010-10-01
WO2003010664A3 (en) 2003-12-24
KR100940178B1 (ko) 2010-02-03
WO2003010932A2 (en) 2003-02-06
KR100913658B1 (ko) 2009-08-24
AU2002319573A1 (en) 2003-02-17
JP2004538693A (ja) 2004-12-24
CN1275150C (zh) 2006-09-13
KR100913659B1 (ko) 2009-08-24
AU2002319572A1 (en) 2003-02-17
CN1537276A (zh) 2004-10-13
JP4278513B2 (ja) 2009-06-17
KR20040022459A (ko) 2004-03-12
WO2003010668A3 (en) 2003-09-25
CN1535419A (zh) 2004-10-06
DE60206389T2 (de) 2006-07-13
JP4073399B2 (ja) 2008-04-09
AU2002319568A1 (en) 2003-02-17
JP4101752B2 (ja) 2008-06-18
EP1410191A2 (de) 2004-04-21
AU2002319570A1 (en) 2003-02-17
EP1601217B1 (de) 2007-04-11
ES2300454T3 (es) 2008-06-16
KR20040022463A (ko) 2004-03-12
ES2263799T3 (es) 2006-12-16
JP4176634B2 (ja) 2008-11-05
KR20040022461A (ko) 2004-03-12
EP1610222B1 (de) 2011-03-02
DE60206055D1 (de) 2005-10-13
CN1288553C (zh) 2006-12-06
ATE302972T1 (de) 2005-09-15
KR20040017351A (ko) 2004-02-26
AU2002319577A1 (en) 2003-02-17
KR100940180B1 (ko) 2010-02-04
JP2004537925A (ja) 2004-12-16
WO2003012639A3 (en) 2003-12-24

Similar Documents

Publication Publication Date Title
DE60206055T2 (de) System und verfahren für verbesserte sicherheit bei der umprogrammierung eines handgerätes
DE60224281T2 (de) System und verfahren zur kompaktierung von im feld aktualisierbaren softwarekodeabschnitten eines drahtlosen kommunikationsgerätes
DE102016206488B4 (de) Verwalten von inaktiven elektronischen Teilnehmeridentitätsmodulen
EP2910039B1 (de) Verfahren zum einbringen von teilnehmeridentitätsdaten in ein teilnehmeridentitätsmodul
DE60205289T2 (de) System und Verfahren zur gesicherte Funkübertragung von Konfigurationsdaten
DE602005005131T2 (de) Nutzungsberechtigung für Dienste in einem drahtlosen Kommunikationsnetzwerk
DE60215990T2 (de) Dynamisches Dienstmerkmal in einem mobilen Kommunikationsgerät oder einer SIM-Karte zum Empfang und zur Ausführung von dynamischen Dienstskripten in Form kurzer Textnachrichten, beispielsweise SMS
EP3939344B1 (de) Verfahren zum bereitstellen von subskriptions-profilen, teilnehmeridentitätsmodul und subskriptions-server
EP2898714A1 (de) Teilnehmeridentitätsmodul zum authentisieren eines teilnehmers an einem kommunikationsnetzwerk
EP3276518B1 (de) Mobiles kommunikationsgerät mit mehrzahl über eine pin freischaltbarer anwendungen
DE102014005566A1 (de) Verfahren und Vorrichtung zum Betreiben eines mobilen Endgeräts in einem Mobilfunknetzwerk
DE69321205T2 (de) Anordnung zum Verbindungsaufbau von einem Endgerät zum Netz eines Funkkommunikationssystems mit mehreren Netzen
DE102019002050B3 (de) Verfahren zum Aufbau einer Datenverbindung, Verfahren zum Bereitstellen von Verbindungsparametern, sowie Teilnehmeridentitätsmodul
DE102016105810A1 (de) Herstellung einer lokalen Verbindung in einem Roaming-Standort
DE69712752T2 (de) Verfahren zur konfiguration einer funkeinheit
EP0918425A2 (de) Softwaregesteuertes Teilnehmerendgerät, Server zum Bereitstellen eines Steuerprogrammes und Verfahren zum Betrieb des Softwaregesteuerten Teilnehmerendgerätes
EP3452946A1 (de) Verfahren zur erstmaligen inbetriebnahme eines nicht vollständig personalisierten sicheren elements
EP3664490A1 (de) Imei speicherung
DE102006040086A1 (de) Individualisierung von Mobilfunknehmer-Identifikations-Modulen
DE102021004912A1 (de) Universal integrated chip card, uicc, zum verwalten von profilen, sowie verfahren
DE102023110415A1 (de) Ein Verfahren zum Bereitstellen von Daten für ein Abonnementenprofil für ein Secure Element
DE102018000913A1 (de) Etablierung verschiedener eUICC-Modi
EP4297458A1 (de) Profil und teilnehmeridentitätsmodul mit profil
DE102021006083A1 (de) Secure Element mit Zugriffsregel-Applikation ARA
DE102021000077A1 (de) Integriertes Teilnehmeridentitätsmodul mit Anti-Rollback-Mechanismus

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1410665

Country of ref document: EP

Representative=s name: VIERING, JENTSCHURA & PARTNER, DE

R081 Change of applicant/patentee

Ref document number: 1410665

Country of ref document: EP

Owner name: KYOCERA CORP., JP

Free format text: FORMER OWNER: KYOCERA WIRELESS CORP., SAN DIEGO, US

Effective date: 20120817

R082 Change of representative

Ref document number: 1410665

Country of ref document: EP

Representative=s name: VIERING, JENTSCHURA & PARTNER, DE

Effective date: 20120817