DE10297281B4 - Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien - Google Patents

Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien Download PDF

Info

Publication number
DE10297281B4
DE10297281B4 DE10297281T DE10297281T DE10297281B4 DE 10297281 B4 DE10297281 B4 DE 10297281B4 DE 10297281 T DE10297281 T DE 10297281T DE 10297281 T DE10297281 T DE 10297281T DE 10297281 B4 DE10297281 B4 DE 10297281B4
Authority
DE
Germany
Prior art keywords
file
updated
files
firmware
platform firmware
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 - Fee Related
Application number
DE10297281T
Other languages
English (en)
Other versions
DE10297281T5 (de
Inventor
Kirk D. Brannock
William A. Stevens
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.)
Intel Corp
Original Assignee
Intel 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
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10297281T5 publication Critical patent/DE10297281T5/de
Application granted granted Critical
Publication of DE10297281B4 publication Critical patent/DE10297281B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren zum elementaren Aktualisieren einer Vielzahl von vorhandenen Plattform-Firmware-Dateien in einem dauerhaften Firmware-Speicher, wobei wenigstens ein Teil von vorhandenen Plattform Firmwaredaten Kopfdaten beinhalten, die angeben, ob die vorhandenen Plattform-Firmware-Daten gültig und aktualisiert sind, gekennzeichnet durch die Schritte: Erstellen einer Fülldatei; Modifizieren von Kopfdaten der vorhandenen Plattform-Firmware-Datendaten um anzugeben, dass die vorhandenen Plattform-Firmware-Daten gültig sind und zu aktualisieren sind; Schreiben von aktualisierten Plattform-Firmware-Daten-Dateien in die Fülldatei in dem dauerhaften Firmware-Speicher, so dass der dauerhafte Firmware-Speicher sowohl die vorhandenen Plattform Firmware-Daten als auch die aktualisierten Firmware-Daten aufweist, wobei die aktualisierten Firmware-Daten-Dateien Kopfdaten beinhalten, die angeben, dass die aktualisierten Plattform-Firmware-Daten nicht gültig und nicht zu aktualisieren sind; und Ausführen einer elementaren Operation zum Modifizieren der Kopfdaten der Plattform-Firmware-Dateien, um anzugeben, daß die aktualisierten Plattform-Firmware-Dateien anstelle der vorhandenen Plattform-Firmware-Dateien verwendet werden sollen.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren zum Aktualisieren von Plattform-Firmware-Dateien.
  • Informationen zum Stand der Technik
  • Firmware von Computer-Plattformen wird beim Initialisieren von Computersystemen zum Überprüfen von System-Integrität und -Konfiguration verwendet. Im allgemeinen stellt sie auf niedriger Ebene auch die grundlegende Schnittstelle zwischen Hardware- und Software-Komponenten bei denjenigen Computern bereit, die das Implementieren bestimmter Hardware-Funktionen über die Ausführung von Software-Anweisungen auf höherer Ebene gestatten, die in Computer-Programmen enthalten sind, die auf den Computersystemen ausgeführt werden. Bei Computern ist ein primärer Teil dieser Firmware als der Basic Input/Output System(BIOS)-Code eines Computersystems bekannt. Der BIOS-Code umfaßt eine Gruppe von permanent gespeicherten (oder im Fall von Systemen, die ein Flash-Speicher-BIOS verwenden, semipermanent gespei-cherten) Software-Routinen, die das System mit seinen grundlegenden Betriebsmerkmalen ausstatten, einschließlich den Anweisungen, die dem Computer angeben, wie er beim Einschalten einen Selbsttest ausführt, und wie er die Konfigurationen für verschiedene eingebaute Komponenten und Zusatz-Peripheriegeräte festlegt.
  • In einer typischen PC-Architektur wird das BIOS im allgemeinen als die Firmware definiert, die zwischen dem Rücksetzen des Prozessors und der ersten Anweisung des Betriebssystem(OS)-Ladeprogramms läuft. Wie in 1 dargestellt, wird in einem typischen PC 10 der Basisteil des BIOS-Codes in einer Art von ROM(Festwertspeicher)-Einrichtung auf der Hauptplatine 12 des PCs gespeichert, wie beispielsweise einem standardmäßigen PROM 14 oder einem Flash-Speicher 16. In einigen Konfigurationen kann dieser Basisabschnitt erweitert werden, indem ein Code verwendet wird, der in ROM-BIOS-Chips 18 gespeichert ist, die in einer oder mehreren Zusatz-Peripheriekarten 20 enthalten sind, wie beispielsweise SCSI-Kontroller und Busmaster-Einrichtungen. Dieser Teil des BIOS wird in Komponenten gespeichert, die im allgemeinen als ”Options-ROMs” bezeichnet werden. Der BIOS-Code in ROM-BIOS-Chips 18 von Peripheriekarten betrifft normalerweise eine bestimmte Funktionalität, die durch ihre entsprechende Peripheriekarte bereitgestellt und während der Initialisierung dieser Peripheriekarte gemäß einer (meistens) eindeutig definierten Regelgruppe ausgeführt wird. In allen von den vorgenannten Konfigurationen ist die gesamte BIOS-Firmware lokal gespeichert, entweder auf der Hauptplatine oder in Options-ROMS auf der bzw. den zu einem System hinzugefügten Peripheriekarten.
  • In vielen Fällen wird die grundlegende Funktionalität einer Computersystem-Plattform durch die Firmware der Plattform definiert. Um diese Funktionalität dementsprechend zu erweitern, muß ein entsprechender Code zur Firmware hinzugefügt oder in dieser modifiziert werden. In den heutigen PCs kann dies entweder durch Austauschen des bzw. der BIOS-Chips auf der Hauptplatine (und/oder den Peripheriekarten) erreicht werden, oder, falls der BIOS-Code in überschreibbaren Chips enthalten ist, (z. B. einem Flash-Speicher), durch Ausführen eines Software-Programms zum Aktualisieren des BIOS, das den BIOS-Code neu schreibt (überschreibt).
  • Derartige Verfahren sind prinzipiell z. B. aus der EP 1 087 294 A2 und der US 6 088 759 A bekannt.
  • Die bekannten Verfahren können fehleranfällig sein. Das Austauschen eines BIOS-Chips durch einen unerfahrenen Benutzer kann zu mehreren Problemen führen, einschließlich unsachgemäßem Einsetzen des neuen Chips, Beschädigen des neuen Chips, Beschädigen der Fassung, elektrostatischem Beschädigen des neuen Chips und/oder von auf der Hauptplatine vorhandenen Chips. Beliebte Verfahren zum Aktualisieren des auf einer Flash-Komponente gespeicherten BIOS-Codes weisen auch Risiken auf. Beispielsweise kann ein Benutzer versuchen, den BIOS-Code mit einer ungeeigneten Gruppe von neuen Codes zu aktualisieren, oder ein Absturz kann mitten im Aktualisierungsprozeß erfolgen. Typischerweise wird der BIOS-Code als ein monolithischer Code-Block gespeichert, der in seiner Gesamtheit durch einen neuen monolithischen Code-Block ersetzt wird. Wenn der BIOS-Code auf einer Flash-Komponente gespeichert ist, müssen die Speicherblöcke, die den Teilen des Speichers entsprechen, die den neuen BIOS-Code enthalten sollen, zuerst gelöscht werden, (d. h. alle werden auf 1 zurückgesetzt), bevor der Speicher überschrieben wird. Dieser Löschprozeß vernichtet den bestehenden BIOS-Code. Wenn demzufolge ein Ausfall mitten in einem Überschreib- oder Aktualisierungsvorgang auftritt, ist der BIOS-Code beschädigt. Angenommen, es tritt ein Stromausfall ein, der verursacht, daß der Benutzer das Computersystem neu booten muß. Da der BIOS-Code normalerweise benötigt wird, um den Boot-Prozeß abzuschließen, kann es sein, daß der Benutzer das Computersystem nicht booten kann, um das Problem zu beheben, oder daß eine Notfall-Reparaturdiskette, (die der Benutzer häufig nicht besitzt), benötigt wird, um das Problem beheben zu können.
  • Aufgabe der Erfindung ist es daher, ein fehlerunanfälliges Verfahren zum Aktualisieren der Firmware von Computer-Plattformen zu schaffen.
  • Diese Aufgabe wird durch das Verfahren mit den Merkmalen von Anspruch 1 gelöst. Die Unteransprüche geben vorteilhafte Ausgestaltungen der Erfindung an.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorgenannten Gesichtspunkte und die Vorteile der Erfindung werden im Folgenden unter Bezugnahme in Zusammenhang mit den folgenden begleitenden Zeichnungen erläutert.
  • 1 ist eine schematische Darstellung, die veranschaulicht, wie die BIOS-Firmware in einem herkömmlichen Personal Computer gespeichert wird;
  • 2 ist eine schematische Darstellung, die einen beispielhaften Firmware-Speicherplan des Firmware-Datenträgers und das dazugehörige Dateisystem veranschaulicht, unter dem die Erfindung implementiert werden kann;
  • 3 ist ein Ablaufplan zur Veranschaulichung der von der Erfindung verwendeten Logik, wenn eine neue Datei in dem Firmware-Datenträger erstellt wird;
  • 4 und 5 sind schematische Darstellungen, welche die sequentiellen Änderungen in einem Dateikopf und im Speicherplatz eines Firmware-Datenträgers veranschaulichen, wenn eine neue Datei in dem Firmware-Datenträger erstellt wird;
  • 6 ist eine schematische Darstellung, die veranschaulicht, wie eine Datei unter dem Firmware-Dateisystem in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gelöscht wird;
  • 7 ist ein Ablaufplan, der die Logik veranschaulicht, die von einer Ausführungsform der Erfindung beim Aktualisieren einer bestehenden Datei in dem Firmware-Datenträger verwendet wird;
  • 8 und 9 sind schematische Darstellungen, welche die sequentiellen Änderungen in einem Dateikopf und im Speicherplatz eines Firmware-Datenträgers veranschaulichen, wenn eine neue Datei in dem Firmware-Datenträger erstellt wird;
  • 10 ist ein Ablaufplan, der die Logik veranschaulicht, die von einer Ausführungsform der Erfindung beim Erstellen einer Datei unter Verwendung einer temporären Fülldatei verwendet wird;
  • 11 ist ein Ablaufplan, der die Logik veranschaulicht, die von einer Ausführungsform der Erfindung beim Aktualisieren einer Datei unter Verwendung einer temporären Fülldatei verwendet wird;
  • 12 ist ein Ablaufplan, der die Logik veranschaulicht, die von der Erfindung beim Aktualisieren einer Vielzahl von Dateien verwendet wird;
  • 1315 sind schematische Darstellungen, welche die sequentiellen Änderungen in einem Dateikopf und im Speicherplatz eines Firmware-Datenträgers veranschaulichen, wenn eine Vielzahl von Dateien in dem Firmware-Datenträger aktualisiert wird; und
  • 16 ist eine schematische Darstellung eines Personal Computer-Systems, das für die Implementierung der vorliegenden Erfindung geeignet ist.
  • DETAILLIERTE BESCHREIBUNG DER VERANSCHAULICHTEN AUSFÜHRUNGSFORMEN
  • In der folgenden Beschreibung werden zahlreiche spezifische Details angegeben, um für ein vollständiges Verständnis der Ausführungsformen der Erfindung zu sorgen. Der entsprechende Fachmann wird jedoch erkennen, daß die Erfindung ohne eines oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten usw. ausgeführt werden kann. In anderen Fällen werden bekannte Strukturen oder Abläufe nicht gezeigt oder im Detail beschrieben, um Gesichtspunkte von verschiedenen Ausführungsformen der Erfindung nicht unklar zu machen.
  • Die durchgehende Bezugnahme auf ”eine Ausführungsform” in dieser Beschreibung bedeutet, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen, das/die in Verbindung mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Daher bezieht sich die vorkommende Wendung ”in – einer Ausführungsform” an verschiedenen Stellen in der gesamten Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Des weiteren können die bestimmten Merkmale, Strukturen oder Kennzeichen in geeigneter Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • Erweiterbare Firmware-Schnittstelle und Firmware-Datenträger
  • Vor kurzem hat die Intel Corporation einen neuen Firmware-Denkansatz vorgestellt, bei dem es möglich ist, die Firmware-Speicherung über die herkömmlichen monolithischen Speichersysteme hinaus zu erweitern, die beim bisherigen Stand der Technik zu finden sind. Dies wird teilweise durch das Extensible Firmware Interface (Erweiterbare Firmware-Schnittstelle) oder EFI ermöglicht. Wie die Bezeichnung angibt, ermöglicht das EFI, daß die Firmware durch Verwendung einer genormten Software-Schnittstelle ”erweitert” werden kann.
  • Eine Möglichkeit zum Erweitern von Firmware wird durch eine standardmäßige Software-Abstraktion für eine Firmware-Speichereinrichtung vereinfacht, die als ein Firmware-Datenträger (FV) bekannt ist. Da die FV-Firmware-Speicherabstraktion nicht an einen spezifischen Typ von Hardware gebunden ist, kann sie verwendet werden, um Firmware-Komponenten zum BIOS von fast jedem Typ von Firmware-Einrichtung aus herzustellen. Beispielsweise kann ein Firmware-Datenträger in einem vorgegebenen System ein Flash-Speicherteil sein, während ein anderer eine Plattenpartition sein kann, und ein dritter ein entferntes Verzeichnis auf einem Server sein kann. Ein einzelnes Computersystem kann einen oder mehrere Firmware-Datenträger auf einem oder mehreren Typen von Hardware umfassen.
  • Die Teile des Codes der BIOS-Firmware, die Bestandteil eines Firmware-Datenträgers sind, werden von einem Firmware-Dateisystem (FFS) verwaltet. Das Firmware-Dateisystem ermöglicht es, Firmware-Dateien zu manipulieren, die einen Firmware-Datenträger bilden. Das Firmware-Dateisystem kann zum Abrufen, Erstellen, Aktualisieren und Löschen von Firmware-Dateien verwendet werden. Im allgemeinen kann ein Firmware-Dateisystem auf jeder Dauerspeichereinrichtung, einschließlich Flash-Einrichtungen, Plattenpartitionen und entfernten Speichereinrichtungen gespeichert werden, auf die von einem Netzwerk aus zugegriffen wird.
  • In den folgenden Abschnitten und dazugehörigen Figuren werden verschiedene Ausführungsformen der Erfindung unter Bezugnahme auf einen Firmware-Datenträger erläutert, der in einer Flash-Speichereinrichtung gespeichert ist. Dem Fachmann ist klar, daß die Erfindung in anderen Arten von Dauerspeichereinrichtungen zum Verwalten von Firmware-Code und/oder Daten implementiert werden kann, und die Ausführungsformen der Erfindung, welche die im folgenden erläuterten Flash-Speichereinrichtungen verwenden, nur beispielhafte Modelle für die Ausführung der Erfindung sind.
  • Ein Flash-Speicher ist eine nichtflüchtige Speichertechnologie, die es den Herstellern und den Endanwendern (mit der entsprechenden Hardware/Software) ermöglicht, Informationen elektrisch zu programmieren und zu löschen. Ein Flash-Speicher wird typischerweise in Speichereinheiten gelöscht, die als Blöcke bezeichnet werden, anstatt auf der Bit-Ebene gelöscht zu werden, wobei alle Bits in einem vorgegebenen Block auf eine vorher festgelegte Polarität (d. h. Logik-Ebene) umgeschaltet werden, wenn ein Block gelöscht wurde. Bei einem gebräuchlichen Typ von Flash-Speicher, wie beispielsweise den von Intel hergestellten Flash-Speichereinrichtungen, werden Speicherblöcke elektronisch gelöscht, indem alle Bits in einem Block auf 1 gesetzt werden. Daten können dann in den Block geschrieben werden, indem einzelne Bits auf 0 gekippt werden. Bei anderen Typen von Flash-Einrichtungen ist der Status der gelöschten Logik insgesamt Null, und das Schreiben von Daten in diese Einrichtungen umfaßt das Ändern einzelner Bits in 1. Es wird angemerkt, daß in herkömmlichen Flash-Einrichtungen einzelne Bits von einer geänderten (d. h. eingestellten) Logik-Ebene nicht auf die Ebene der gelöschten Logik zurückgestellt werden können; um Daten in einem Block zu aktualisieren, müssen zunächst alle Bits gelöscht und anschließend neu geschrieben werden.
  • Ein beispielhafter Firmware-Datenträger 22, der in einer Flash-Einrichtung gespeichert ist, die für ihren gelöschten Status 1 verwendet, ist in 2 dargestellt. Der Firmware-Datenträger 22 umfaßt einen FV-Kopf 24 und eine Vielzahl von FFS-Dateien 25. Der Anfang des FV-Kopfs 24 ist auf der niedrigsten Speicheradresse der Flash-Einrichtung gespeichert, wobei jede FFS-Datei 25 an der nächsten Byte-Grenze nach dem Ende einer unmittelbar vorhergehenden Datei oder eines Dateikopfs (falls zutreffend) beginnt. In einer Ausführungsform treten Byte-Grenzen alle 8 Bytes auf, und Dateigrößen weisen 8-Byte-Inkremente auf. In den FFS-Dateien 25 ist eine gelöschte Datei 26 enthalten. Wie im folgenden detaillierter erläutert wird, umfaßt die gelöschte Datei 26 einen Dateikopf, der erkennt, daß die Datei vom Firmware-Dateisystem als gelöscht betrachtet wird, obwohl die Daten der gelöschten Datei immer noch im Firmware-Datenträger in dem gleichen Status vorhanden sein können, in dem sie sich befanden, bevor die Datei als gelöscht gekennzeichnet wurde. Im allgemeinen werden FFS-Dateien 25 sequentiell geschrieben, wobei ein freier Speicherplatz 28 einen verbleibenden verfügbaren Speicherplatz in dem Firmware-Datenträger darstellt und zum oberen Adressenabschnitt (d. h. den höheren Speicheradressen) der Flash-Einrichtung hin positioniert ist.
  • Der FV-Kopf 24 umfaßt eine Vielzahl von Datenfeldern, einschließlich eines Felds Attribute 30, eines Felds Kopflänge 32, eines Felds FV-Länge 34, eines Felds FileSystemID 36, eines Felds Prüfsumme 38 und eines Felds FVBlockMap 40. Das Feld Attribute 30 umfaßt eine Vielzahl von Bits, die Lese-/Schreib-Fähigkeiten, den Einschalt-Status, ”klebende” Schreibdaten, ein Kennzeichen für zugeordneten Speicher und eine Kennung für Löschpolarität umfassen. Das Feld Kopflänge 32 enthält die Länge des FV-Kopfs in Bytes. Das Feld FV-Länge 34 enthält die Länge des gesamten Firmware-Datenträgers in Bytes. Das Feld FileSystemID 36 erklärt, mit welchem Dateisystem der Firmware-Datenträger formatiert ist. Das Feld Prüfsumme 38 umfaßt eine 16-Bit-Prüfsumme des gesamten FV-Kopfs. Das Feld FVBlockMap 40 umfaßt eine Reihe von Laufzeitlänge-codierten Blockstruktur-Deskriptoren, einschließlich einer Vielzahl von Tupeln (NumBlocks, Blocklength), die durch ein {0,0}-Tupel beendet werden.
  • Jede FFS-Datei 25 umfaßt einen FFS-Kopf 42 und Dateidaten 44. Optional können Dateidaten 44 eine Endmarkierung 45 umfassen, die zu Zwecken der Prüfung der Datei-Integrität verwendet wird. Der FFS-Kopf 42 umfaßt verschiedene Datenfelder, einschließlich eines Felds Bezeichnung 46, eines Felds IntegrityCheck 47, eines Felds Typ 48, eines Felds Attribute 49, eines Felds Größe 50 und eines Felds Status 51. In einer Ausführungsform umfaßt das Feld Bezeichnung 46 eine GUID-Kennung (Global Unique Identifier), die vom Firmware-Dateisystem ausgegeben wird und für die garantiert wird, daß sie innerhalb des Firmware-Datenträgers eindeutig ist. Das Feld IntegrityCheck 47 enthält Daten, die zum Überprüfen der Integrität von Dateien verwendet werden, wie im folgenden detaillierter erläutert wird. Das Feld Typ 48 identifiziert den Dateityp und das interne Format der Datei, wie beispielsweise einen DXE-Treiber, PEIM usw. Das Feld Größe 50 enthält die Länge der Datei (einschließlich Dateikopf) in Bytes.
  • Dateien in dem Firmware-Datenträger werden unter Verwendung eines Verkettungsmechanismus angeordnet, wobei die Länge einer aktuellen Datei zu der Startadresse der Datei hinzugefügt wird, um den Beginn der nächsten Datei in der Kette anzuordnen. Außerdem befindet sich die erste Datei in dem Firmware-Datenträger unmittelbar vor dem Ende des FV-Kopfs 24, wobei die Adresse der ersten Datei auf der Basis des Werts im Feld FV-Länge 34 ermittelt wird.
  • Wie in der oberen rechten Ecke in 2 dargestellt, umfaßt das Feld Attribute 49 sechs Datenbits (plus zwei reservierte Bits), die verschiedene Attribute der Datei definieren. Diese Attributbits umfassen ein Bit Datei-Endmarkierung vorhanden 52, ein Bit Wiederherstellung 53, ein Bit Kopfdatenerweiterung 54 und ein Teilfeld 3-Bit-Datenabgleich 55, das die Bits 2, 3 und 4 des Felds Attribute 49 umfaßt. Das Feld Attribute 49 umfaßt auch zwei reservierte Bits 56 und 57. Das Bit Datei-Endmarkierung vorhanden 52 gibt an, daß eine 16-Bit-Datei-Endmarkierung am Ende der Datei vorhanden ist. Das Bit Wiederherstellung 53 gibt an, daß die Datei eine Krisen-Wiederherstellung ausführen muß. Das Bit Kopfdatenerweiterung 54 ist für künftige Erweiterungen reserviert. Das Teilfeld Datenabgleich 55 umfaßt ein Feld von 3 Bits, das angibt, wie der Anfang der Daten an einer bestimmten Grenze in Bezug auf die FV-Basis abgeglichen werden muß. Die drei Bits in diesem Feld stellen eine Aufzählung von Abgleichmöglichkeiten bereit, wie beispielsweise einen 8-Byte-Abgleich.
  • Weitere Details des Felds Status 51 sind im unteren rechten Abschnitt von 2 gezeigt. Das Feld Status 51 ist ein 8-Bit-Feld, das sechs Status-Bits umfaßt, die zum Verfolgen des aktuellen Status eines Datei-Arbeitsablaufs verwendet werden, und die beim Erstellen, Löschen und Aktualisieren der Datei verwendet werden. Die Status-Bits umfassen ein Bit Firmware-Dateisystem im Aufbauzustand 58 (Bit 0), ein Bit FFS-Kopf gültig 59 (Bit 1), ein Bit Datenbereich gültig 60 (Bit 2), ein Bit Datei zum Aktualisieren gekennzeichnet 61 (Bit 3), ein Bit Datei gelöscht 62 (Bit 4) und ein Bit FFS-Kopf ungültig 63 (Bit 5). Zusätzlich zu diesen Status-Bits bleiben die (nicht gezeigten) Bits 6 und 7 bei allen Vorgängen im Status gelöscht (d. h. Logik-Ebene FALSCH). Bei allen im folgenden beschriebenen Abläufen für Statusänderungen sind alle Übergänge von Status-Bits elementare Abläufe, d. h. es wird jeweils nur die Logik-Ebene von einem Status-Bit für eine vorgegebene Dateistatus-Änderung geändert. Außerdem muß der Übergang eines vorgegebenen Bits zu WAHR vollkommen abgeschlossen sein, bevor weitere Eintragungen in den Firmware-Datenträger vorgenommen werden. Außer in Fällen, in denen dies speziell angegeben ist, besitzt des weiteren nur das Status-Bit mit dem höchsten Stellenwert, das auf WAHR gesetzt ist, eine Bedeutung. Dementsprechend treten höherwertige Status-Bits an die Stelle von niederwertigen Status-Bits.
  • Dateierstellung
  • Unter Bezugnahme auf den Ablaufplan in 3 und 4 und 5 läuft die Erstellung einer neuen Datei wie folgt ab. Ein neues Feld wird erstellt, indem unmittelbar nach dem Ende einer vorhergehenden Datei, (oder eines Firmware-Datenträger-Kopfs 24, wenn die neue Datei die erste Datei ist, die auf den Firmware-Datenträger geschrieben wird), Speicherplatz aus dem Firmware-Datenträger zugewiesen wird. Angenommen, der Firmware-Datenträger 22 umfaßt eine einzelne Datei X (68) und eine neue Datei Y soll hinzugefügt werden. Dementsprechend umfaßt der restliche Speicherplatz über der letzten (höchsten) Adresse, die von einer Datei X belegt wird, einen freien Raum 28, wobei alle Bits, die diesen Speicherteil belegen, entsprechend dem Gelöscht-Status der Firmware-Einrichtung auf die Logik-Ebene FALSCH gesetzt sind. Infolge des Vorhergehenden umfaßt der Speicherplatz, der von der neuen Datei Y, einschließlich der Kopfdaten der Datei, anfänglich nur auf 1 gesetzte Werte, wie durch den Anfangsstatus 70 einer Datei Y in 4 dargestellt ist.
  • Der Dateierstellungs-Prozeß beginnt in einem Block 100, in dem das Bit Dateikopf im Aufbauzustand (58) auf WAHR gesetzt wird, wodurch in dem Firmware-Datenträger Speicherplatz für den neuen Dateikopf zugewiesen wird. Daraus ergibt sich ein Status = 11111110b für Datei Y, der angibt, daß der Kopfdaten-Aufbau für Datei Y begonnen hat, aber noch abgeschlossen werden muß. Dieser Zustand ist in 4 dargestellt als Status Kopf im Aufbau 72. Dies hat ein ”Beanspruchen” des FFS-Kopf-Speicherplatzes aus dem freien Speicherplatz 28 des Firmware-Datenträgers zur Folge, der jetzt durch einen Kopf 74 einer Datei Y belegt wird. In diesem Status werden alle anderen Kopf-Felder in einem Block 102 initialisiert, indem entsprechende Daten in jedes Feld geschrieben werden. Dazu gehört die Initialisierung des Felds Bezeichnung 46, des Felds IntegrityCheck 47, des Felds Typ 48, des Felds Attribute 49 und des Felds Größe 50. In einer Ausführungsform umfaßt das Feld Bezeichnung 46 eine GUID-Kennung, die vom Firmware-Dateisystem ausgegeben wird. Typischerweise kann die GUID-Kennung eine 32-Bit-, 64-Bit- oder 128-Bit-GUID-Kennung aufweisen, obwohl jede Bit-Länge der GUID-Kennung verwendet werden kann, solange die GUID-Kennung eine Eindeutigkeit in dem Firmware-Datenträger sicherstellt.
  • Das Feld IntegrityCheck 47 ist ein 16-Bit-Feld mit drei Teilfeldern: ein IntegrityCheck.Checksum.Header-Teilfeld, ein Teilfeld IntegrityCheck.Checksum.File und ein Teilfeld IntegrityCheck.TailReference. Das Teilfeld IntegrityCheck.Checksum.Header belegt die niedrigeren 8 Bits des Felds IntegrityCheck 47 und umfaßt eine 8-Bit-Prüfsumme für den Dateikopf. Die Felder Status und IntegrityCheck.Checksum.File werden als Null angenommen, und die Prüfsumme wird so berechnet, daß der gesamte Kopf auf Null summiert wird. Der Wert für IntegrityCheck.Checksum.Header ist immer gültig, wenn das Bit Dateikopf gültig 59 im Feld Status 51 auf WAHR gesetzt ist.
  • Das Teilfeld IntegrityCheck.Checksum.File belegt die höheren 8 Bits des Felds IntegrityCheck 47 und umfaßt eine 8-Bit-Prüfsumme für die gesamte Datei. Das Feld Status 51 und Datei-Endmarkierung 45 werden als Null angenommen, und die Prüfsumme wird so berechnet, daß die gesamte Datei auf Null summiert wird. Der Wert für IntegrityCheck.Checksum.File ist immer gültig, wenn das Bit Dateidaten gültig 60 im Feld Status 51 auf WAHR gesetzt ist.
  • Das Teilfeld IntegrityCheck.TailReference umfaßt die vollen 16 Bits des Felds IntegrityCheck 47. Es wird zum Berechnen des Werts für Datei-Endmarkierung 45 verwendet, wenn das Bit Datei-Endmarkierung vorhanden 52 im Feld Attribute 49 auf WAHR gesetzt ist.
  • Nachdem die Initialisierung der Felder für den FFS-Kopf abgeschlossen ist, wird der neue Dateikopf als vollständig gekennzeichnet, indem das Bit Dateikopf gültig 59 in einem Block 104 auf WAHR gesetzt wird. Daraus ergibt sich ein Status = 11111100b, wie dies von einem Status Kopf gültig 76 in 5 dargestellt wird, der angibt, daß der Kopfaufbau abgeschlossen ist, die Dateidaten jedoch noch nicht geschrieben sind. Dies hat ein ”Beanspruchen” der vollen Länge der Datei aus dem freien Speicherplatz 28 des Firmware-Datenträgers zur Folge. Sobald das Bit Dateikopf gültig 59 auf WAHR gesetzt ist, lassen sich keine weiteren Änderungen für Feld Bezeichnung 46, Feld Typ 48, Feld Attribute 49, Feld Größe 50 oder den Wert für IntegrityCheck.Checksum.Header mehr vornehmen.
  • In diesem Status werden die Dateidaten, der Wert für IntegrityCheck.Checksum.File und die Datei-Endmarkierung (falls zutreffend) in den Firmware-Datenträger 22 in einen Block 106 geschrieben, wie dies durch die Daten 78 und die optionale Datei-Endmarkierung 79 dargestellt wird. Ob eine Datei-Endmarkierung geschrieben wird, hängt vom Status des Bits Datei-Endmarkierung vorhanden 52 im Feld Attribute 49 ab – sie wird geschrieben, wenn der Wert WAHR lautet, sie wird nicht geschrieben, wenn der Wert FALSCH lautet. Die Datei-Endmarkierung, die zum Prüfen der Datei-Integrität verwendet wird, folgt nach den Daten und umfaßt die letzten zwei Bytes der Abbildung der Datei im Firmware-Datenträger 22.
  • Sobald entsprechende Daten in Block 106 geschrieben worden sind, kann eine optionale Integritätsprüfung in einem Block 108 ausgeführt werden. Es gibt verschiedene Datei- oder Daten-Integritätsprüfungen, die der Fachwelt ein Begriff sind und zu diesem Zweck verwendet werden können. Wenn beispielsweise ein Quellabbild für die Datei verfügbar ist, kann ein Vergleich Bit für Bit oder ein Prüfsummen-Vergleich mit dem Quellabbild und dem geschriebenen Abbild, (d. h. der Version der Datei, die gerade in den Firmware-Datenträger 22 geschrieben wurde), ausgeführt werden. In einigen Fällen kann es vorkommen, daß das Quellabbild nicht zur Verfügung steht, wie beispielsweise in dem Fall, daß die Dateidaten aus einem Pufferspeicher geschrieben wurden, der in der Zwischenzeit geräumt wurde. In diesem Fall kann eine Datei-Integritätsprüfung durchgeführt werden durch das Bereitstellen einiger Indizien, die für die Quelldatei spezifisch sind (z. B. ein Prüfsummenwert), die mit ähnlichen, in der neu geschriebenen Datei enthaltenen Indizien verglichen werden können.
  • Der Dateierstellungs-Prozeß wird in einem Block 110 abgeschlossen, in dem das Bit Dateidaten gültig 60 auf WAHR gesetzt wird, wodurch angegeben wird, daß die Dateidaten gültig sind. Daraus ergibt sich der Status = 11111000b, wie dies von einem Status Dateidaten gültig 80 in 5 dargestellt wird.
  • Dateilöschung
  • Zusätzlich zur Dateierstellung können Dateien durch eine elementare Änderung des Felds Status 51 gelöscht werden. Jede Datei, deren Bit Dateikopf gültig 59 auf WAHR gesetzt ist und deren Bit Datei gelöscht 62 auf FALSCH gesetzt ist, ist ein Kandidat für eine Löschung. Zum Löschen einer Datei wird das Bit Datei gelöscht 62 auf WAHR gesetzt, wie in 6 dargestellt. Wie vorher muß der Übergang dieses Bits in den Status WAHR elementar und vollständig abgeschlossen sein, bevor weitere Eintragungen in den Firmware-Datenträger 22 vorgenommen werden. Daraus ergibt sich ein Status = 1110xx00b, wie durch einen Status Datei gelöscht 82 dargestellt, der angibt, daß die Datei als gelöscht gekennzeichnet ist. Die ”x”-Werte in den hier enthaltenen Figuren geben an, daß der Wert 1 oder 0 sein kann, was vom aktuellen Status abhängt. Aber obwohl die Datei als gelöscht gekennzeichnet ist, ist ihr Kopf immer noch insofern gültig, als das Feld für die Länge der Dateigröße 50 dazu verwendet wird, den Anfang der nächsten Datei im Firmware-Datenträger 22 festzustellen.
  • Dateiaktualisierung
  • Ein weiteres Merkmal, das vom Firmware-Dateisystem bereitgestellt wird, ist die Fähigkeit, vorhandene Dateien zu aktualisieren. Eine Dateiaktualisierung ist ein spezieller Fall von Dateierstellung, wobei die hinzugefügte Datei bereits auf dem Firmware-Datenträger vorhanden ist. Kurz gesagt umfaßt der Aktualisierungsablauf das transparente Schreiben einer neuen (aktualisierten) Version einer Datei in einem freien Speicherplatzabschnitt des Firmware-Datenträgers, wobei eine elementare Änderung an den FV-Dateikopfdaten vorgenommen wird, um gleichzeitig die neue Datei für gültig zu erklären und die ursprüngliche Datei ungültig zu machen und anschließend die ursprüngliche Datei als gelöscht zu kennzeichnen. Beim Ausführen dieses Vorgangs werden die Status-Bits im Feld Status 51 beider Dateien Bit für Bit in einer vorgegebenen Reihenfolge geändert, die ein vollständiges Wiedergewinnen in dem Fall einer Unregelmäßigkeit, wie beispielsweise eines Stromausfalls, während der Aktualisierung ermöglicht. Dementsprechend ist zu jedem Zeitpunkt nur eine der Dateien, entweder die aktualisierte Datei (z. B. Datei X') oder die ursprüngliche Datei (z. B. Datei X) gültig.
  • Unter Bezugnahme auf 79 verläuft eine Ausführungsform einer Dateiaktualisierung durch das Firmware-Dateisystem, bei der eine ursprüngliche Datei X mit einem Dateikopf 84 und Dateidaten 86 in eine Datei X' aktualisiert wird, wie folgt. Der Prozeß beginnt in einem Block 112 in 7, in dem das Bit Datei zum Aktualisieren gekennzeichnet 61 in dem Dateikopf (84) der zu aktualisierenden Datei, also der ursprünglichen Datei X, auf WAHR gesetzt wird. Der Übergang dieses Bits in den Status WAHR muß elementar und vollständig abgeschlossen sein, bevor weitere Eintragungen in den Firmware-Datenträger 22 vorgenommen werden. Daraus ergibt sich ein Status = 11110000b, wodurch angegeben wird, daß die Datei zum Aktualisieren gekennzeichnet ist, wie durch einen Status Datei zum Aktualisieren gekennzeichnet 88 in 8 dargestellt ist. Eine Datei mit diesem Status bleibt gültig, solange es keine weitere Datei in dem Firmware-Datenträger mit dieser gleichen Bezeichnung und einem Status = 111110xxb gibt.
  • Als nächstes wird in einem Block 114 die neue aktualisierte Datei, die Datei X', in der gleichen Weise erstellt, wie oben unter Bezugnahme auf 45 und die Prozeßblöcke 100, 102, 104, 106, 108 und 110 in 3 erläutert wurde. Dazu gehört das Erstellen und Initialisieren der Felder in einem neuen Dateikopf 90 und das Schreiben des aktualisierten Abbilds der Datei in einen Teil des Speichers, der die Dateidaten 92 umfaßt. Nach der Validierung der neuen Datei, wie durch den Status Dateidaten gültig 80 angegeben, wird die ursprüngliche Datei, die zum Aktualisieren gekennzeichnet worden ist, ungültig. Wie oben erläutert, erfolgt dies, weil jetzt eine andere Datei im Firmware-Datenträger 22 vorhanden ist, welche die gleiche Bezeichnung wie die ursprüngliche Datei und einen Status aufweist, der nicht = 111110xxb ist. Das Vorgehen, das Bit Dateidaten gültig in das Feld Status 51 des neuen Dateikopfs 90 zu schreiben, wirkt sich zusätzlich so aus, daß die ursprüngliche Datei X ungültig gemacht wird. Der Datei-Aktualisierungsprozeß wird in einem Block 116 abgeschlossen, in dem das Bit Datei gelöscht 62 im Dateikopf für die ursprüngliche Datei, also dem Dateikopf 84, auf WAHR gesetzt ist, wie dies durch einen Status Datei gelöscht 94 in 9 dargestellt ist.
  • Fülldateien
  • Unter dem Firmware-Dateisystem können verschiedene Dateitypen verwendet werden. Der Typ jeder Datei wird durch den Wert im Feld Typ 48 des Dateikopfs identifiziert. Zu diesen verschiedenen Dateitypen gehört eine Fülldatei. Eine Fülldatei erhält ihre Bezeichnung aufgrund eines ihrer üblichen Verwendungszwecke. Sie kann zum Füllen des Speicherplatzes der Datei verwendet werden, die im Speichermedium auf sie folgt. Dies kann aus einer Reihe von Gründen geschehen, einschließlich dem Festlegen des Speicherplatzes einer Datei in einem Firmware-Datenträger, dem Belegen von Speicherplatz vor einer obersten Datei des Datenträgers, (einer Datei, die am Ende des Speicherplatzes hinzugefügt wird, um den Firmware-Datenträger zu füllen), und dem Sicherstellen eines Datenabgleichs für eine Datei, um den Abgleichkriterien zu entsprechen, die durch die Abgleich-Bits vorgegeben sind, die im Teilfeld Datenabgleich 55 im Feld Attribute 49 eingestellt sind. Eine Fülldatei kann auch beim Ausführen von Datei-Aktualisierungsvorgängen verwendet werden, wobei mehrere Dateien in einem Firmware-Datenträger im Gleichschritt aktualisiert werden, wie im folgenden beschrieben.
  • Der normale Status jeder gültigen (nicht gelöschten oder ungültig gemachten) Datei ist, daß beide, ihr Kopf und ihre Daten gültig sind. Dies wird angegeben, indem die Status-Bits im Feld Status 51 auf Status = 11111000b gesetzt werden. Fülldateien unterscheiden sich von allen anderen Dateitypen dadurch, daß jede Fülldatei in diesem Status keine Daten aufweisen sollte, die in ihren Datenbereich geschrieben sind. Im wesentlichen handelt es sich um eine Datei, die mit freiem Speicherplatz gefüllt ist. Außerdem muß das Bit Datei-Endmarkierung vorhanden 52 im Feld Attribute 49 bei Fülldateien frei sein. Diese Einschränkung besteht, da es nicht möglich wäre, wenn dieses Bit gesetzt wäre, den freien Speicherplatz von der Fülldatei zurückzufordern. Da die Daten aus der Fülldatei stammen, die freien Speicherplatz umfaßt, ist eine erweiterte Prüfung der Datei nur eine Prüfung, ob nicht-freie Daten vorhanden sind.
  • Weil der Datenbereich einer Fülldatei nicht verwendet wird, ist es wünschenswert, diesen freien Speicherplatz zur Verwendung zurückzufordern, falls möglich. Dies geschieht, indem zwei der Status-Bits der Fülldatei verwendet werden. Da beim Datenbereich einer Fülldatei mit einem Status = 11111000b garantiert wird, daß es sich um einen ungestörten freien Speicherplatz handelt, würde die herkömmliche Verwendung des Bits Datei zum Aktualisieren gekennzeichnet 61 (d. h. wie oben verwendet) keinen Sinn ergeben. In Fülldateien wird die Bedeutung dieses Bits überladen, um anzugeben, daß der Datenbereich kein ungestörter freier Speicherplatz ist, sondern einige Daten aufgewiesen haben kann, die in ihn geschrieben waren. Dies ist der Schlüssel zum Zurückfordern des in einer Fülldatei enthaltenen freien Speicherplatzes.
  • Unter Bezugnahme auf 10 kann ein freier, in einer Fülldatei enthaltener Speicherplatz durch Ausführen des folgenden Prozesses zurückgefordert werden. Der Prozeß beginnt in einem Block 120, in dem das Bit Datei zum Aktualisieren gekennzeichnet 61 im Kopf der Fülldatei auf WAHR gesetzt ist. Wie vorher muß der Übergang von diesem und jedem anderen Bit im Fülldateikopf in den Status WAHR elementar und vollständig abgeschlossen sein, bevor weitere Eintragungen in den Firmware-Datenträger vorgenommen werden. Daraus ergibt sich ein Status = 11110000b, der angibt, daß der Datenbereich der Fülldatei nicht als ungestörter freier Speicherplatz garantiert ist.
  • Danach wird in einem Block 122 eine vollständige neue Datei erstellt und in den Datenbereich der Fülldatei (d. h. den freien Speicherplatz) geschrieben. Wenn die neue Datei keine besonderen Abgleichanforderungen aufweist, wird sie in der Fülldatei an der niedrigsten Adresse erstellt. Wenn dagegen eine Abgleichanforderung vorhanden ist, kann es notwendig sein, der gewünschten Datei eine weitere Fülldatei voranzustellen, wobei alle in den Datenbereich der ursprünglichen Fülldatei geschrieben werden. Trotzdem muß bzw. müssen die neuen Dateien vollständig geschrieben werden, einschließlich des Dateikopfs und der Daten. Die Status-Bits dieser Datei sind so geschrieben, daß der Status = 11111000b lautet. Da der Kopf (und daher das Feld Status) für die neue Datei tatsächlich Bestandteil des Datenbereichs der Fülldatei ist, ist er noch nicht als Bestandteil des Firmware-Dateisystems sichtbar.
  • Wenn die in Block 122 erstellte neue Datei den Datenbereich der Fülldatei nicht vollständig ausfüllt, muß eine weitere Fülldatei zum Füllen dieses Speicherplatzes erstellt werden, wie durch einen Block 124 vorgesehen ist. Diese Datei wird auf die gleiche Weise erstellt wie in Block 122, außer, daß der Anfang des Kopfs der neuen Fülldatei auf die Daten für die Datei folgt, die gerade erstellt wurde.
  • Der Prozeß wird in einem Block 126 abgeschlossen, in dem das Bit Dateikopf ungültig 63 in der ursprünglichen Fülldatei auf WAHR gesetzt ist. Daraus ergibt sich ein Status = 11010000b, der angibt, daß der Kopf der Fülldatei ungültig ist. Da der Kopf der Fülldatei jetzt ungültig ist, ist auch das Feld Länge im Kopf der Fülldatei nicht mehr gültig. Dies wirkt sich so aus, daß das Firmware-Dateisystem nur den Kopf der Fülldatei überspringt und nach einem anderen Dateikopf an der Stelle sucht, die vorher der Datenbereich der Fülldatei war. Da der Kopf der neuen Datei an dieser Stelle vorhanden ist, wird sie korrekterweise als eine gültige Datei interpretiert.
  • Dateiaktualisierung unter Verwendung einer Fülldatei
  • Eine Dateiaktualisierung unter Verwendung des freien Speicherplatzes einer Fülldatei ist dem oben erläuterten normalen Datei-Aktualisierungsprozeß sehr ähnlich, außer, daß die aktualisierte Datei in den ”freien” Speicherplatz einer Fülldatei geschrieben wird anstatt in den ”normalen” freien Speicherplatz 28. Unter Bezugnahme auf den Ablaufplan von 11 läuft eine Dateiaktualisierung unter Verwendung einer Fülldatei wie folgt ab. Der Prozeß beginnt in einem Block 130, in dem das Bit Datei zum Aktualisieren gekennzeichnet 61 im Kopf der Fülldatei auf WAHR gesetzt ist. Daraus ergibt sich ein Status = 11110000b, der angibt, daß nicht garantiert ist, daß der Datenbereich der Fülldatei ein freier ungestörter Speicherplatz ist.
  • Danach wird in einem Block 132 eine vollständige neue Datei im Datenbereich (freien Speicherplatz) der Fülldatei an deren niedrigster Adresse (nach ihrem Kopf) erstellt. Wenn die neue Datei besondere Abgleichanforderungen aufweist, muß dies in der gleichen Weise behandelt werden wie unter Bezugnahme auf Block 122 in 10 oben erläutert. Diese neue Datei muß vollständig geschrieben werden, einschließlich des Dateikopfs und der Daten. Die Statusbits des Dateikopfs für diese neue Datei werden so geschrieben, daß ein Status = 11111000b angegeben wird. Da er tatsächlich Bestandteil des Datenbereichs der Fülldatei ist, ist er noch nicht als Bestandteil des Firmware-Dateisystems sichtbar.
  • Wenn die in Block 132 erstellte neue Datei den Datenbereich der Fülldatei nicht vollständig ausfüllt, muß eine weitere Fülldatei zum Füllen dieses Speicherplatzes erstellt werden, wie durch einen Block 134 vorgesehen ist. Diese Datei wird auf die gleiche Weise erstellt wie in Block 132, außer, daß der Anfang des Kopfs der neuen Fülldatei auf die Daten für die gerade erstellte Datei folgt. Das Bit Datei zum Aktualisieren gekennzeichnet 61 wird dann in der ursprünglichen Datei auf WAHR gesetzt, die das Ziel der Aktualisierung in einem Block 136 ist.
  • Danach wird in einem Block 138 das Bit Dateikopf ungültig 63 in der ursprünglichen Fülldatei auf WAHR gesetzt. Daraus ergibt sich ein Status = 11010000b, der angibt, daß der Kopf der Fülldatei ungültig ist. Da der Kopf der Fülldatei jetzt ungültig ist, ist auch das Feld Länge im Kopf der Fülldatei nicht mehr gültig. Dies wirkt sich so aus, daß das Firmware-Dateisystem nur den Kopf der Fülldatei überspringt und nach einem anderen Dateikopf an der Stelle sucht, die vorher der Datenbereich der Fülldatei war. Da der Kopf der neuen Datei an dieser Stelle vorhanden ist, wird sie korrekterweise als eine gültige Datei interpretiert. Der Prozeß wird in einem Block 140 abgeschlossen, in dem die ursprüngliche Datei, die aktualisiert werden sollte, gelöscht wird.
  • Elementare Aktualisierung von mehreren Dateien
  • Ein wichtiger Gesichtspunkt der Erfindung ist deren Fähigkeit zum elementaren Aktualisieren einer Vielzahl von FFS-Dateien in einer Weise, die das vollständige Wiedergewinnen für den Fall gestattet, daß während des Aktualisierungsprozesses eine Unregelmäßigkeit, wie zum Beispiel ein Stromausfall, eintritt. Beispielsweise werden während eines Aktualisierungsprozesses neue Daten auf einen Firmware-Datenträger geschrieben. Wenn während dieses Prozesses aufgrund eines Ausfalls des Stromversorgungssystems oder eines anderen Systemausfalls ein Schreibfehler auftritt, kann das Firmware-Dateisystem in einem inkonsistenten Status hinterlassen werden. Durch die Verwendung der Status-Bits und des Felds IntegrityCheck werden diese Fehlerarten jedoch vom Firmware-Dateisystem erkannt, das dann versucht, den Aktualisierungsprozeß an der Stelle fortzusetzen, an welcher der Fehler aufgetreten ist, oder die Firmware-Dateien wieder in ihren ursprünglichen Zustand zurückzuversetzen, den sie vor dem Start des Aktualisierungsprozesses hatten.
  • Eine Ausführungsform für eine elementare Aktualisierung einer Vielzahl von Dateien in einem Firmware-Dateisystem ist in 1215 gezeigt. Mit einer elementaren Aktualisierung wird eine Vielzahl von Dateien in einem Firmware-Datenträger zur gleichen Zeit im Gleichschritt aktualisiert. Wenn ein Systemausfall während der elementaren Aktualisierung auftritt, behält das Firmware-Dateisystem entweder einen vollständigen Satz der alten Firmware-Dateien bei, die aktualisiert werden sollen, oder einen vollständigen Satz der neuen aktualisierten Firmware-Dateien. Die elementare Aktualisierung verhindert, daß der Firmware-Datentrager die aktualisierten Dateien als eine Mischung aus alten und neuen Versionen nach einem Systemausfall während des Aktualisierungsprozesses von Firmware-Dateien aufweist. Es ist klar, daß bei einem elementaren Aktualisieren nicht alle der Firmware-Dateien in einem Firmware-Datenträger aktualisiert werden müssen. Im allgemeinen kann eine elementare Aktualisierung mit zwei oder mehr Dateien in dem gleichen Firmware-Datenträger ausgeführt werden. Wenn im folgenden Beispiel zwei Dateien elementar aktualisiert werden, muß jeweils eine neue Ersatzdatei für jede bestehende Datei vorhanden sein. Im allgemeinen ist die Anzahl von neuen Dateien gleich oder größer als die Anzahl der ursprünglichen Dateien, die elementar aktualisiert werden sollen. In Fällen, in denen mehr neue Daten als bestehende Dateien vorhanden sind, wird bzw. werden die zusätzlichen neuen Dateien dem Firmware-Datenträger einfach als neue Datei und nicht als aktualisierte Datei hinzugefügt.
  • Das elementare Aktualisieren einer Vielzahl von Dateien umfaßt einen Prozeß, der im wesentlichen dem Datei-Aktualisierungsprozeß gleicht, der oben unter Bezugnahme auf 11 erläutert wurde, außer, daß in diesem Fall eine Vielzahl von ursprünglichen Dateien mit Firmware-Daten aktualisiert wird, die in den Datenbereich der Fülldatei statt in eine einzelne Datei geschrieben werden. Unter Bezugsnahme auf 13 wird eine anfängliche Konfiguration eines Firmware-Datenträgers 160 angenommen, der zwei Dateien X und Y enthält, die jeweils in die Dateien X' und Y' aktualisiert werden sollen. Die Datei X umfaßt einen Dateikopf 162 und einen Datenbereich 164, während die Datei Y einen Dateikopf 166 und einen Datenbereich 168 aufweist. Das Feld Status 51 für jeden der Dateiköpfe 162 und 166 ist so eingestellt, daß der Status = 11111000b lautet, der angibt, daß jede Datei X und Datei Y gültig ist, wie jeweils durch den Status Dateidaten gültig 80X und 80Y gezeigt wird.
  • Unter Bezugnahme auf den Ablaufplan von 12 beginnt der Prozeß der elementaren Aktualisierung einer Vielzahl von Dateien in einem Block 142, in dem eine Fülldatei an einer Byte-Grenze, die unmittelbar auf das Ende der FFS-Datei folgt, die den höchsten Adressen-Speicherplatz (d. h. die niedrigste Adresse des freien Speicherplatzes 28) belegt, in der Weise erstellt wird, wie sie oben unter Bezugnahme auf 35 zum Erstellen einer Datei erläutert wurde. Nachdem die Fülldatei erstellt ist, umfaßt sie einen Fülldateikopf 170 und einen Datenbereich 172. Idealerweise sollte die Fülldatei so groß sein, daß sie die kombinierte Größe der aktualisierten Datei-Abbilder und ihrer entsprechenden Dateiköpfe aufnehmen kann. In diesem Zusammenhang wird eine maximale Speicherauslastung wahrgenommen. Anfänglich lautet der Status für die Fülldatei 11111000x, der angibt, daß die Fülldateidaten gültig sind, wie durch den Status Dateidaten gültig 80P in 13 dargestellt.
  • Danach wird das Bit Datei zum Aktualisieren gekennzeichnet 61 in einem Block 144 im Kopf der Fülldatei auf WAHR gesetzt. Dies wird durch einen Status Datei zum Aktualisieren gekennzeichnet 88P in 13 und 14 veranschaulicht. An dieser Stelle wird in einem Block 146 für jede der zu aktualisierenden Dateien eine neue Datei nach der anderen in den Datenbereich 172 der Fülldatei geschrieben, (d. h. eine nächste Datei beginnt unmittelbar nach der zuletzt geschriebenen Datei). Dies umfaßt beides, das Schreiben des Kopfs und der Daten für jede Datei. Die Daten für eine Datei umfassen ein Dateiabbild, das dem aktualisierten Teil von Firmware entspricht, der an die Stelle der ursprünglichen Firmware treten soll, die in der aktualisierten Datei gespeichert ist. Wie in 14 dargestellt, werden die neuen Dateien X' und Y' während dieses Vorgangs geschrieben, wobei die Datei X' einen Dateikopf 174 und einen Datenbereich 176 umfaßt, in den ein Abbild für ihre aktualisierte Firmware geschrieben ist, und die Datei Y' umfaßt einen Dateikopf 178 und einen Datenbereich 180, in den ein Abbild für ihre aktualisierte Firmware geschrieben ist. In einer Weise, die der oben erläuterten gleicht, sind beide dieser Dateien vor dem Firmware-Dateisystem an dieser Stelle ”verborgen”, da die Fülldatei immer noch als gültig gekennzeichnet ist.
  • Nachdem die aktualisierten Dateien erstellt sind, kann eine optionale Daten-Integritätsprüfung in einem Block 148 für eine oder mehr der aktualisierten Dateien ausgeführt werden. Wie oben beschrieben kann die Daten-Integritätsprüfung eine Prüfung durch bitweises Vergleichen zwischen dem neu geschriebenen Dateiabbild und dessen Quelle, einen Prüfsummenvergleich oder eine andere Art von Datei-Integritätsprüfung umfassen, die in der Fachwelt ein Begriff ist.
  • Die Logik fährt danach mit einem Block 150 fort, in dem das Bit Datei zum Aktualisieren gekennzeichnet 61 im Kopf für jede der ursprünglichen Dateien, die aktualisiert werden sollen, auf WAHR gesetzt wird. Jeder der Status für die ursprünglichen Dateien X und Y lautet jetzt = 11110000x, wie durch die Status Datei zum Aktualisieren gekennzeichnet 88X und 88Y in 14 und 15 dargestellt wird. Danach wird das Bit Dateikopf ungültig 63 in einem Block 152 in der ursprünglichen Fülldatei auf WAHR gesetzt, die jetzt den Status = 11010000x aufweist, wie durch den Status Dateikopf ungültig 182 in 15 gezeigt wird. Damit wird der Fülldateikopf ungültig gemacht, wodurch die neu aktualisierten Dateien (z. B. Datei X' und Y') für das Firmware-Dateisystem sichtbar werden. Diese Sichtbarkeit wird wie folgt hergestellt. Obwohl der Fülldateikopf ungültig ist, wird er immer noch zum Bereitstellen des Speicherorts verwendet (über die Nominalgröße des Kopfs, z. B. 6 Bytes). Wenn das Firmware-Dateisystem den Fülldateikopf 170 liest, erkennt es dementsprechend, daß der Kopf ungültig ist und bewegt sich weiter zum Anfang des Dateikopfs für die erste aktualisierte Datei, die in den Datenbereich der Fülldatei geschrieben ist (in diesem Beispiel die Datei X'). Dieser Dateikopf enthält Informationen (über sein Feld Größe 50), die vom Firmware-Dateisystem ebenfalls zum Ermitteln des Anfangs des Kopfs für die nächste Datei im Firmware-Datenträger verwendet wird.
  • Die elementare Aktualisierung einer Vielzahl von Dateien wird in einem Block 154 abgeschlossen, wobei jede der ursprünglichen Dateien, die aktualisiert werden sollten, gelöscht wird, indem ihr Bit Datei gelöscht 62 auf WAHR gesetzt wird. Damit wird der Status dieser Dateien in 11100000x geändert, wie durch die Status Datei gelöscht 82X und 82Y in 15 gezeigt wird.
  • Der oben genannte Prozeß stellt sicher, daß mehrere Datei-Aktualisierungen im Gleichschritt ausgeführt werden, um so zu gewährleisten, daß das Firmware-Dateisystem entweder die ursprüngliche Version der Dateien oder die aktualisierte Version der Dateien verwendet, ohne jede Möglichkeit einer falschen Zuordnung zwischen den beiden Versionen. Für den Fall einer Unregelmäßigkeit im System können die Köpfe der verschiedenen Dateien geprüft werden, um festzustellen, in welchem Status sich jede der Dateien befunden hat, als die Unregelmäßigkeit im System auftrat. Damit wird ein Wiederherstellungspfad bereitgestellt, der es ermöglicht, den Datei-Aktualisierungsprozeß wieder an der Stelle aufzunehmen, an der er abgebrochen wurde, bis die Datei-Aktualisierungen erfolgreich abgeschlossen sind. Da im Gegensatz zu Systemen des bisherigen Stands der Technik der Firmware-Datenträger immer ein gültiges Set von Firmware-Dateien enthält, werden Computersysteme, welche die Erfindung implementieren, nicht an einem erneuten Boot-Vorgang gehindert für den Fall, daß während eines Firmware-Aktualisierungsprozesses eine Unregelmäßigkeit im System auftritt.
  • Beispielhaftes Computersystem für die Implementierung der Erfindung
  • Unter Bezugnahme auf 16 wird ein im allgemeinen herkömmlicher Personal Computer 200 gezeigt, der für die Verwendung in Zusammenhang mit der Ausführung der vorliegenden Erfindung geeignet ist. Das System kann unter Verwendung einer lokalen Plattform-Firmware-Architektur implementiert werden (z. B. wird die gesamte Firmware lokal im Computer gespeichert unter Verwendung von Firmware-Speichereinrichtungen, wie beispielsweise Flash-Einrichtungen und Options-ROMs), oder es kann auch eine verteilte Plattform-Firmware-Architektur implementiert werden, wie in 16 dargestellt. Die Erfindung kann auch in anderen Computersystemen implementiert werden, einschließlich Workstations, Laptops und Computer-Servern.
  • Der Personal Computer 200 umfaßt ein Prozessorgehäuse 202, in dem ein Diskettenlaufwerk 204, ein Festplattenlaufwerk 206, eine Hauptplatine 208, die mit entsprechenden integrierten Schaltungen bestückt ist, einschließlich einem oder mehreren Mikroprozessoren und Speichermodulen (beide sind nicht dargestellt), und eine (ebenfalls nicht dargestellte) Energieversorgung untergebracht sind, wie sie dem Fachmann im allgemeinen gut bekannt sind. Die Hauptplatine 208 umfaßt auch eine lokale Firmware-Speichereinrichtung 210 (z. B. einen Flash-Speicher), auf welcher der Basisteil der BIOS-Firmware gespeichert ist. Um den Zugang zu dem Teil der BIOS-Firmware zu erleichtern, der von einer entfernten Firmware-Speichereinrichtung 212 über ein Netzwerk 214 abgerufen wird, umfasst der Personal Computer 200 eine Netzwerk-Schnittstellenkarte 216 oder eine äquivalente Schaltung, die in die Hauptplatine 208 eingebaut ist. Das Netzwerk 214 kann ein LAN, WAN und/oder das Internet umfassen und eine verkabelte oder drahtlose Verbindung zwischen dem Personal Computer 200 und der entfernten Firmware-Speichereinrichtung 212 umfassen.
  • Ein Bildschirm 218 ist inbegriffen zum Anzeigen von Graphiken und Text, die von Software-Programmen generiert werden, die auf dem Personal Computer ausgeführt werden, und die im allgemeinen während des POST-Tests und anderen Aspekten beim Laden/Ausführen von Firmware angezeigt werden können. Eine Maus 220 (oder eine andere Zeigeeinrichtung) ist an einen seriellen Anschluss (oder an einen Busanschluss) an der Rückseite des Prozessorgehäuses 202 angeschlossen, und Signale von der Maus 220 werden an die Hauptplatine 208 geleitet, um einen Cursor auf der Anzeige zu steuern und Text, Menüoptionen und Graphikkomponenten auszuwählen, die auf dem Bildschirm 218 durch Software-Programme angezeigt werden, die auf dem Personal Computer ausgeführt werden. Außerdem ist eine Tastatur 222 mit der Hauptplatine für Benutzereingaben von Text und Befehlen gekoppelt, die sich auf den Lauf von Software-Programmen auswirken, die auf dem Personal Computer ausgeführt werden.
  • Der Personal Computer 200 umfasst optional auch ein Laufwerk 224 für einen Compact-Disk-Speicher ohne Schreibmöglichkeit (CD-ROM), in das eine CD-ROM-Diskette eingelegt werden kann, so dass ablauffähige Dateien und Daten auf der Diskette für den Transfer in den Speicher und/oder in die Speichereinrichtung auf der Festplatte 206 des Personal Computers 200 gelesen werden können. Wenn die grundlegende BIOS-Firmware auf einer überschreibbaren Einrichtung gespeichert ist, wie beispielsweise einem Flash-Speicher, können Maschinenbefehle zum Aktualisieren des Basisteils der BIOS-Firmware auf einer CD-ROM-Diskette oder einer Diskette gespeichert und vom Prozessor des Computers gelesen und verarbeitet werden, um die auf dem Flash-Speicher gespeicherte BIOS-Firmware neu zu schreiben. Aktualisierbare BIOS-Firmware kann auch über das Netzwerk 214 geladen werden.
  • Dem Computer 200 ähnliche Maschinen können für die verschiedenen Server in dem System verwendet werden. Allerdings ist es vorzuziehen, daß Maschinen, die speziell für Web-, Datei- und Anwendungs-Serverfunktionen ausgelegt sind, als solche implementiert werden.
  • Vom Standpunkt von Hardware- und Software-Komponenten aus, die auf dem Computersystem betrieben werden, sind solche Komponenten im allgemeinen nicht in der Lage, zwischen den jeweiligen Teilen der BIOS-Firmware zu unterscheiden, die auf lokalen und entfernten Speichereinrichtungen gespeichert sind. Abgesehen vom Laden und der Anwendung der BIOS-Firmware beim Hochfahren zum Testen der Systemintegrität und zum Ermitteln/Überprüfen der Systemkonfiguration und anderen, dem Betriebssystem vorgeschalteten Boot-Prozessen arbeitet ein Computersystem, das die Erfindung implementiert, in einer Weise, die mit derjenigen eines herkömmlichen Computersystems identisch ist, das die gleichen Komponenten verwendet und die gleiche Software ausführt.

Claims (18)

  1. Verfahren zum elementaren Aktualisieren einer Vielzahl von vorhandenen Plattform-Firmware-Dateien in einem dauerhaften Firmware-Speicher, wobei wenigstens ein Teil von vorhandenen Plattform Firmwaredaten Kopfdaten beinhalten, die angeben, ob die vorhandenen Plattform-Firmware-Daten gültig und aktualisiert sind, gekennzeichnet durch die Schritte: Erstellen einer Fülldatei; Modifizieren von Kopfdaten der vorhandenen Plattform-Firmware-Datendaten um anzugeben, dass die vorhandenen Plattform-Firmware-Daten gültig sind und zu aktualisieren sind; Schreiben von aktualisierten Plattform-Firmware-Daten-Dateien in die Fülldatei in dem dauerhaften Firmware-Speicher, so dass der dauerhafte Firmware-Speicher sowohl die vorhandenen Plattform Firmware-Daten als auch die aktualisierten Firmware-Daten aufweist, wobei die aktualisierten Firmware-Daten-Dateien Kopfdaten beinhalten, die angeben, dass die aktualisierten Plattform-Firmware-Daten nicht gültig und nicht zu aktualisieren sind; und Ausführen einer elementaren Operation zum Modifizieren der Kopfdaten der Plattform-Firmware-Dateien, um anzugeben, daß die aktualisierten Plattform-Firmware-Dateien anstelle der vorhandenen Plattform-Firmware-Dateien verwendet werden sollen.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet dass jede Plattform-Firmware-Datei einen Dateikopf und einen Datenbereich umfasst, in den Plattform-Firmware-Daten, die dieser Datei entsprechen, geschrieben werden, und wobei jeder Dateikopf eine Vielzahl von Status-Bits enthält, die zum Verfolgen eines aktuellen Status jeder Plattform-Firmware-Datei während des Aktualisierungsprozesses verwendet werden.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die Fülldatei erstellt wird, indem ein Dateikopf erstellt wird, der die Fülldatei kennzeichnet, die einen Datenbereich aufweist, der so groß ist, daß er alle der aktualisierten Plattform-Firmware-Dateien aufnehmen kann, wobei der Datenbereich einem Speicherbereich auf einer Firmware-Speichereinrichtung zugeordnet ist, die zum Speichern der vorhandenen und der aktualisierten Plattform-Firmware-Dateien verwendet wird.
  4. Verfahren nach Anspruch 3, gekennzeichnet durch das Verändern eines Status-Bits im Dateikopf der Fülldatei, um anzugeben, dass die Fülldatei ungültig ist, nachdem Daten, die den aktualisierten Plattform-Firmware-Dateien entsprechen, in den Datenbereich der Fülldatei geschrieben wurden.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass ein Dateisystem verwendet wird, um auf die Plattform-Firmware-Dateien zuzugreifen, und die aktualisierten Firmware-Dateien für das Dateisystem vor dem Zeitpunkt unsichtbar erscheinen, an dem das Status-Bit geändert wird, und für das Dateisystem sichtbar werden, nachdem das Status-Bit geändert ist.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass jede vorhandene Plattform-Firmware-Datei eine Bezeichnung aufweist, die gemeinsam mit einer entsprechenden aktualisierten Plattform-Firmware-Datei benutzt wird, des Weiteren umfassend: das Verändern der Status-Bits in jeder der vorhandenen Plattform-Firmware-Dateien, um anzugeben, daß sie zu aktualisieren sind; das Einstellen der Status-Bits in jeder der aktualisierten Plattform-Firmware-Dateien, um anzugeben, daß sie gültig sind, wobei, nachdem sie für das Dateisystem sichtbar geworden sind, die Status-Bits in den Dateiköpfen der aktualisierten Plattform-Dateien in Kombination mit den Status-Bits in den vorhandenen Plattform-Firmware-Dateien das Dateisystem gleichzeitig informieren, daß die ursprünglichen Plattform-Dateien ungültig und die aktualisierten Plattform-Dateien gültig sind.
  7. Verfahren nach Anspruch 1, gekennzeichnet durch das Ausführen einer Integritätsprüfung der aktualisierten Plattform-Firmware-Dateien, um sicherzustellen, daß die aktualisierten Firmware-Dateien gültig sind, bevor eine elementare Veränderung der Konfigurationsinformationen der Plattform-Firmware-Datei vorgenommen wird, um anzugeben, daß die aktualisierten Plattform-Firmware-Dateien anstelle der vorhandenen Plattform-Firmware zu verwenden sind.
  8. Verfahren nach Anspruch 1, gekennzeichnet durch das Aktivieren einer vollständigen Wiederherstellung der vorhandenen Plattform-Firmware-Dateien, die während des Aktualisierungsprozesses aktualisiert werden sollen, als Reaktion auf eine Systemunregelmäßigkeit, die eine Beendigung des Aktualisierungsprozesses verhindert.
  9. Verfahren nach Anspruch 2, gekennzeichnet durch das Einstellen der Status-Bits in jedem Dateikopf der vorhandenen Plattform-Firmware-Dateien, um anzugeben, daß die Datei gelöscht wird, nachdem der Aktualisierungsprozeß abgeschlossen ist.
  10. Maschinenlesbares Medium, auf dem eine Vielzahl von maschinenausführbaren Anweisungen gespeichert ist, die eine Vielzahl von in einem dauerhaften Firmware-Speicher vorhandenen Plattform-Firmware-Dateien aktualisieren, indem die folgenden Operationen ausgeführt werden: Erstellen einer Fülldatei; Verändern der Kopfdaten einer jeden existierenden Plattform-Firmware-Datei, um anzugeben, dass die existierende Plattform-Firmware-Dateien gültig und zu aktualisieren ist; Schreiben von Daten, die einer Vielzahl von aktualisierten Plattform-Firmware-Dateien entsprechen, die neue Versionen der Vielzahl der vorhandenen Plattform-Firmware-Dateien umfassen, in die Fülldatei, so dass der dauerhafte Firmware-Speicher sowohl die Mehrzahl der existierenden Plattform-Firmware-Dateien als auch die Mehrzahl von aktualisierten Plattform-Firmware-Dateien aufweist, wobei jede aus der Mehrzahl von aktualisierten Plattform-Firmware-Dateien Kopfdaten aufweist, die anzeigen, dass die aktualisierte Plattform-Firmware-Dateien gültig und nicht zu aktualisieren sind; Ausführen einer elementaren Operation zum Modifizieren der Kopfdaten der Fülldatei, um anzuzeigen, dass die Fülldatei nicht gültig ist, wodurch angezeigt wird, dass die aktualisierten Plattform-Firmware-Dateien, die in den Datenbereich der temporären Datei geschrieben werden, zu laden und anstelle der vorhandenen Plattform-Firmware-Dateien auszuführen sind.
  11. Maschinenlesbares Medium nach Anspruch 10, dadurch gekennzeichnet, dass jede Plattform-Firmware-Datei einen Dateikopf und einen Datenbereich umfasst, in den Plattform-Firmware-Daten, die dieser Datei entsprechen, geschrieben werden, und wobei jeder Dateikopf eine Vielzahl von Status-Bits enthält, die zum Verfolgen eines aktuellen Status jeder Plattform-Firmware-Datei während des Aktualisierungsprozesses verwendet werden.
  12. Maschinenlesbares Medium nach Anspruch 11, dadurch gekennzeichnet, dass die Fülldatei erstellt wird, indem ein Dateikopf erstellt wird, der die Fülldatei kennzeichnet, die einen Datenbereich aufweist, der so groß ist, daß er alle der aktualisierten Plattform-Firmware-Dateien aufnehmen kann, wobei der Datenbereich einem Speicherbereich auf einer Firmware-Speichereinrichtung zugeordnet ist, die zum Speichern der vorhandenen und der aktualisierten Plattform-Firmware-Dateien verwendet wird.
  13. Maschinenlesbares Medium nach Anspruch 12, dadurch gekennzeichnet, dass das Ausführen der Vielzahl von Maschinenbefehlen des weiteren den Arbeitsablauf der Veränderung eines Status-Bits in dem Dateikopf der Fülldatei ausführt, um anzugeben, daß die Fülldatei ungültig ist, nachdem Daten, die den aktualisierten Plattform-Firmware-Dateien entsprechen, in den Datenbereich der Fülldatei geschrieben worden sind.
  14. Maschinenlesbares Medium nach Anspruch 13, dadurch gekennzeichnet, dass ein Dateisystem verwendet wird, um auf die Plattform-Firmware-Dateien zuzugreifen, und die aktualisierten Firmware-Dateien für das Dateisystem vor dem Zeitpunkt unsichtbar erscheinen, an dem das Status-Bit geändert wird, und für das Dateisystem sichtbar werden, nachdem das Status-Bit geändert ist.
  15. Maschinenlesbares Medium nach Anspruch 14, dadurch gekennzeichnet, dass jede vorhandene Plattform-Firmware-Datei eine Bezeichnung aufweist, die gemeinsam mit einer entsprechenden aktualisierten Plattform-Firmware-Datei benutzt wird, und wobei das Ausführen der Vielzahl von Maschinenbefehlen des weiteren die folgenden Arbeitsabläufe ausführt: das Verändern der Status-Bits in jeder der vorhandenen Plattform-Firmware-Dateien, um anzugeben, daß sie zu aktualisieren sind; und das Einstellen der Status-Bits in jeder der aktualisierten Plattform-Firmware-Dateien, um anzugeben, daß sie gültig sind, wobei, nachdem sie für das Dateisystem sichtbar geworden sind, die Status-Bits in den Dateiköpfen der aktualisierten Plattform-Dateien in Kombination mit den Status-Bits in den vorhandenen Plattform-Firmware-Dateien das Dateisystem gleichzeitig informieren, daß die vorhandenen Plattform-Dateien ungültig und die aktualisierten Plattform-Dateien gültig sind.
  16. Maschinenlesbares Medium nach Anspruch 10, dadurch gekennzeichnet, dass das Ausführen der Vielzahl von Maschinenbefehlen des weiteren den Arbeitsablauf des Ausführens einer Integritätsprüfung der aktualisierten Plattform-Firmware-Dateien ausführt, um sicherzustellen, daß die aktualisierten Firmware-Dateien gültig sind, bevor eine elementare Veränderung der Konfigurationsinformationen der Plattform-Firmware-Datei vorgenommen wird, um anzugeben, daß die aktualisierten Plattform-Firmware-Dateien anstelle der vorhandenen Plattform-Firmware zu verwenden sind.
  17. Maschinenlesbares Medium nach Anspruch 10, dadurch gekennzeichnet, dass das Ausführen der Vielzahl von Maschinenbefehlen des weiteren den Arbeitsablauf des Aktivieren einer vollständigen Wiederherstellung der vorhandenen Plattform-Firmware-Dateien, die während des Aktualisierungsprozesses aktualisiert werden sollen, als Reaktion auf eine Systemunregelmäßigkeit ausführt, die eine Beendigung des Aktualisierungsprozesses verhindert.
  18. Maschinenlesbares Medium nach Anspruch 11, dadurch gekennzeichnet, dass das Ausführen der Vielzahl von Maschinenbefehlen des weiteren das Einstellen der Status-Bits in jedem Dateikopf der vorhandenen Plattform-Firmware-Datei ausführt, um anzugeben, dass die Datei gelöscht ist, nachdem der Aktualisierungsprozess abgeschlossen ist.
DE10297281T 2001-09-28 2002-09-27 Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien Expired - Fee Related DE10297281B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/967093 2001-09-28
US09/967,093 US7299463B2 (en) 2001-09-28 2001-09-28 Method for atomically updating a plurality of files
PCT/US2002/030883 WO2003029970A2 (en) 2001-09-28 2002-09-27 Method for atomically updating a plurality of files

Publications (2)

Publication Number Publication Date
DE10297281T5 DE10297281T5 (de) 2004-09-16
DE10297281B4 true DE10297281B4 (de) 2012-02-02

Family

ID=25512298

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297281T Expired - Fee Related DE10297281B4 (de) 2001-09-28 2002-09-27 Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien

Country Status (7)

Country Link
US (3) US7299463B2 (de)
CN (1) CN1273891C (de)
DE (1) DE10297281B4 (de)
GB (1) GB2396938B (de)
HK (1) HK1062726A1 (de)
TW (1) TW583586B (de)
WO (1) WO2003029970A2 (de)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7103641B2 (en) * 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US7299463B2 (en) * 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files
US7392371B2 (en) * 2001-12-20 2008-06-24 Zimmer Vincent J Method and apparatus for using a volume top file to boot firmware modules
US7260624B2 (en) * 2002-09-20 2007-08-21 American Megatrends, Inc. Systems and methods for establishing interaction between a local computer and a remote computer
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US8316361B2 (en) * 2003-01-09 2012-11-20 Hewlett-Packard Development Company, L.P. Method of enabling a user to update one or more low-level resources of a computer system in a user-friendly manner
US8255361B2 (en) * 2003-01-31 2012-08-28 Oracle America, Inc. Method and system for validating differential computer system update
US7418141B2 (en) * 2003-03-31 2008-08-26 American Megatrends, Inc. Method, apparatus, and computer-readable medium for identifying character coordinates
DE10323033A1 (de) * 2003-05-20 2004-12-23 Giesecke & Devrient Gmbh Laden eines ausführbaren Programms in einen tragbaren Datenträger
US7412625B2 (en) * 2003-05-27 2008-08-12 American Megatrends, Inc. Method and system for remote software debugging
US20050010811A1 (en) * 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US7546584B2 (en) * 2003-06-16 2009-06-09 American Megatrends, Inc. Method and system for remote software testing
US7543277B1 (en) * 2003-06-27 2009-06-02 American Megatrends, Inc. Method and system for remote software debugging
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7392420B2 (en) * 2003-09-29 2008-06-24 International Business Machines Corporation Automated error recovery of a licensed internal code update on a storage controller
JP4606009B2 (ja) * 2003-10-20 2011-01-05 三洋電機株式会社 プログラム処理装置
US7478101B1 (en) * 2003-12-23 2009-01-13 Networks Appliance, Inc. System-independent data format in a mirrored storage system environment and method for using the same
US7827258B1 (en) 2004-03-01 2010-11-02 American Megatrends, Inc. Method, system, and apparatus for communicating with a computer management device
US7966293B1 (en) * 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7519749B1 (en) 2004-08-25 2009-04-14 American Megatrends, Inc. Redirecting input and output for multiple computers
KR100698655B1 (ko) * 2005-01-04 2007-03-23 주식회사 팬택앤큐리텔 이동통신 단말기의 파일 업데이트 시스템과, efs 영역헤더 손실로 인한 치명적인 에러를 방지하는 이동통신단말기의 부팅 관리 시스템과, 이동통신 단말기의 파일업데이트 방법 및 efs 영역 헤더 손실로 인한 치명적인에러를 방지하는 이동통신 단말기의 부팅 방법
KR100683853B1 (ko) * 2005-02-04 2007-02-16 삼성전기주식회사 프리 컴파일링 장치
US8402109B2 (en) 2005-02-15 2013-03-19 Gytheion Networks Llc Wireless router remote firmware upgrade
US7904518B2 (en) 2005-02-15 2011-03-08 Gytheion Networks Llc Apparatus and method for analyzing and filtering email and for providing web related services
US7426633B2 (en) * 2005-05-12 2008-09-16 Hewlett-Packard Development Company, L.P. System and method for reflashing disk drive firmware
US20060271885A1 (en) * 2005-05-25 2006-11-30 Montana State University Automatic database entry and data format modification
US7934256B2 (en) * 2005-06-01 2011-04-26 Panasonic Corporation Electronic device, update server device, key update device
US7907531B2 (en) * 2005-06-13 2011-03-15 Qualcomm Incorporated Apparatus and methods for managing firmware verification on a wireless device
US20070061813A1 (en) * 2005-08-30 2007-03-15 Mcdata Corporation Distributed embedded software for a switch
CN1801679B (zh) * 2005-10-11 2010-08-04 华为技术有限公司 一种移动广播业务分发方法和系统
US20070169076A1 (en) * 2005-10-28 2007-07-19 Desselle Bernard D Methods and systems for updating a BIOS image
US8010843B2 (en) 2005-12-14 2011-08-30 American Megatrends, Inc. System and method for debugging a target computer using SMBus
CN100454252C (zh) * 2006-01-01 2009-01-21 中兴通讯股份有限公司 一种cpu程序下载多个fpga文件的方法
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
TWI319859B (en) * 2006-06-12 2010-01-21 Method for updating bios and apparatus thereof
US7590835B1 (en) 2006-06-30 2009-09-15 American Megatrends, Inc. Dynamically updating a computer system firmware image
US9395968B1 (en) 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
US7797696B1 (en) 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8688933B2 (en) * 2006-08-31 2014-04-01 Hewlett-Packard Development Company, L.P. Firmware component modification
US7783799B1 (en) 2006-08-31 2010-08-24 American Megatrends, Inc. Remotely controllable switch and testing methods using same
US8868495B2 (en) 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US8161149B2 (en) 2007-03-07 2012-04-17 International Business Machines Corporation Pseudo-agent
US8495157B2 (en) 2007-03-07 2013-07-23 International Business Machines Corporation Method and apparatus for distributed policy-based management and computed relevance messaging with remote attributes
US20100332640A1 (en) * 2007-03-07 2010-12-30 Dennis Sidney Goodrow Method and apparatus for unified view
ES2425577T3 (es) * 2007-03-09 2013-10-16 Otis Elevator Company Procedimiento en un sistema de transporte de personas para realizar una transferencia de datos y dispositivo y medio legible por ordenador correspondientes
KR100891390B1 (ko) * 2007-03-15 2009-04-02 주식회사 하이닉스반도체 마이크로 컨트롤러 및 업데이트 방법
US20090083725A1 (en) * 2007-09-20 2009-03-26 Zhenghong Wang Firmware upgrading method for an interface card
TWI410868B (zh) * 2007-12-31 2013-10-01 Quanta Comp Inc 韌體更新系統及方法
US8291382B2 (en) * 2008-07-22 2012-10-16 International Business Machines Corporation Maintenance assessment management
DE102008041360A1 (de) * 2008-08-20 2010-02-25 Robert Bosch Gmbh Steuergerät für ein Fahrzeug und Verfahren für eine Datenaktualisierung für ein Steuergerät für ein Fahrzeug
CN101339597B (zh) * 2008-08-28 2011-10-05 飞天诚信科技股份有限公司 一种升级读写器固件的方法、系统和设备
US8136108B2 (en) * 2008-09-03 2012-03-13 Computime, Ltd Updating firmware with multiple processors
TW201011640A (en) * 2008-09-10 2010-03-16 Asustek Comp Inc Data processing systems and methods for loading data within a non volatile memory into a memory
US9996572B2 (en) 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8255373B2 (en) * 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US8510352B2 (en) 2008-10-24 2013-08-13 Microsoft Corporation Virtualized boot block with discovery volume
US20100180027A1 (en) * 2009-01-10 2010-07-15 Barracuda Networks, Inc Controlling transmission of unauthorized unobservable content in email using policy
US8417969B2 (en) * 2009-02-19 2013-04-09 Microsoft Corporation Storage volume protection supporting legacy systems
US8073886B2 (en) * 2009-02-20 2011-12-06 Microsoft Corporation Non-privileged access to data independent of filesystem implementation
CN101925135B (zh) * 2009-06-09 2013-01-23 上海摩波彼克半导体有限公司 第三代移动通信终端rrc层对信令消息事务标识管理的方法
US8966110B2 (en) * 2009-09-14 2015-02-24 International Business Machines Corporation Dynamic bandwidth throttling
US9098730B2 (en) * 2010-01-28 2015-08-04 Bdo Usa, Llp System and method for preserving electronically stored information
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
CN101924607B (zh) * 2010-08-27 2013-01-23 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及系统
US8595716B2 (en) * 2011-04-06 2013-11-26 Robert Bosch Gmbh Failsafe firmware updates
US8683457B1 (en) 2011-06-17 2014-03-25 Western Digital Technologies, Inc. Updating firmware of an electronic device by storing a version identifier in a separate header
US9411748B2 (en) 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
WO2013095387A1 (en) 2011-12-20 2013-06-27 Intel Corporation Secure replay protected storage
US9170827B2 (en) * 2012-01-31 2015-10-27 Hewlett-Packard Development Company, L.P. Configuration file compatibility
TWI462017B (zh) * 2012-02-24 2014-11-21 Wistron Corp 伺服器部署系統及資料更新的方法
JP5939896B2 (ja) * 2012-06-12 2016-06-22 キヤノン株式会社 画像形成装置
US8972973B2 (en) * 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
CN103677884B (zh) * 2012-09-21 2017-05-31 华为技术有限公司 flash分区表文件生成及其数据升级方法、装置
WO2014158128A1 (en) * 2013-03-25 2014-10-02 Hewlett-Packard Development Company, L.P. Extensible firmware abstraction
US9116774B2 (en) * 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
CN103309709B (zh) * 2013-06-08 2018-10-09 华为终端有限公司 一种固件升级方法、装置及通信设备
CN105700898A (zh) * 2014-11-25 2016-06-22 中兴通讯股份有限公司 一种升级文件制作方法及装置和升级文件获取方法及装置
WO2016168475A1 (en) * 2015-04-14 2016-10-20 Capital One Services, Llc Systems and methods for secure firmware validation
DE102015119802A1 (de) * 2015-11-16 2017-05-18 Weidmüller Interface GmbH & Co. KG Verfahren zum Laden eines sicheren Speicherabbilds eines Mikrocontrollers und Anordnung mit einem Mikrocontroller
CN105956035A (zh) * 2016-04-25 2016-09-21 乐视控股(北京)有限公司 一种文件存储方法及装置
US9648137B1 (en) * 2016-09-23 2017-05-09 International Business Machines Corporation Upgrading a descriptor engine for a network interface card
CN106776105B (zh) * 2016-11-15 2020-02-21 惠州Tcl移动通信有限公司 一种系统启动文件的校验及编译方法
KR102123676B1 (ko) * 2016-12-06 2020-06-29 주식회사 엘지화학 주택용 ESS에 탑재되는 직류변압기(DC-DC converter)와 배터리관리시스템(BMS) 소프트웨어의 통합관리 및 업데이트 방법
TWI668635B (zh) * 2016-12-07 2019-08-11 英業達股份有限公司 主機板及其設定更新方法
US10606826B2 (en) * 2016-12-08 2020-03-31 International Business Machines Corporation Fixing anomalies in a preserved data structure used to generate a temporary data structure during system initialization
US10452638B2 (en) 2016-12-14 2019-10-22 International Business Machines Corporation Atomically moving data elements between or within linked data structures having no support for atomic moves
CN106843942B (zh) * 2016-12-31 2021-04-30 歌尔科技有限公司 穿戴式设备的固件升级方法及穿戴式设备
TWI616819B (zh) * 2017-02-06 2018-03-01 晨星半導體股份有限公司 用於電視的軟體更新方法及相關的電路
US10877992B2 (en) 2017-11-30 2020-12-29 International Business Machines Corporation Updating a database
US10642603B2 (en) 2018-01-16 2020-05-05 Nutanix, Inc. Scheduling upgrades in distributed computing systems
US10838754B2 (en) 2018-04-27 2020-11-17 Nutanix, Inc. Virtualized systems having hardware interface services for controlling hardware
US10452386B1 (en) * 2018-07-19 2019-10-22 American Megatrends International, Llc Non-destructive update of discrete components of firmware
US10936301B2 (en) * 2019-04-12 2021-03-02 Dell Products, L.P. System and method for modular patch based firmware update
CN111159120A (zh) * 2019-12-16 2020-05-15 西门子电力自动化有限公司 电力系统处理文件的方法、装置与系统
CN111399888B (zh) * 2020-03-11 2023-06-16 北京百度网讯科技有限公司 音频处理芯片的处理方法、装置及电子设备
JP2022108624A (ja) * 2021-01-13 2022-07-26 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
CN114416133B (zh) * 2021-12-30 2024-07-02 武汉卓目科技股份有限公司 一种嵌入式文件数据更新方法及系统
US20240231790A9 (en) * 2022-10-20 2024-07-11 Dell Products L.P. Seamless update provisioning for common chipsets carrying different cpu families

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088759A (en) * 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
EP1087294A2 (de) * 1999-09-27 2001-03-28 Nortel Networks Limited Verfahren und Gerät zur Fernaktualisierung der Firmware eines Kommunikationsgerät

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150473A (en) * 1990-01-16 1992-09-22 Dantz Development Corporation Data storage format for addressable or sequential memory media
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
GB2290890B (en) * 1994-06-29 1999-03-24 Mitsubishi Electric Corp Information processing system
US5568641A (en) 1995-01-18 1996-10-22 Hewlett-Packard Company Powerfail durable flash EEPROM upgrade
US5751282A (en) 1995-06-13 1998-05-12 Microsoft Corporation System and method for calling video on demand using an electronic programming guide
US5930504A (en) * 1996-07-22 1999-07-27 Intel Corporation Dynamic nonvolatile memory update in a computer system
US6282709B1 (en) * 1997-11-12 2001-08-28 Philips Electronics North America Corporation Software update manager
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6205548B1 (en) 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
TW436734B (en) * 1998-12-24 2001-05-28 Destiny Technology Corp Printer firmware updating method
US6678741B1 (en) * 1999-04-09 2004-01-13 Sun Microsystems, Inc. Method and apparatus for synchronizing firmware
US6718407B2 (en) * 1999-09-30 2004-04-06 Intel Corporation Multiplexer selecting one of input/output data from a low pin count interface and a program information to update a firmware device from a communication interface
US6536038B1 (en) * 1999-11-29 2003-03-18 Intel Corporation Dynamic update of non-upgradeable memory
US6889340B1 (en) * 2000-10-13 2005-05-03 Phoenix Technologies Ltd. Use of extra firmware flash ROM space as a diagnostic drive
US7299463B2 (en) * 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088759A (en) * 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
EP1087294A2 (de) * 1999-09-27 2001-03-28 Nortel Networks Limited Verfahren und Gerät zur Fernaktualisierung der Firmware eines Kommunikationsgerät

Also Published As

Publication number Publication date
CN1273891C (zh) 2006-09-06
DE10297281T5 (de) 2004-09-16
GB0407054D0 (en) 2004-04-28
GB2396938B (en) 2007-01-03
US20110307878A1 (en) 2011-12-15
US8839226B2 (en) 2014-09-16
US20070288914A1 (en) 2007-12-13
TW583586B (en) 2004-04-11
US20030066062A1 (en) 2003-04-03
HK1062726A1 (en) 2004-11-19
GB2396938A (en) 2004-07-07
WO2003029970A2 (en) 2003-04-10
WO2003029970A3 (en) 2004-03-18
US8028282B2 (en) 2011-09-27
US7299463B2 (en) 2007-11-20
CN1561483A (zh) 2005-01-05

Similar Documents

Publication Publication Date Title
DE10297281B4 (de) Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien
DE69521113T2 (de) Vorrichtung und Verfahren zur Stromversorgungsausfallbeständige Aktualisierung eines Flash-EEPROM-Speichers
DE69027165T2 (de) Verfahren und Gerät zum Schutz eines Rechnersystems
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE69616987T2 (de) Manipulierungsverfahren und -vorrichtung für plattenpartitionen
DE69904725T2 (de) Systemsicherung und wiederherstellung
DE69329590T2 (de) Periphere Festkörperspeichervorrichtung
DE69027167T2 (de) Rechnersystem mit Programmladegerät und Ladeverfahren
DE69032517T2 (de) Verfahren und System zum dynamischen Identifizieren von Datenträgern in einem Gestaltungsdateisystem
DE69223799T2 (de) Einstellung der systemkonfiguration in einem datenverarbeitungssystem
DE69031494T2 (de) Verfahren zum lesen und schreiben von dateien auf nichtlöschbaren speichermedien
DE60001976T2 (de) Verfahren und system zur datensicherung/wiederherstellung von an einer einzigen stelle gespeicherten dateien
DE112011104356B4 (de) Aktualisieren von Software-Images auf der Grundlage von Streaming-Technik
DE60210434T2 (de) Betriebssystemselektor und Datenplattenspeicher
DE69326917T2 (de) Drucker
DE69319383T2 (de) Verfahren und Gerät zum Urladen eines Rechners zu einer programmierten Zeit
DE69534867T2 (de) Verfahren und System zur Lieferung geschützter Gerätetreiber
DE102004049454B4 (de) Verfahren zur Benutzung von Featuremarkern zur Bestimmung der Kompatibilität zwischen Bios-Revisionen und installierter Hardware bei der Flash-Aktualisierung
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE112009000612T5 (de) Multi-Betriebssystem-Booteinrichtung (OS), Multi-OS-Boot-Programm, Aufzeichnungsmedium und Multi-OS-Bootverfahren
DE10393235T5 (de) Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt
DE102012201154B4 (de) Transaktionsspeicher
DE4026911A1 (de) Computersystem
DE102006006046A1 (de) Verwenden einer USB-Speichervorrichtung, um ein Betriebssystem wiederherzustellen
DE69820164T2 (de) Speichervorrichtung sowie Datenlese- und Schreibverfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10297281

Country of ref document: DE

Date of ref document: 20040916

Kind code of ref document: P

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20120503

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee