DE10393235T5 - Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt - Google Patents

Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt Download PDF

Info

Publication number
DE10393235T5
DE10393235T5 DE10393235T DE10393235T DE10393235T5 DE 10393235 T5 DE10393235 T5 DE 10393235T5 DE 10393235 T DE10393235 T DE 10393235T DE 10393235 T DE10393235 T DE 10393235T DE 10393235 T5 DE10393235 T5 DE 10393235T5
Authority
DE
Germany
Prior art keywords
processor
specific
firmware
firmware module
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE10393235T
Other languages
English (en)
Inventor
Todd Schelling
Amy Ann Arbor Santoni
Craig Windsor Valine
William Fort Collings Greene
Bassam Elkhoury
John Lovelace
David Costa Mesa O'Shea
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 DE10393235T5 publication Critical patent/DE10393235T5/de
Ceased legal-status Critical Current

Links

Classifications

    • 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/44536Selecting among different versions
    • G06F9/44542Retargetable
    • G06F9/44547Fat binaries
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation

Landscapes

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

Abstract

Verfahren, das folgendes umfaßt:
Bereitstellen eines generischen Firmware-Moduls, welches Befehle umfaßt, die durch mehrere unterschiedliche Prozessortypen ausführbar sind;
Bereitstellen eines oder mehrerer prozessorspezifischer Firmware-Module; und
Bereitstellen einer Firmware Interface Table, welche eine oder mehrere durchsuchbare Referenzen auf ein oder mehrere prozessorspezifische Firmware-Module umfaßt, wobei das generische Firmware-Modul die Fähigkeit besitzt, die Firmware Interface Table nach dem einen oder den mehreren prozessorspezifischen Firmware-Modulen zu durchsuchen.

Description

  • Gebiet
  • Mehrere Ausführungsformen der Erfindung betreffen allgemein Firmware-Architekturen. Insbesondere bezieht sich mindestens eine Ausführungsform der Erfindung auf Hochfahr- und/oder Wiederherstellungs-Firmware-Module für Prozessoren, die sicher aktualisiert werden können und mehrere unterschiedliche Prozessortypen unterstützen.
  • Moderne Computerarchitekturen umfassen oft prozessorspezifische Befehle als Teil einer Startup-Sequenz. Diese prozessorspezifischen Befehle werden oft für Hochfahr- und/oder Wiederherstellungsoperationen verwendet und können in einer Speichervorrichtung (z.B. Flash-Speichervorrichtungen, usw.) gespeichert werden.
  • Die Fähigkeit, die Hochfahr- und/oder Wiederherstellungssequenz, Komponenten, Code, Binaries, und/oder Daten zu aktualisieren, ermöglicht eine größere Flexibilität bei der Wiederverwendung dieser Binaries in unterschiedlichen Plattformen, beim Korrigieren von Fehlern oder Bugs bei bestehenden Komponenten oder Binaries, und/oder dem Hinzufügen neuer Merkmale zu bestehenden Hochfahr- und/oder Wiederherstellungssequenzen. Die Hochfahr- oder Wiederherstellungsfirmware ist oft als ein Image in einer Speichervorrichtung (z.B. Festwertspeicher, Flash-Speicher, usw.) gespeichert, von wo zur Verarbeitung auf sie zugegriffen wird.
  • Zum Beispiel partitioniert die gegenwärtige ItaniumTM-Architektur von Intel Corp. ihre Hochfahr- und Wiederherstellungsfirmware (d. h. Binaries, Daten, Code, usw.) in verschiedene getrennte logische Komponenten, Schichten oder Dienste. Beispielsweise stellen die Komponenten der "Processor Abstraction Layer" (PAL) Dienste bereit, die direkt mit dem Prozessor verbunden sind und isoliert den Rest der Firmware von jeglichen prozessorspezifischen Anforderungen. Die "System Abstraction Layer" (SAL) stellt die Dienste bereit, die zum Konfigurieren des jeweiligen Chipsatzes und aller anderen plattformspezifischen Funktionen notwendig sind. Die Schichten können in Komponenten des Typs "A" und des Typs "B" unterteilt werden. Im Allgemeinen stellen Komponenten des Typs "A" (z.B. PALA und SALA) typischerweise einen Mindestsatz von Operationen bereit, die für die Wiederherstellungsoperation erforderlich sind, und die Komponenten des Typs "B" (z.B. PALB und SALB) erweitern typischerweise die Operationen der Komponenten des Typs "A", um eine vollständige Hochfahr-Unterstützung bereitzustellen.
  • Typischerweise sind PAL-Komponenten für jeden Prozessor spezifisch. Daher kann jeder Prozessortyp eine unterschiedliche PALA/PALB-Kombination erfordern.
  • Ein ItaniumTM-Prozessor wird ohne die PAL-Firmware nicht funktionieren. Zusätzlich umfaßt die PAL tatsächlich den Reset-Vektor (sowie andere Hardware-Vektoren), welcher für das Hochfahren- und/oder Wiederherstellen verwendet wird. Aus diesen Gründen befindet sich die PAL an einer festen Adresse. 1 ist ein Blockdiagramm, das eine Ausführung einer Hochfahr- oder Neustartsequenz nach dem bisherigen Stand der Technik veranschaulicht. Ein Computer, System oder Prozessor ist typischerweise konfiguriert, um durch Zugreifen auf einen festen Vektorplatz (z.B. Reset-Vektor) 102, der auf die Startadresse für die Hochfahr- oder Neustartprozedur zeigt, zu starten. In der veranschaulichten PAL/SAL-Architektur wird ein einzelner fester Pointer (106) in die SAL-Komponente für die PAL bereitgestellt, der einen feststellbaren Eingangspunkt für SAL-Dienste bereitstellt. Die PAL wird als ein Ergebnis des Prozessor-Resets ausgeführt. Sobald die PALA kritische prozessorbezogene Ressourcen (einschließlich PALB) überprüft und validiert hat, geht die Steuerung an die SALA über (beim Pointer 106). Die SALA (108) führt dann ihren eigenen Satz von Systemressourcen- und Systemfirmwarevalidierungen durch. Der Aufruf der nachfolgenden Komponenten oder Dienste (110) wird durchgeführt, wie für das Hochfahren oder Wiederherstellen des Systems notwendig.
  • Da Merkmale zu den Hochfahr- und/oder Wiederherstellungsprozeduren hinzugefügt werden oder Bugs darin entdeckt werden, ist es oft wünschenswert, die PAL- und/oder SAL-Komponenten zu verbessern, um diese neuen Merkmale, Dienste und/oder Korrekturen einzubeziehen. Dies kann durch Neuflashen des/der Speicher- oder Speicherungsplatzes/Speicherungsplätze oder Blöcke, wo die PAL- und/oder SAL-Komponenten gespeichert sind, ausgeführt werden. Das heißt, daß die betroffenen PAL und/oder SAL-Komponenten in der Firmware aktualisiert und/oder durch unterschiedliche Komponenten ersetzt werden.
  • Eine Nebenerscheinung einer/eines einzelnen festen Adresse oder Platzes für den Reset-Vektor (z.B. 102) und den SAL-Eingangspunkt (z.B. 106) ist indes, daß irgendeine) unerwartetes) Ereignis oder Unterbrechung (z.B. ein Stromausfall, usw.) bei der Aktualisierung der PAL und/oder SAL das Potential hat, das System unbrauchbar zu machen. Die Unterbrechung kann irgendein Ereignis sein, das während einer Firmware-Aktualisierung auftritt, das es nicht ermöglicht, die Aktualisierung vollständig abzuschließen und somit das Potential hat, das System vollständig oder teilweise unbrauchbar oder fehlerhaft zu machen. Wenn zum Beispiel während dem Prozeß des Neuflashens eine Unterbrechung eintritt, können der Reset-Vektor oder andere feste Adreß-PAL- und/oder SAL-Komponenten fehlerhaft werden und den Prozessor unbrauchbar machen.
  • Es bestehen einige plattformbasierte Lösungen, die fehlerstabile PAL-Aktualisierungen ermöglichen aber diese erfordern erhebliche zusätzliche Bill-of-Materials-Kosten (BOM) zum Unterstützen der redundanten Flash-Komponenten oder erfordern erhebliche Chipsatz-Veränderungen zum Bereitstellen von Adreß-Aliasing.
  • Es kann ebenfalls gesehen werden, daß, wenn die PAL prozessorspezifisch ist und an einer festen Adresse lokalisiert werden muß, ein gegebenes Firmware-Image nur einen einzigen Prozessortyp gleichzeitig unterstützen kann. Das Umschalten zwischen Prozessortypen würde das Aktualisieren (z.B. Neuflashen) des festen PAL-Bereichs mit einer PAL erfordern, die den neuen Prozessor unterstützt. Dieses Aktualisieren von PAL-Komponenten mit festen Plätzen hat das Potential, eine erhebliche Ausfallzeit, einen Totalausfall oder eine Fehlerhaftigkeit zu ergeben, wenn die Aktualisierung der PAL-Firmware unterbrochen, aufgrund eines unerwarteten Ereignisses angehalten oder wenn während der Aktualisierung die falsche PAL-Firmware verwendet wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Flußdiagramm, das eine Ausführungsform eines herkömmlichen Start- oder Neustartprozesses veranschaulicht.
  • 2 ist ein Blockdiagramm, das veranschaulicht, wie ein Firmware-Image gemäß einer Ausführung der Erfindung in mehrere Firmware-Komponenten partitioniert und/oder neu angeordnet werden kann.
  • 3 ist ein Flußdiagramm, das einen Start- oder Neustartprozeß gemäß einer Ausführung der Erfindung veranschaulicht.
  • 4 ist eine Tabelle, die einige der Attribute der in 3 beschriebenen PAL- und SAL-Komponenten gemäß einer Ausführung der Erfindung veranschaulicht.
  • 5 ist ein Flußdiagramm, das ein Verfahren zum Aktualisieren von prozessorspezifischen Komponenten gemäß einer Ausführungsform der Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • In der nachfolgenden detaillierten Beschreibung mehrerer Ausführungsformen der Erfindung werden zahlreiche spezifische Details dargelegt, um ein eingehendes Verständnis von mehreren Aspekten von einer oder mehreren Ausführungsformen der Erfindung bereitzustellen. Eine oder mehrere Ausführungsformen der Erfindung können indes ohne diese spezifischen Details ausgeführt werden. In anderen Fällen wurden gut bekannte Verfahren, Abläufe und/oder Komponenten nicht im Detail beschrieben, um Aspekte von Ausführungsformen der Erfindung nicht unnötig unverständlich zu machen.
  • In der nachfolgenden Beschreibung wird eine bestimmte Terminologie verwendet, um bestimmte Merkmale von einer oder mehreren Ausführungsformen der Erfindung zu beschreiben. Zum Beispiel umfaßt "Firmware" jede Art von eingebetteten Informationen, wie beispielsweise Daten, Steuer- und Konfigurationsinformationen, Befehle und Code. Der Begriff "PAL" wird allgemein zur Bezugnahme auf PALA- und PALB-Komponenten verwendet. In ähnlicher Weise wird der Begriff "SAL" allgemein zur Bezugnahme auf SALA- und SALB-Komponenten verwendet. Der Begriff "Komponente" umfaßt logisch und/oder physisch getrennte Module, Binaries, Daten, Code und/oder ausführbare Befehle. Der Ausdruck "Firmware-Image" umfaßt einen Block oder eine Gruppe von einer oder mehreren Komponenten. Die Begriffe "generisch" und "nichtspezifisch" werden austauschbar verwendet, um auf Komponenten Bezug zu nehmen, die durch mehr als einen Prozessortyp verwendet (z.B. ausgeführt) werden können. Der Begriff "spezifisch" (z.B. "prozessorspezifisch") wird verwendet, um auf diejenigen Komponenten Bezug zu nehmen, die für einen Prozessortyp besonders sind. Der Begriff "aktualisierbar" wird verwendet, um Bezug auf Firmware-Komponenten zu nehmen, die sicher ohne das Risiko eines Totalausfalls aktualisiert werden können.
  • Ein Aspekt einer Ausführungsform der Erfindung stellt ein Verfahren, System, und eine Vorrichtung zum Verbessern des Aktualisierens, Verbesserns und/oder Reparierens von eingebetteten Kernprozessen (d. h. Wiederherstellungs- und/oder Hochfahr-Firmware) bereit. In einer Ausführung der Erfindung sind die Wiederherstellungs- und/oder Hochfahr-Komponenten (z.B. Firmwarecode, Funktionen, usw.) logisch oder anders getrennt, um sichere, fehlerstabile Aktualisierungen von Teilen von Firmware-Komponenten, deren Änderung zwischen Prozessor- und Systemmodellen am wahrscheinlichsten ist, zu gewährleisten.
  • Ein anderer Aspekt einer Ausführungsform der Erfindung stellt ein Verfahren, System und eine Vorrichtung zum Unterstützen mehrerer Prozessortypen oder Modelle mit einem einzigen Firmware-Image bereit. In einer Ausführung der Erfindung werden eine oder mehrere Firmware Interface Tables (FIT) zum Unterstützen mehrerer Prozessortypen mit einem einzigen Firmware-Image verwendet. Allgemein ist eine FIT eine von mehreren möglichen Arten für nichtspezifische Firmware-Komponenten, prozessorspezifische Firmware-Komponenten zu suchen und/oder zu lokalisieren. Dieser Aspekt der Erfindung ist besonders nützlich für das Unterstützen von Systemen mit mehreren Prozessor-Typen/Steppings, Mischprozessoren (z.B. Prozessoren aus der gleichen Familie) und/oder fehlerstabilen Firmware-Aktualisierungen. Ein beispielhaftes FIT kann Namen oder Kennungen von einem oder mehreren Prozessoren und ihren jeweiligen Speicher- oder Speicherungsplatz (z.B. Pointer) umfassen.
  • 2 ist ein Blockdiagramm, das veranschaulicht, wie eine Ausführung der Erfindung ein System von mehreren Firmware-Komponenten 202 (z.B. Hochfahr- oder Neustart-Firmwarebefehle), welche ursprünglich durch spezifische Attribute (z.B. prozessorspezifische Firmwarebefehle) zusammen gruppiert sind, in Firmware-Komponenten mit nichtspezifischen Attributen 204 (z.B. nicht prozessorspezifische Funktionen) und Firmware-Komponenten mit aktualisierbaren und spezifischen Attributen 206 und 208 (z.B. prozessorspezifische Funktionen) partitioniert oder neu anordnet. Im Allgemeinen werden Firmware-Komponenten basierend auf solchen Kriterien wie Wahrscheinlichkeit der Notwendigkeit des Aktualisierens, Kritikalität der Komponente (z.B. Code) für das System, und/oder die gewöhnlichen Funktionen partitioniert, geteilt und/oder gruppiert.
  • Gemäß einem Aspekt einer Ausführungsform der Erfindung können Firmware-Module in eine generische Firmware-Komponente 204 und eine oder mehrere prozessorspezifische Firmware-Komponenten 206 und 208 aufgeteilt werden. Die generische Firmware-Komponente 204, z.B., diejenigen Komponenten, die nicht sicher aktualisiert werden können und/oder feste Adreßplätze haben, können Befehle, Funktionen und/oder Operationen umfassen, die einer Anzahl von unterschiedlichen Prozessortypen oder anderen elektronischen Vorrichtungen (z.B. Chipsatztypen) gemeinsam sind. Zusätzlich kann die generische Firmware-Komponente 204 einen strukturierten Discovery-Mechanismus verwenden. Dieser strukturierte Discovery-Mechanismus kann eine Intermediate-Search- oder Handoff-Funktion zu einem oder mehreren dynamisch aktualisierbaren, weniger generischen (z. B. prozessorspezifischeren) Modulen umfassen. In einer Ausführung der Erfindung kann diese Such- und Handoff-Funktion eine Tafel und/oder Befehle umfassen, um einen bestimmten Prozessor auf eine entsprechende prozessorspezifische Firmware-Komponente 206 oder 208 zu richten.
  • Eine solche Partitionierung zwischen generischen und spezifischen Firmware-Komponenten vermindert die Größe der kritischen und/oder nicht aktualisierbaren generischen Komponenten und ermöglicht dadurch eine größere Flexibilität beim Aktualisieren der prozessorspezifischen Komponenten während sie das Risiko eines Totalausfalls während den Aktualisierungen minimiert. Zusätzlich stellt der strukturierte Discovery-Mechanismus ebenfalls eine Möglichkeit zum Unterstützen von mehreren unterschiedlichen Prozessortypen mit einem einzigen Firmware-Image breit.
  • 3 ist ein Blockdiagramm eines Systemwiederherstellungs- und/oder Hochfahr-Firmware-Moduls, das veranschaulicht, wie ein Firmware-Modul gemäß ihrer Aktualisierungsanforderungen und Prozessor- und Plattformabhängigkeit in mehrere unterschiedliche Binaries geteilt werden kann. Obwohl dieses Beispiel beschreibt, wie die PAL- und SAL-Firmware-Komponenten, die typischerweise in der ItaniumTM-Architektur verwendet werden, gemäß der Erfindung partitioniert werden können, sollte klar sein, daß die Erfindung nicht auf diese Architektur beschränkt ist und in anderen Systemen und Architekturen verwendet werden kann.
  • Wenn ein System gestartet oder zurückgesetzt wird, springt sein Prozessor typischerweise zu einem Reset-Vektorplatz (z.B. einer Adresse) innerhalb des Firmware-Codes. Gemäß einer Ausführungsform der Erfindung, springt der Reset-Vektor zu einem PAL-Eingangspunkt 302. Vom Eingangspunkt wird zuerst auf nichtspezifische PAL-Komponenten zugegriffen 304. Die nichtspezifischen PAL-Komponenten sind nicht prozessorspezifisch und können eine Mindestmenge an Code umfassen, um die erforderlichen Prozessorinitialisierungsoperationen auszuführen. Zum Beispiel können diese Komponenten Problemumgehungen oder Korrekturen, Authentifizierungsalgorithmen und/oder Prozessoridentifikationsroutinen umfassen. Die nichtspezifische PAL-Komponente (die z.B. Befehle und/oder Daten umfaßt) kann durch verschiedene Prozessortypen ausgeführt werden.
  • In einer Ausführung der Erfindung kann die nichtspezifische PAL eine Komponente zum Suchen einer gültigen spezifischen PAL, die mit einem bestimmten Prozessortyp kompatibel ist, umfassen 306. Das heißt, die nichtspezifische PAL kann Code, Befehle und/oder Daten zum Identifizieren des gegenwärtigen Prozessors, der verwendet wird, umfassen und kann eine Tafel verwenden, um zu bestimmen, ob (eine) prozessorspezifische PAL-Komponente(n) für einen solchen Prozessor verfügbar ist/sind. In einer Ausführungsform der Erfindung kann eine Firmware Interface Table (FIT) verwendet werden, um nach dem Vorhandensein von spezifischen Komponenten für einen bestimmten Prozessortyp und seinen entsprechenden Platz zu suchen.
  • In einer Ausführung einer Ausführungsform der Erfindung hat eine FIT einen oder mehrere Einträge, die ein Typenfeld umfassen, das Komponenten (z.B. prozessorspezifische PAL-Komponenten) und ihre Eingangspunkte (z.B. Platz oder Adresse für jede Komponente) identifiziert. Diese Einträge umfassen Pointer, oder andere Verweise, auf mögliche Kandidaten für eine prozessorspezifische PAL-Komponente. In einer Ausführung kann ein FIT-Eintrag indes nicht den/die bestimmte(n) Prozessortyp oder Prozessorfamilie, dem/der der Eintrag entspricht, identifizieren. Daher parst ein Prozessor durch einen oder mehrere Einträge und ihre entsprechenden Komponenten, um zu bestimmen, ob die richtige prozessorspezifische Komponente (z.B. PAL) gefunden wurde. Zum Beispiel verwendet eine generische PAL den Eingangspunkt, um sicherzustellen, daß ein Eintrag eine authentische PAL (d.h. gültig, nicht fehlerhaft) ist und verwendet einige Informationen innerhalb der/des spezifischen PAL-Komponente oder Images, die/das diesem Eintrag entspricht, um den Prozessortyp, der zu ihr gehört, zu bestimmen. Wenn die gewünschte prozessorspezifische PAL nicht gefunden wird, wird der nächste Eintrag in der FIT gesucht und die entsprechende prozessorspezifische Komponente abgefragt oder gesucht bis die richtige Komponente gefunden wird oder keine Einträge mehr vorhanden sind. In anderen Ausführungen umfaßt die FIT ein Feld, das den Prozessortyp oder die Prozessorfamilie, dem oder der ein bestimmter Eintrag entspricht, identifiziert, wodurch die Notwendigkeit des Zugreifens auf jede prozessorspezifische Komponente zum Identifizieren derjenigen, die die richtige ist, vermieden wird.
  • Wenn eine entsprechende spezifische PAL-Komponente für den Prozessor gefunden wird, erfolgt ein Sprung auf diese spezifische PAL-Komponente 308. Prozessorspezifische PAL-Komponenten, auf die ebenfalls mit "spezifische PAL"-Komponenten Bezug genommen wird, können diese Funktionen, Befehle, Initialisierungsprozeduren und/oder andere Firmware-Komponenten, welche spezifisch für einen bestimmten Prozessortyp sind, umfassen 310.
  • Nachdem die prozessorspezifischen PAL-Komponenten ausgeführt wurden, kann mit einem zweiten Sprungvektorplatz fortgefahren werden 312. Der zweite Sprungvektor 312 leitet die Verarbeitung an SAL-Komponenten 314.
  • Wie die PAL-Komponenten, können die SAL-Komponenten in mehrere Komponenten gesplittet werden, die nicht plattformspezifische und plattformspezifische Komponenten oder Binaries bereitstellen. Erneut kann die plattformspezifische SAL 314 alle unterstützten Chipsatz- und Prozessortypen oder Steppings handhaben. Die nicht plattformspezifische SAL (z.B. eine generische Firmware-Komponente) kann einen Discovery-Mechanismus wie eine Firmware Interface Table (FIT) verwenden, um kompatible plattformspezifische SAL-Komponenten für eine bestimmte Prozessor- oder Systemkonfiguration zu suchen und zu erkennen, falls vorhanden 316.
  • Wenn eine kompatible plattformspezifische SAL-Komponente gefunden wird, wird ein Sprung auf die Startadresse für diese plattformspezifische SAL-Komponente gemacht 318. Die plattformspezifischen SAL-Dienste können dann ausgeführt werden 320. Nachdem die spezifische SAL-Komponente ausgeführt wurde, wird die Hochfahr- und/oder Wiederherstellungsprozedur mit ihrem regulären Pfad fortgeführt, indem alle übrigen Startup-Befehle und/oder Komponenten verarbeitet werden.
  • 4 ist eine Tabelle, die die Partitionierung und die Attribute der verschiedenen in 3 beschriebenen Firmware-Komponenten veranschaulicht.
  • Ein nichtspezifischer SAL-Pointer 402 würde typischerweise einen festen Speicherplatz und Inhalt haben, da das Aktualisieren oder Ändern seines Platzes einen Totalausfall riskiert. Der SAL-Pointer dient dazu, eine Startadresse für die nichtspezifische SAL bereitzustellen. Wenn eine Aktualisierung des nichtspezifischen SAL-Pointers fehlschlagen sollte, würde dies das Finden der SAL-Komponenten und/oder einen Zugriff darauf verhindern.
  • Eine generische, nichtspezifische PAL 404 umfaßt Codes, Initialisierungsroutinen und andere Komponenten, die allen unterstützten Prozessoren gemeinsam sind. In einer Ausführung, kann die Größe und Anzahl von Funktionen der nichtspezifischen PAL 404 minimiert werden, um eine größere Flexibilität beim Aktualisieren des Systems bereitzustellen. Insbesondere wird die Größe oder Funktion der nichtspezifischen oder generischen PAL 404 minimiert, um die Möglichkeiten zu vermindern, daß sie Fehler enthält oder Verbesserungen benötigt, und infolgedessen wird die Notwendigkeit, sie zu aktualisieren, verringert. Da die Startadresse der nichtspezifischen PAL 404 typischerweise durch den Reset-Vektor referenziert wird, kann es indes sein, daß ihre Adresse in einigen Ausführungen ein fester Platz sein muß. In einer anderen Ausführung, muß die nichtspezifische PAL 404 kein fester Platz sein. Zusätzlich, ist es, da das Aktualisieren der nichtspezifischen PAL einen Totalausfall riskiert, wenn es nicht erfolgreich abgeschlossen werden kann, allgemein riskant, ihren Inhalt zu aktualisieren.
  • Wie die nichtspezifische PAL 404, sollte die nichtspezifische SAL 406 einen festen Platz und einen festen Inhalt haben, da durch das Aktualisieren der nichtspezifischen SAL ein Totalausfall riskiert wird. Typischerweise, ist der nichtspezifische SAL-Pointer 402 nicht aktualisierbar und umfaßt eine feste Adresse zu einer nichtspezifischen SAL 406.
  • Der Firmware Interface Table (FIT) Eintragszeiger 408 stellt einen Pointer zur FIT bereit, so daß die nichtspezifischen Komponenten (z.B. 404 und 406) auf die spezifischen Komponenten zugreifen können. Der FIT-Eintragszeiger 408 hat typischerweise einen festen Speicherplatz und einen festen Inhalt (z.B. eine Speicherungs- oder Speicheradresse). Es ist riskant, den nichtspezifischen PAL-FIT-Eintragszeiger 408 zu aktualisieren, da damit ein Totalausfall riskiert wird, wenn die Aktualisierung fehlschlagen sollte. Da der FIT-Eintragszeiger 408 den Platz für die FIT bereitstellt, würde eine fehlgeschlagene Aktualisierung des FIT-Eintragszeigers verhindern, daß das System hochgefahren wird.
  • Allgemein umfaßt eine Firmware Interface Table (FIT) 410 Pointer zu prozessorspezifischen Komponenten. Zum Beispiel kann die FIT 410 eine Liste von Prozessortypen und die entsprechenden Plätze für ihre(n) entsprechenden Code oder Befehle bereitstellen. In einer Ausführung, ist der FIT-Eintragszeiger 408 an einem festen Platz gespeichert. Die FIT 410 ist nicht an einem festen Platz sondern befindet sich vielmehr an gleich welcher Adresse, die durch den FIT-Eintragszeiger 408 angegeben wird. Nachdem der FIT-Eintragszeiger 408 angegeben oder programmiert wurde, ist es indes riskant, diesen Wert zu ändern und daher wird der Platz der FIT 410 danach festgelegt. Der Inhalt der FIT kann indes immer noch sicher unter Verwendung verschiedener Systeme, von denen einige hierin beschrieben werden, aktualisiert. werden.
  • Eine oder mehrere spezifische PAL-Komponenten 412 und eine oder mehrere spezifische SAL-Komponenten 414 können mehrere unterschiedliche Prozessortypen unterstützen. Die spezifischen PAL-Komponenten 412 und/oder spezifischen SAL-Komponenten 414 müssen keinen festen Platz haben und ihr Inhalt kann aktualisiert werden wie gewünscht.
  • Wenn spezifische PAL- 412 und/oder spezifische SAL- 414 Komponenten aktualisiert werden, können mehrere Vorgehensweisen zum Beibehalten der Konsistenz mit der FIT verwendet werden. Zwei neue Vorgehensweisen zum Durchführen sicherer Aktualisierungen der spezifischen PAL- und/oder spezifischen SAL-Komponenten werden hierin zu Veranschaulichungszwecken beschrieben.
  • In einer ersten Ausführung der Erfindung, umfaßt die FIT feste Adreß- und Längenfelder für die spezifischen PAL-/SAL-Komponenten. Die Längenfelder können gepaddet sein, um eine Erweiterung zu berücksichtigen. In einer Ausführung der Erfindung können zusätzliche Dummy- und/oder nicht verwendete Einträge in der FIT vorhanden sein, um das Hinzufügen ganzer neuer Komponenten zu ermöglichen, ohne die Größe der FIT-Tafel verändern zu müssen. Das heißt, die nicht verwendeten Einträge können nachträglich verwendet werden, indem neue Komponenten in den festen Adressen oder Plätzen, die durch diesen vorher nicht verwendeten Eintrag referenziert wurden, angeordnet werden. Das Ersetzen oder Aktualisieren spezifischer Komponenten (z.B. prozessorspezifische PAL/SAL) erfordert lediglich das Einfügen der aktualisierten Komponente (z.B. Code) bei der festen Adresse, die für diese spezifische Komponente zugewiesen wurde, und das Beibehalten der Länge der Komponente innerhalb der festen Länge, die in der FIT festgelegt ist. In einer Ausführung wird eine vorherige Version einer prozessorspezifischen PAL-/SAL-Komponente beibehalten, bis die aktualisierte Version der Komponente authentifiziert wurde. Zum Beispiel kann die aktualisierte Version mit einem nicht verwendeten Eintrag in der FIT verbunden werden und in den entsprechenden Adreßraum, der durch diesen nicht verwendeten Eintrag referenziert wird, geladen werden. Nachdem die aktualisierte Komponente authentifiziert wurde, kann die vorherige Version beseitigt werden.
  • In einer zweiten Ausführung der Erfindung können redundante FITs verwendet werden. In dieser Vorgehensweise, werden zwei FITs beibehalten, zum Beispiel eine primäre FIT und eine sekundäre FIT. Wenn eine Komponente aktualisiert wird, wird die primäre FIT zuerst mit dem Platz, der Größe und/oder den Attributen der Komponente aktualisiert. Wenn die Aktualisierung der FIT fehlschlägt, ist die sekundäre FIT (Backup-FIT) vorhanden und kann verwendet werden, um die alten Plätze der Komponenten oder einen vollständig separaten redundanten Satz von Komponenten zu lokalisieren. Nachdem die primäre FIT-Aktualisierung erfolgreich abgeschlossen wurde, wird die sekundäre FIT aktualisiert, um die Kohärenz beizubehalten. In einer Ausführung, hat die FIT-Tafel eine Checksumme, die dabei hilft, zu identifizieren, ob eine FIT-Aktualisierung der primären FIT fehlgeschlagen ist. Wenn ein solcher Fehlschlag bestimmt wird, wird die sekundäre FIT anstatt der primären FIT verwendet. Die sekundäre FIT wird ebenfalls gesucht, wo eine bestimmte prozessorspezifische Komponente nicht in der primären FIT gefunden werden kann.
  • In einer Ausführung von redundanten FIT-Tafeln bestehen zwei FIT-Eintragszeiger, z.B. ein primärer FIT-Eintragszeiger und ein sekundärer FIT-Eintragszeiger, die beide auf eine FIT-Tafel, in dieser Reihenfolge, die primäre FIT und die sekundäre FIT, zeigen. Beim Startup wird ein Prozessor typischerweise den primären FIT-Eintragszeiger verwenden, um auf die primäre FIT zuzugreifen. Wenn indes beim Startup-Prozess ein Problem auftritt (z.B. ungültige primäre FIT, ungültige Header-Prüfung der primären FIT, usw.) wird statt dessen die sekundäre FIT aufgerufen. Wenn die sekundäre FIT aufgerufen wird, kann ein Code gesetzt werden, der der nachfolgenden SAL-Komponente anzeigt, daß ein Problem mit der primären FIT besteht. Die SAL-Komponente kann dann Fehler in der primären FIT korrigieren. Das Aktualisieren des primären FIT-Eintragszeigers ist indes immer noch riskant, da ein Programmierfehler oder eine Unterbrechung während der Aktualisierung des Eintragszeigers das Blockieren des Systems verursachen könnte. Während es in vorherigen Ausführungsformen der Erfindung riskant war, einen FIT-Eintragszeiger zu aktualisieren, können in dieser Ausführungsform der Erfindung sowohl ein FIT-Eintragszeiger (z.B. primärer FIT-Eintragszeiger) als auch die FIT (z.B. primäre FIT) sicher aktualisiert werden, da ein Backup-Zeiger und eine Tafel (z.B. sekundärer FIT-Eintragszeiger und sekundäre FIT) verwendet werden können, um Fehler, die beim Aktualisieren eines FIT-Eintragszeigers und/oder einer FIT auftreten können, zu korrigieren oder zu reparieren. Zum Beispiel kann eine Checksumme verwendet werden, um zu bestimmen, ob ein Eintragszeiger und/oder eine Tafel gültig sind.
  • In mehreren Ausführungen können prozessorspezifische Komponenten, wie beispielsweise 412 und 414, sicher ohne das Risiko eines Totalausfalls aktualisiert werden. Da die nichtspezifische(n) Komponente(n) einen Discovery-Mechanismus umfaßt/umfassen, durch den prozessorspezifische Komponenten (z. B. eine Firmware Interface Table) identifiziert werden, können mehr als eine Kopie von prozessorspezifischen Komponenten gespeichert werden (z.B. im Flash-Speicher). Dies stellt das Potential für redundante Kopien von jeder Komponente bereit. Aktualisierungen oder Änderungen der prozessorspezifischen Komponenten (z.B. spezifische PAL- oder SAL-Binaries) können nun jeweils auf einer einzelnen Komponentenkopie durchgeführt werden. Dies gewährleistet, daß jederzeit eine gültige prozessorspezifische Komponente verfügbar sein wird, und ermöglicht Aktualisierungen eines vorher nicht aktualisierbaren kritischen Bereichs des Firmwarecodes. In einer anderen Ausführung werden redundante Kopien des Firmware-Images, von denen jede eine oder mehrere prozessorspezifische Komponenten umfaßt, mit nur einer FIT-Tafel beibehalten. Zum Beispiel wird eine aktualisierte Komponente geladen und mit einem nicht verwendeten Eintrag in der FIT verbunden und, nachdem die Komponente authentifiziert wurde, wird die vorherige Version der Komponente beseitigt.
  • 5 ist ein Flußdiagramm, das ein Verfahren zum Aktualisieren prozessorspezifischer Komponenten gemäß einer Ausführungsform der Erfindung veranschaulicht. Während ein Eintrag in einer Firmware Interface Table (FIT) eine zweite Instanz oder Kopie von einer/einem prozessorspezifischen Komponente oder Binary referenziert, wird eine erste Instanz von der Komponente oder dem Binary wie gewünscht geändert, aktualisiert und/oder verändert 502. Die aktualisierte erste Instanz der prozessorspezifischen Komponente kann validiert werden, um sicherzustellen, daß keine Probleme aufgetreten sind (z.B. daß sie richtig aktualisiert wurde, daß das richtige Binary verwendet wurde, usw.) 504. In einer Ausführung kann die Firmware Interface Table (FIT) nach der Validierung aktualisiert werden, um die aktualisierte erste Instanz der prozessorspezifischen Komponente zu referenzieren 506. Dann kann die zweite Instanz der prozessorspezifischen Komponente aktualisiert 508 und validiert 510 werden.
  • Es sollte erwähnt werden, daß die nichtspezifischen Komponenten (z.B. solche Teile der PAL und/oder SAL) aus den gleichen Gründen wie vorhergehend erwähnt (z.B. Risiko eines Totalausfalls) immer noch nicht aktualisiert werden können aber die Größe und die Funktionen dieser Komponenten werden minimiert.
  • Folglich können Firmware-Architekturen, wie in den vorhergehend beschriebenen Beispielen und Ausführungsformen veranschaulicht, verändert, angeordnet oder konfiguriert werden, um sichere Aktualisierungen von Teilen von Firmware-Komponenten, deren Änderung zwischen Prozessor- oder Systemmodellen (z.B. prozessorspezifische Komponenten oder Binaries) am wahrscheinlichsten ist, zu ermöglichen und folglich Ausfallzeiten und/oder das Risiko eines Totalausfalls zu vermeiden, wenn die Aktualisierung unterbrochen wird, durch ein unerwartetes Ereignis angehalten wird oder die falsche Komponente oder das falsche Firmware-Image aktualisiert wird.
  • Zusätzlich ermöglichen die unterschiedlichen Aspekte der Ausführungsformen der beschriebenen Erfindung das Unterstützen mehrerer Prozessoren mit einem einzigen Firmware-Image. Zum Beispiel stellt ein Aspekt einer Ausführungsform der Erfindung eine Firmware-Architektur bereit, die mehrere Prozessortypen unterstützt, wohingegen ein herkömmliches Firmware-Image im Speicher (z.B. Flash-Speicher) nur jeweils einen Prozessortyp unterstützt. Da die nichtspezifische(n) Komponente(n) einen Discovery-Mechanismus zum Suchen der FIT für die spezifischen Komponenten umfaßt, können mehrere unterschiedliche Kopien dieser prozessorspezifischen Komponenten im gleichen Firmware-Image (z.B. in einem einer Flash-Speicher oder Speicherung) gespeichert werden. Dies ermöglicht das Unterstützen mehrerer Prozessortypen durch ein einzelnes Firmware-Image, was vorher mit herkömmlichen Firmware-Architekturen nicht möglich war. In dieser neuen Architektur, sucht die nichtspezifische Komponente (z.B. PAL oder SAL) die richtige prozessorspezifische Komponente (z.B. PAL oder SAL) basierend auf den im System gefundenen Prozessortypen. Dies ermöglicht ein Umschalten zwischen Prozessoren in einer viel benutzerfreundlicheren An als mit den herkömmlichen Firmware-Architekturen. Außerdem kann, wenn Hot-Add- oder Hot-Swap- Prozessortechnologie verfügbar wird, der neu hinzugefügte Prozessor durch die hierin beschriebene Firmware-Architektur unterstützt werden.
  • Die unterschiedlichen Aspekte von Ausführungsformen der vorhergehend beschriebenen Erfindung können ohne die Kosten des Unterstützens redundanter Flash-Vorrichtungen durchgeführt werden und erfordern keine Chipsatz-Veränderungen.
  • Obwohl bestimmte Ausführungsbeispiele in den begleitenden Zeichnungen beschrieben und gezeigt wurden, ist zu verstehen, daß solche Ausführungsformen lediglich veranschaulichend und nicht einschränkend für die weiten Aspekte von verschiedenen Ausführungsformen der Erfindung sind und daß diese Ausführungsformen nicht auf die spezifischen Konstruktionen und Anordnungen, die gezeigt und beschrieben wurden, beschränkt sind, da verschiedene andere Veränderungen möglich sind. Zum Beispiel ist das Konzept, obwohl die Offenbarung eine spezifische Anwendung für PAL- und SAL-Firmware-Komponenten beschreibt, nicht nur auf diese spezifischen Komponenten oder Softwarebeispiele beschränkt. Zusätzlich ist es möglich, die Ausführungsformen der Erfindung oder einige ihrer Merkmale in Hardware, programmierbaren Vorrichtungen, Firmware, Software oder einer Kombination davon auszuführen.
  • Zusammenfassung
  • Eine Ausführungsform der Erfindung stellt eine Firmware-Architektur zur Verfügung, die Firmware-Module aufspaltet, um ein sicheres Aktualisieren von spezifischen Modulen sowie eine Unterstützung einer Vielzahl unterschiedlicher Prozessoren zu unterstützen. Ein Firmware-Bild wird in mehrere unterschiedliche Binaries unterteilt, basierend auf ihren Aktualisierungsanforderungen und in Abhängigkeit von dem Prozessor/der Plattform. Ein Firmware Interface Table ermöglicht sichere Aktualisierungen, indem die Option von redundanten Kopien von speziellen Modulen ermöglicht wird, sowie von Unterstützungssystemen mit unterschiedlichen und/oder mehreren Prozessorarten, unterschiedlichen Prozessoren der gleichen Familie und/oder Fault Resilient Firmware Aktualisierungen.

Claims (28)

  1. Verfahren, das folgendes umfaßt: Bereitstellen eines generischen Firmware-Moduls, welches Befehle umfaßt, die durch mehrere unterschiedliche Prozessortypen ausführbar sind; Bereitstellen eines oder mehrerer prozessorspezifischer Firmware-Module; und Bereitstellen einer Firmware Interface Table, welche eine oder mehrere durchsuchbare Referenzen auf ein oder mehrere prozessorspezifische Firmware-Module umfaßt, wobei das generische Firmware-Modul die Fähigkeit besitzt, die Firmware Interface Table nach dem einen oder den mehreren prozessorspezifischen Firmware-Modulen zu durchsuchen.
  2. Verfahren nach Anspruch 1, wobei das eine oder die mehreren prozessorspezifischen Firmware-Module aktualisierbar sind.
  3. Verfahren nach Anspruch 2, wobei ein prozessorspezifisches Firmware-Modul durch Beibehalten einer ersten und einer zweiten Instanz des prozessorspezifischen Firmware-Moduls, Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls, aktualisierbar ist.
  4. Verfahren nach Anspruch 3, wobei das prozessorspezifische Firmware-Modul ferner durch Validieren des Inhalts der aktualisierten ersten Instanz des prozessorspezifischen Firmware-Moduls aktualisierbar ist.
  5. Verfahren nach Anspruch 3, wobei das prozessorspezifische Firmware-Modul ferner durch Aktualisieren der zweiten Instanz des prozessorspezifischen Firmware-Moduls, aktualisierbar ist.
  6. Verfahren nach Anspruch 3, wobei das Aktualisieren der ersten Instanz des prozessorspezifischen Moduls das Ersetzen der ersten Instanz des prozessorspezifischen Firmware-Moduls durch ein unterschiedliches Modul für den gleichen Prozessortyp umfaßt.
  7. Verfahren nach Anspruch 1, wobei das generische Firmware-Modul einen oder mehrere Befehle zum Initialisieren der mehreren unterschiedlichen Prozessortypen umfaßt.
  8. Verfahren nach Anspruch 1, wobei ein prozessorspezifisches Firmware-Modul einen oder mehrere Befehle zum Initialisieren eines bestimmten Prozessortyps umfaßt.
  9. Verfahren nach Anspruch 1, wobei die Firmware Interface Table eine oder mehrere Adressen umfaßt, welche den Startplatz der einen oder mehreren prozessorspezifischen Firmware-Module referenzieren.
  10. Verfahren nach Anspruch 9, wobei ein prozessorspezifisches Firmware-Modul durch Einfügen eines aktualisierten prozessorspezifischen Moduls, das bei einer entsprechenden Adresse beginnt, die in der Firmware Interface Table referenziert wird, aktualisierbar ist.
  11. Vorrichtung, die folgendes umfaßt: eine elektronische Speichervorrichtung, die folgendes umfaßt: ein generisches Firmware-Modul, welches Befehle umfaßt, die durch mehrere unterschiedliche Prozessortypen ausführbar sind, ein oder mehrere prozessorspezifische Firmware-Module, und eine Firmware Interface Table, welche eine oder mehrere durchsuchbare Referenzen auf ein oder mehrere prozessorspezifische Module umfaßt, wobei das generische Firmware-Modul die Fähigkeit besitzt, die Firmware Interface Table nach einem oder mehreren prozessorspezifischen Firmwaremodulen zu durchsuchen.
  12. Vorrichtung nach Anspruch 11, wobei die einen oder mehreren prozessorspezifischen Firmware-Module aktualisierbar sind.
  13. Vorrichtung nach Anspruch 12, wobei ein prozessorspezifisches Firmware-Modul durch Beibehalten einer ersten und einer zweiten Instanz des prozessorspezifischen Firmware-Moduls, Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls, und Verändern der Firmware Interface Table zum Referenzieren auf die veränderte erste Instanz des prozessorspezifischen Firmware-Moduls aktualisierbar ist.
  14. Vorrichtung nach Anspruch 13, wobei das prozessorspezifische Firmware-Modul in der elektronischen Speichervorrichtung ferner durch Validieren des Inhalts der aktualisierten ersten Instanz des prozessorspezifischen Firmware-Moduls aktualisierbar ist.
  15. Vorrichtung nach Anspruch 13, wobei das prozessorspezifische Firmware-Modul in der elektronischen Speichervorrichtung ferner durch Aktualisieren der zweiten Instanz des prozessorspezifischen Firmware-Moduls aktualisierbar ist.
  16. Vorrichtung nach Anspruch 13, wobei das Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls das Ersetzen der ersten Instanz des prozessorspezifischen Firmware-Moduls durch ein unterschiedliches Modul für den gleichen Prozessortyp umfaßt.
  17. Vorrichtung nach Anspruch 11, wobei das generische Firmware-Modul in der Datenspeicherungsvorrichtung einen oder mehrere Befehle zum Initialisieren der mehreren unterschiedlichen Prozessortypen umfaßt.
  18. Vorrichtung nach Anspruch 11, wobei ein prozessorspezifisches Firmware-Modul einen oder mehrere Befehle zum Initialisieren eines bestimmten Prozessortyps umfaßt.
  19. System, welches folgendes umfaßt: eine elektronische Speichervorrichtung, die ein generisches Firmware-Modul, welches Befehle umfaßt, die durch mehrere unterschiedliche Prozessortypen ausführbar sind, ein oder mehrere prozessorspezifische Firmware-Module, und eine Firmware Interface Table, welche eine oder mehrere durchsuchbare Referenzen auf ein oder mehrere prozessorspezifische Module umfaßt, wobei das generische Firmware-Modul die Fähigkeit besitzt, die Firmware Interface Table nach einem oder mehreren prozessorspezifischen Firmware-Modulen zu durchsuchen, umfaßt; und einen Prozessor, der mit der elektronischen Speichervorrichtung gekoppelt ist, wobei der Prozessor einen oder mehrere Befehle im generischen Firmware-Modul, und einen oder mehrere Befehle in einem entsprechenden prozessorspezifischen Firmware-Modul von den einen oder mehreren prozessorspezifischen Firmware-Modulen ausführt.
  20. Vorrichtung nach Anspruch 19, wobei ein prozessorspezifisches Firmware-Modul durch Beibehalten einer ersten und einer zweiten Instanz des prozessorspezifischen Firmware-Moduls, Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls und Verändern der Firmware Interface Table zum Referenzieren auf die veränderte erste Instanz des prozessorspezifischen Firmware-Moduls aktualisierbar ist.
  21. Vorrichtung nach Anspruch 19, wobei das prozessorspezifische Firmware-Modul in der elektronischen Speichervorrichtung ferner durch Validieren des Inhalts der aktualisierten ersten Instanz des prozessorspezifischen Firmware-Moduls, und Aktualisieren der zweiten Instanz des prozessorspezifischen Firmware-Moduls, aktualisierbar ist.
  22. Maschinenlesbarer Datenträger, der einen oder mehrere Befehle zum Initialisieren eines Systems hat, was, wenn es durch einen Prozessor ausgeführt wird, den Prozessor veranlaßt, Operationen auszuführen, die folgendes umfassen: Bereitstellen eines generischen Firmware-Moduls, welches Befehle umfaßt, die durch mehrere unterschiedliche Prozessortypen ausführbar sind; Bereitstellen eines oder mehrerer prozessorspezifischer Firmware-Module; und Bereitstellen einer Firmware Interface Table, welche eine oder mehrere durchsuchbare Referenzen auf ein oder mehrere prozessorspezifische Firmware-Module umfaßt, wobei das generische Firmware-Modul die Fähigkeit besitzt, die Firmware Interface Table nach dem einen oder den mehreren prozessorspezifischen Firmware-Modulen zu durchsuchen.
  23. Maschinenlesbarer Datenträger nach Anspruch 22, wobei ein prozessorspezifisches Firmware-Modul durch einen oder mehrere Befehle aktualisierbar ist, was, wenn es durch einen Prozessor ausgeführt wird, den Prozessor veranlaßt, Operationen auszuführen, die folgendes umfassen: Beibehalten einer ersten und einer zweiten Instanz des prozessorspezifischen Firmware-Moduls, Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls, und Verändern der Firmware Interface Table zum Referenzieren auf die veränderte erste Instanz des prozessorspezifischen Firmware-Moduls.
  24. Maschinenlesbarer Datenträger nach Anspruch 23, wobei ein prozessorspezifisches Firmware-Modul durch einen oder mehrere Befehle aktualisierbar ist, was, wenn es durch einen Prozessor ausgeführt wird, den Prozessor veranlaßt, Operationen auszuführen, die ferner folgendes umfassen: Validieren des Inhalts der aktualisierten ersten Instanz des prozessorspezifischen Firmware-Moduls.
  25. Maschinenlesbarer Datenträger nach Anspruch 23, wobei ein prozessorspezifisches Firmware-Modul durch einen oder mehrere Befehle aktualisierbar ist, was, wenn es durch einen Prozessor ausgeführt wird, den Prozessor veranlaßt, Operationen auszuführen, die ferner folgendes umfassen: Aktualisieren der zweiten Instanz des prozessorspezifischen Firmware-Moduls.
  26. Maschinenlesbarer Datenträger nach Anspruch 23, wobei das Aktualisieren der ersten Instanz des prozessorspezifischen Firmware-Moduls einen oder mehrere Befehle umfaßt, was, wenn es durch den Prozessor ausgeführt wird, den Prozessor veranlaßt, Operationen auszuführen, die folgendes umfassen: Ersetzen der ersten Instanz des prozessorspezifischen Firmware-Moduls durch ein unterschiedliches Modul für den gleichen Prozessortyp.
  27. Maschinenlesbarer Datenträger nach Anspruch 22, wobei das generische Firmware-Modul in der Datenspeichervorrichtung einen oder mehrere Befehle zum Initialisieren der mehreren unterschiedlichen Prozessortypen umfaßt.
  28. Maschinenlesbarer Datenträger nach Anspruch 22, wobei ein prozessorspezifisches Firmware-Modul einen oder mehrere Befehle zum Initialisieren eines bestimmten Prozessortyps umfaßt.
DE10393235T 2002-09-09 2003-09-05 Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt Ceased DE10393235T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/237,349 US7036007B2 (en) 2002-09-09 2002-09-09 Firmware architecture supporting safe updates and multiple processor types
US10/237,349 2002-09-09
PCT/US2003/027791 WO2004023289A2 (en) 2002-09-09 2003-09-05 Firmware architecture supporting safe updates and multiple processor types

Publications (1)

Publication Number Publication Date
DE10393235T5 true DE10393235T5 (de) 2005-07-28

Family

ID=31977706

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393235T Ceased DE10393235T5 (de) 2002-09-09 2003-09-05 Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt

Country Status (7)

Country Link
US (1) US7036007B2 (de)
CN (1) CN100388196C (de)
AU (1) AU2003273286A1 (de)
DE (1) DE10393235T5 (de)
GB (1) GB2408821B (de)
TW (1) TWI269229B (de)
WO (1) WO2004023289A2 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003656B2 (en) * 2002-06-13 2006-02-21 Hewlett-Packard Development Company, L.P. Automatic selection of firmware for a computer that allows a plurality of process types
US7653808B2 (en) * 2002-11-27 2010-01-26 Intel Corporation Providing selectable processor abstraction layer components within one BIOS program
US7134007B2 (en) * 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US7363484B2 (en) * 2003-09-15 2008-04-22 Hewlett-Packard Development Company, L.P. Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
US8555273B1 (en) * 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7376078B1 (en) * 2004-03-24 2008-05-20 Juniper Networks, Inc. Selective replay of a state information within a computing device
US8914606B2 (en) * 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
JP2008509483A (ja) * 2004-08-04 2008-03-27 オーエスエイ テクノロジーズ インコーポレイテッド 予期せず/変化するハードウェア環境へのソフトウェアとファームウェアの適応
US20060047939A1 (en) * 2004-09-01 2006-03-02 International Business Machines Corporation Method and apparatus for initializing multiple processors residing in an integrated circuit
US20060149954A1 (en) * 2004-12-03 2006-07-06 Matt Hageman Apparatus and method for accommodating different central processing units in a computer
TW200620299A (en) * 2004-12-08 2006-06-16 Benq Corp Electronic device and method for updating related programs
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7603562B2 (en) 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
CN100405297C (zh) * 2005-05-18 2008-07-23 鸿富锦精密工业(深圳)有限公司 嵌入式系统出厂预设值初始设定程序的更新方法
CN100412796C (zh) * 2005-05-29 2008-08-20 鸿富锦精密工业(深圳)有限公司 嵌入式系统及其安全开机方法
US20070061813A1 (en) * 2005-08-30 2007-03-15 Mcdata Corporation Distributed embedded software for a switch
US7814479B2 (en) * 2005-12-14 2010-10-12 International Business Machines Corporation Simultaneous download to multiple targets
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US8429418B2 (en) * 2006-02-15 2013-04-23 Intel Corporation Technique for providing secure firmware
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
JP4874859B2 (ja) * 2006-05-31 2012-02-15 株式会社リコー 情報処理装置、情報処理システム、プログラム及びその記録媒体
US8103363B2 (en) * 2007-01-31 2012-01-24 Hewlett-Packard Development Company, L.P. Device control system
US7761735B2 (en) * 2007-04-13 2010-07-20 International Business Machines Corporation Automated firmware restoration to a peer programmable hardware device
US7761734B2 (en) * 2007-04-13 2010-07-20 International Business Machines Corporation Automated firmware restoration to a peer programmable hardware device
US8578332B2 (en) 2007-04-30 2013-11-05 Mark Murray Universal microcode image
US7949850B2 (en) * 2007-12-28 2011-05-24 Intel Corporation Methods and appratus for demand-based memory mirroring
US8136108B2 (en) 2008-09-03 2012-03-13 Computime, Ltd Updating firmware with multiple processors
US8887144B1 (en) * 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8102881B1 (en) 2009-09-08 2012-01-24 Amazon Technologies, Inc. Streamlined guest networking in a virtualized environment
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8300641B1 (en) 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8640220B1 (en) 2009-09-09 2014-01-28 Amazon Technologies, Inc. Co-operative secure packet management
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
CN101655789B (zh) * 2009-09-22 2012-10-24 用友软件股份有限公司 一种实现应用组件热插拔的方法和装置
US8090977B2 (en) 2009-12-21 2012-01-03 Intel Corporation Performing redundant memory hopping
US8566613B2 (en) 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
US8522066B2 (en) * 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
CN102541571A (zh) * 2010-12-08 2012-07-04 国基电子(上海)有限公司 多重处理器装置及其固件更新的方法
US9596082B2 (en) * 2011-12-15 2017-03-14 Intel Corporation Secure debug trace messages for production authenticated code modules
US9235404B2 (en) 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system
US9110761B2 (en) 2012-06-27 2015-08-18 Microsoft Technology Licensing, Llc Resource data structures for firmware updates
US8972973B2 (en) * 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
US20140058532A1 (en) * 2012-08-23 2014-02-27 GM Global Technology Operations LLC Method for partial flashing of ecus
US8930936B2 (en) 2012-11-06 2015-01-06 International Business Machines Corporation Loading remote binaries onto a write-protected device
US11372536B2 (en) 2012-11-20 2022-06-28 Samsung Electronics Company, Ltd. Transition and interaction model for wearable electronic device
US8994827B2 (en) 2012-11-20 2015-03-31 Samsung Electronics Co., Ltd Wearable electronic device
US11237719B2 (en) 2012-11-20 2022-02-01 Samsung Electronics Company, Ltd. Controlling remote electronic device with wearable electronic device
US10551928B2 (en) 2012-11-20 2020-02-04 Samsung Electronics Company, Ltd. GUI transitions on wearable electronic device
US10423214B2 (en) 2012-11-20 2019-09-24 Samsung Electronics Company, Ltd Delegating processing from wearable electronic device
US11157436B2 (en) 2012-11-20 2021-10-26 Samsung Electronics Company, Ltd. Services associated with wearable electronic device
US9030446B2 (en) 2012-11-20 2015-05-12 Samsung Electronics Co., Ltd. Placement of optical sensor on wearable electronic device
US9477313B2 (en) 2012-11-20 2016-10-25 Samsung Electronics Co., Ltd. User gesture input to wearable electronic device involving outward-facing sensor of device
US10185416B2 (en) 2012-11-20 2019-01-22 Samsung Electronics Co., Ltd. User gesture input to wearable electronic device involving movement of device
US9032423B2 (en) 2013-06-21 2015-05-12 Microsoft Technology Licensing, Llc Dependency based configuration package activation
US10360148B2 (en) 2013-07-31 2019-07-23 Hewlett-Packard Development Company, L.P. Generating a second code from a first code
US10691332B2 (en) 2014-02-28 2020-06-23 Samsung Electronics Company, Ltd. Text input on an interactive display
US9639434B2 (en) * 2015-02-26 2017-05-02 Dell Products, L.P. Auto-didacted hierarchical failure recovery for remote access controllers
CN107194242B (zh) * 2017-03-30 2019-11-08 百富计算机技术(深圳)有限公司 固件升级方法和装置
US10740084B2 (en) * 2018-08-16 2020-08-11 Intel Corporation Soc-assisted resilient boot
CN109388418A (zh) * 2018-10-09 2019-02-26 郑州云海信息技术有限公司 带外刷新box节点服务器的固件和fru的方法及系统
CN112732308B (zh) * 2020-12-31 2024-05-31 广州万协通信息技术有限公司 一种模块化的固件升级方法、设备及存储介质
US20230083300A1 (en) * 2021-09-10 2023-03-16 Cirrus Logic International Semiconductor Ltd. Multi-processor system with dynamically selectable multi-stage firmware image sequencing and distributed processing system thereof
US11899567B2 (en) * 2021-09-10 2024-02-13 Cirrus Logic, Inc. System with hardware register and controller external to processor that facilitates transitions between firmware images using hardware register written with firmware image entry points

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210854A (en) * 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
US5568641A (en) 1995-01-18 1996-10-22 Hewlett-Packard Company Powerfail durable flash EEPROM upgrade
US5933652A (en) 1996-08-30 1999-08-03 Advanced System Products, Inc. Host independent peripheral controller with on-board firmware
US5835775A (en) * 1996-12-12 1998-11-10 Ncr Corporation Method and apparatus for executing a family generic processor specific application
US5987605A (en) 1998-02-28 1999-11-16 Hewlett-Packard Co. Methods and apparatus for dual-boot memory selection, update, and recovery in a programmable device
US6381693B2 (en) 1998-12-31 2002-04-30 Intel Corp. Arrangements having firmware support for different processor types
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system
US20020178352A1 (en) * 2001-05-22 2002-11-28 Lambino John P. Firmware upgrade using address conversion

Also Published As

Publication number Publication date
GB0504086D0 (en) 2005-04-06
AU2003273286A8 (en) 2004-03-29
WO2004023289A2 (en) 2004-03-18
GB2408821B (en) 2006-04-12
WO2004023289A3 (en) 2005-03-03
US7036007B2 (en) 2006-04-25
TWI269229B (en) 2006-12-21
TW200414042A (en) 2004-08-01
GB2408821A (en) 2005-06-08
AU2003273286A1 (en) 2004-03-29
US20040049669A1 (en) 2004-03-11
CN1695118A (zh) 2005-11-09
CN100388196C (zh) 2008-05-14

Similar Documents

Publication Publication Date Title
DE10393235T5 (de) Firmware-Architektur, die sichere Aktualisierungen und mehrere Prozessortypen unterstützt
DE10297281B4 (de) Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien
DE69838756T2 (de) Die verarbeitung von eingabe/ausgabeanforderungen von mehreren treibern ermöglichen dateisystem-primitivroutine in einem mehrschicht-treiber-e/a-system
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE4235193A1 (de) Netzwerksystem und zugehoeriges softwareverwaltungsverfahren
DE102009020389A1 (de) System zur Aktualisierung von Firmware und Verfahren dazu, und Verfahren zum Erzeugen von Firmware
DE69027167T2 (de) Rechnersystem mit Programmladegerät und Ladeverfahren
DE69027165T2 (de) Verfahren und Gerät zum Schutz eines Rechnersystems
DE69905946T2 (de) Verfahren und vorrichtung zum laden von betriebssystemen in einer set-top box umgebung
DE69503065T2 (de) Objektorientierte vorrichtung für konfigurationsverlaufsverwaltung
DE69223799T2 (de) Einstellung der systemkonfiguration in einem datenverarbeitungssystem
DE60021066T2 (de) Prüfung eines Softwarepakets
DE68926345T2 (de) Datenverarbeitungsnetzwerk
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69622219T2 (de) Optimierungsgerät zum Entfernen von Gefahren durch Arrangierung der Befehlsreihenfolge
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE69907709T2 (de) Prozessüberwachung in einem rechnersystem
DE112010004140B4 (de) Dynamischer Austausch von Replikat-Datenträgern in einem Verbund
DE10296986T5 (de) Automatischer Austausch einer detekten BIOS-Abbildung
DE102006047979A1 (de) Datenverarbeitungssystem und Verfahren zum Ausführen einer Testroutine in Verbindung mit einem Betriebssystem
DE2500006A1 (de) Wirtsdatenverarbeitungssystem und verfahren zur emulation von eingabe/ausgabe- befehlen
DE2517276A1 (de) Datenverarbeitungssystem
EP1738257B1 (de) Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einer datenverarbeitungsanlage
DE69130306T2 (de) Steuerverfahren für die Vermeidung eines falschen Resets von einem allgemeinen Betriebsmittel und Mehrrechnersystem für die Ausführung des Verfahrens
DE69723500T2 (de) Datenqualitätsverwaltungssystem

Legal Events

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

Ref document number: 10393235

Country of ref document: DE

Date of ref document: 20050728

Kind code of ref document: P

8131 Rejection