-
Hintergrund
-
Die vorliegende Offenbarung betrifft im Allgemeinen Informationsverarbeitungssysteme und insbesondere eine Aktualisierung des grundlegenden Eingangs-/Ausgangssystems (basic input output system) eines Informationsverarbeitungssystems.
-
Da der Wert und Gebrauch von Informationen kontinuierlich wächst, suchen Privatpersonen und Firmen zusätzliche Wege zum Erfassen, Verarbeiten und Speichern von Informationen. Eine Option, die für den Nutzer verfügbar ist, sind Informationsverarbeitungssysteme. Ein Informationsverarbeitungssystem (information handling system, IHS) verarbeitet, kompiliert, speichert, und/oder kommuniziert im Allgemeinen Informationen oder Daten für geschäftliche, persönliche oder andere Zwecke und ermöglicht dadurch den Nutzern von dem Wert der Information zu profitieren. Da die Anforderungen an Technologien und Informationsverarbeitung für verschiedene Benutzer und Anwendungen unterschiedlich sind, können IHS auch unterschiedlich sein in Bezug darauf, welche Information verarbeitet wird, wie die Information verarbeitet wird, wie viel Information verarbeitet, gespeichert oder kommuniziert wird und wie schnell und effizient die Information verarbeitet, gespeichert oder kommuniziert werden kann. Die Unterschiede von IHS ermöglichen, dass die IHS allgemein konfiguriert sind oder für einen spezifischen Benutzer oder eine spezifische Nutzung, wie z.B. Verarbeitung von finanziellen Transaktionen, Flugbuchungen, firmenweite Datenspeicherung, Unterhaltung und/oder weltweite Kommunikation konfiguriert sind. Zusätzlich können IHS eine Vielzahl von Hardware- und Software-Komponenten beinhalten, die konfiguriert werden können, zum Verarbeiten, Speichern, und Kommunizieren von Informationen und können ein oder mehrere Computersysteme, Datenspeicherungssysteme und Netzwerksysteme beinhalten.
-
Ein grundlegendes Eingangs-/Ausgangssystem (basic input output system, BIOS) ist im Allgemeinen ein speicherresidentes Softwareprogramm, das Befehle beinhaltet, die notwendig sind, zum Steuern von Computerperipheriegeräten wie etwa die Tastatur, der Bildschirm, Festplattenlaufwerke, serielle Kommunikationen und andere Funktionen ohne sich auf eine Festplatte zu verlassen. Das BIOS kann auch als Firmware bezeichnet werden, da es üblicherweise in einem nichtflüchtigen Speicher (non-volatile memory, NVM) z.B. Flash-Speicher gespeichert ist. Dies stellt sicher, dass das BIOS zum Starten (Booten) des Systems verfügbar ist, auch bei einer Fehlfunktion der Festplatte.
-
Das BIOS beinhaltet üblicherweise einen Setup-Code und ein Power-On-Self-Test (POST) Programm, die beide dem Fachmann wohl bekannt sind. Der Setup-Code ermöglicht dem Nutzer das Computersystem in einer gewünschten Weise zu konfigurieren, z.B. durch Bestimmen, ob manche Merkmale aktiv oder gesperrt sind und durch Bestimmen bestimmter Voreinstellungen. Eine Computersystemkonfiguration bezeichnet im Allgemeinen einen Prozess zum Einstellen, Definieren und/oder Auswählen von Hardware, Softwareeigenschaften, Parametern, oder Merkmalen des Systems. Der POST-Code testet und initialisiert verschiedene Komponenten, wenn das System aktiviert wird. Beide, die Setup- und die POST-Codes werden üblicherweise in NVM wie etwa einem Flash-Speicher gespeichert.
-
Derzeit sind Anwendungssoftwareprogramme verfügbar, wie etwa ein BIOS-Fernaktualisierungsprogramm (remote BIOS update program, RBU) und/oder eine Fernkonfigurationsschnittstelle (remote configuration interface, RCI) zum entweder lokalen Aktualisieren oder Fernaktualisieren des BIOS. Das folgende US-Patent beschreibt verschiedene Aspekte der Aktualisierung des BIOS, fern oder lokal, das hierin durch Bezugnahme aufgenommen wird: 1)
US-Patent 6,438,688 mit dem Titel „Method and Computer for Locally and Remotely Updating a Basic Input/Output System (BIOS) Utilizing one Update File“.
-
Dennoch kann eine Implementierung einer Änderung oder eine Modifikation des BIOS mühsam sein, da der BIOS-Code oft geändert werden muss, abhängig von den Einschränkungen eines speziellen Chipsatzes, der in dem IHS benutzt wird. Zum Beispiel könnte ein Speicherinitialisierungscode des unterstützen Chipsatzes geändert werden müssen. Spezieller BIOS-Code könnte eingefügt werden, zum Einstellen der Speicherschaltungen im Self-Refreshing-Modus während einer Initialisierung. Zusätzlich können manche Chipsätze, die in Server-Strukturen benutzt werden, den Speicher nach einem internen Bus-Reset initialisieren, z.B. nach dem Rücksetzen des Periphery Component Interconnect (PCI) - Busses.
-
Deswegen ist ein Bedarf entstanden, die Aktualisierung des NVM eines IHS zu verbessern. Folglich wäre es wünschenswert, ein Verfahren für eine ferne oder lokale Aktualisierung des BIOS-Codes zur Verfügung zu stellen, das unabhängig von den Einschränkungen eines Chipsatzes ist, und das die Nachteile des oben beschriebenen Stand-der-Technik-Verfahrens nicht aufweist.
-
Zusammenfassung
-
Der oben genannte Bedarf wird durch die Lehre der vorliegenden Erfindung angesprochen, die die Aktualisierung eines NVM eines IHS betrifft. Gemäß einem Ausführungsbeispiel für die Aktualisierung eines BIOS-Codes, der in einem NVM gespeichert ist, welcher Bestandteil eines IHS ist, wird eine Mehrzahl von Bedingungen überprüft, die die Aktualisierung des BIOS, das in dem NVM gespeichert ist, aus einem Speicher des IHS ermöglichen. Die Inhalte des Speichers werden erhalten durch Deaktivieren von Interrupts und Deaktivieren von Bus-Mastern, die in der Lage sind, eine Änderung des Inhalts des Speichers zu verursachen. Das BIOS, das in dem NVM gespeichert ist, wird vom Speicher aktualisiert. Eine Benutzerschnittstelle wird bereitgestellt, um den Status der Aktualisierung des NVM anzuzeigen und die Benutzerfreundlichkeit zu verbessern. Nach der Fertigstellung der Aktualisierung wird das IHS zurückgestellt durch die Aktivierung eines kalten Neustarts (cold reboot), wodurch die Änderungen, die an dem BIOS gemacht wurden, wirksam werden.
-
Weitere Vorteile werden realisiert, gemäß den beispielhaften Ausführungsbeispielen, die hierin beschrieben werden. Die Ausführungsbeispiele stellen auf vorteilhafte Weise ein verbessertes automatisiertes Verfahren bereit, zur Änderung des Inhalts des NVM in einer Weise, die unabhängig von einem Chipsatz, der in dem IHS benutzt wird, und seinen Einschränkungen ist. Ein Anwendungsprogramm, das lokal in dem IHS ausgeführt werden kann und/oder bei einer entfernten Stelle, die mit dem IHS verbunden ist, ausgeführt werden kann, wird ausgeführt, um den Inhalt des NVM zu ändern, ohne den BIOS-Code jedes spezifischen Chipsatzes ändern zu müssen. Die Änderungen, die an dem BIOS gemacht werden, werden wirksam nach einem kalten-Start-Ereignis (cold boot) des IHS.
-
Figurenliste
-
- 1 zeigt ein Blockdiagramm eines IHS gemäß einem Ausführungsbeispiel.
- 2A ist ein Flussdiagramm, das ein Verfahren zur Aktualisierung eines NVM eines IHS gemäß einem Ausführungsbeispiel darstellt.
- 2B ist ein Flussdiagramm, das zusätzliche Einzelheiten der Überprüfung einer Mehrzahl von Bedingungen, die mit Bezug auf 2A beschrieben werden, darstellt, gemäß einem Ausführungsbeispiel.
- 2C ist ein Flussdiagramm, das zusätzliche Einzelheiten des Beibehaltens von Inhalt eines RAM, die mit Bezug auf 2A beschrieben werden, darstellt, gemäß einem Ausführungsbeispiel.
- 2D ist ein Flussdiagramm, das zusätzliche Einzelheiten der Aktualisierung des Inhalts eines NVM aus einem RAM, die mit Bezug auf 2 beschrieben werden, gemäß einem Ausführungsbeispiel darstellt.
- 3 ist ein Flussdiagramm, das ein Verfahren zur Aktualisierung eines BIOS eines IHS gemäß einem Ausführungsbeispiel darstellt.
-
Detaillierte Beschreibung
-
Neue Merkmale, die die vorliegende Erfindung kennzeichnen, werden in den angehängten Ansprüchen erläutert. Jedoch wird die Offenbarung selbst sowie eine bevorzugte Art der Verwendung, verschiedene Ziele und Vorteile davon, bestens verstanden unter Bezug auf die folgende detaillierte Beschreibung eines erklärenden Ausführungsbeispiels, wenn sie zusammen mit den begleitenden Zeichnungen gelesen wird. Die Funktionalität von verschiedenen Schaltungen, Geräten, Platten, Karten, Modulen, Blöcken und/oder Komponenten, die hierin beschrieben werden, können als Hardware (inklusive diskrete Komponenten, integrierte Schaltungen und Systems on a Chip, SOC), Firmware (inklusive anwendungsspezifische Geräteschaltungen und programmierbare Chipsätze) und/oder Software oder einer Kombination hiervon, abhängig von den Anforderungen der Anwendung implementiert werden.
-
Konfiguration - beschreibt eine Konfiguration eines Gerätes und/oder eines Systems und betrifft einen Prozess zum Einstellen, Definieren oder Auswählen von Hardware und/oder Software-Eigenschaften, Parametern oder Merkmalen des Gerätes und/oder des Systems. Bestimmte Arten von neuen Technologien wie etwa Plug-and-Play können das Gerät automatisch konfigurieren.
-
BIOS-Code und/oder Konfigurationsdaten für ein IHS können aktualisiert werden müssen, um die Funktionalität zu verbessern, und/oder Fehler zu beheben. Ein wohl bekanntes Verfahren zur Bereitstellung der Aktualisierungen, lokal oder von Ferne, besteht in der Entwicklung von chipsatzspezifischem BIOS-Code, um die Einschränkungen des Chipsatzes zu umgehen. Jedoch steigert die Entwicklung von chipsatzspezifischem BIOS die Entwicklungskosten und verursacht Zeitverzögerungen für die Einführung von neuen Produkten. Dadurch existiert ein Bedarf zum Bereitstellen von Code zur Aktualisierung von BIOS, der unabhängig von dem Chipsatz-Design ist.
-
Gemäß einem Ausführungsbeispiel zur Aktualisierung eines BIOS-Codes, der in einem NVM gespeichert ist, welcher Bestandteil eines IHS ist, wird eine Mehrzahl von Bedingungen überprüft, die die Aktualisierung des BIOS, das in dem NVM gespeichert ist, aus einem Speicher des IHS ermöglichen. Die Inhalte des Speichers werden beibehalten durch Deaktivieren von Interrupts und Deaktivieren von Bus-Mastern, die in der Lage sind, eine Änderung in dem Inhalt des Speichers zu verursachen. Das BIOS, das in dem NVM gespeichert ist, wird aus dem Speicher aktualisiert. Eine Benutzerschnittstelle wird bereitgestellt, um den Status der Aktualisierung des NVM anzuzeigen und die Benutzerfreundlichkeit zu verbessern. Nach der Fertigstellung der Aktualisierung wird das IHS zurückgesetzt durch die Aktivierung eines kalten Neustarts (cold reboot), wodurch die Änderungen, die an dem BIOS gemacht wurden, wirksam werden.
-
Für die Zwecke dieser Offenbarung kann ein IHS jedes Mittel oder Anordnungen von Mitteln beinhalten, die geeignet sind, jede Form von Information, Intelligenz oder Daten für geschäftliche, wissenschaftliche, Kontroll- und andere Zwecke zu berechnen, zu klassifizieren, zu bearbeiten, zu übertragen, zu empfangen, abzufragen, zu erzeugen, zu schalten, zu speichern, darzustellen, bekannt zu machen, zu ermitteln, aufzunehmen, zu reproduzieren, zu verarbeiten oder zu nutzen. Zum Beispiel kann das IHS ein Personalcomputer inklusive Notebook, ein Minicomputer (personal digital assistant, PDA), Mobiltelefone, Spielkonsolen, ein Netzwerkspeichergerät oder jedes andere geeignete Gerät sein und in Größe, Form, Leistung, Funktionalität und Preis variieren. Das IHS kann flüchtigen Speicher (RAM) aufweisen, eine oder mehrere Verarbeitungsressourcen, wie eine zentrale Prozessoreinheit (CPU) oder Hardware- oder Softwaresteuerlogik, ROM und/oder andere Arten von NVM. Zusätzliche Komponenten des IHS können umfassen: ein oder mehrere Festplattenlaufwerke, einen oder mehrere Netzwerkanschlüsse (Ports) zur Kommunikation mit externen Geräten sowie verschiedene Eingabe- und Ausgabe (I/O) Geräte wie eine Tastatur, eine Maus und einen Bildschirm. Das IHS kann auch einen oder mehrere Busse aufweisen, die geeignet sind, Nachrichten zwischen den verschiedenen Hardwarekomponenten zu übermitteln.
-
1 zeigt ein Blockdiagramm eines IHS 100 gemäß einem Ausführungsbeispiel. Das IHS 100 umfasst einen Prozessor 110, einen flüchtigen Speicher (RAM) 120 (auch als Hauptspeicher bezeichnet), einen NVM 122, einen Bildschirm 105, eine Tastatur 125 und einen I/O-Controller 140 für die Steuerung verschiedener anderer I/O-Geräte, wobei jedes Gerät mit einem Bus 150 gekoppelt ist. Zum Beispiel kann der I/O-Controller 140 einen Tastaturcontroller, einen Eingabezeigergerät-Controller und/oder den seriellen I/O-Controller umfassen. Es soll verstanden werden, dass die Bezeichnung Informationsverarbeitungssystem jedes Gerät umfasst, das einen Prozessor aufweist, der Befehle aus einem Speichermedium ausführt.
-
In einem speziellen Ausführungsbeispiel wird ein anderer oder zusätzlicher nicht-flüchtiger Speicher (additional non-volatile memory, ANVM) 160, etwa ein batteriegestützter CMOS-Speicher, an den Bus 150 gekoppelt. Der ANVM 160 wird zum Speichern von IHS-Konfigurationsdaten verwendet, wie etwa Festplatteneinstellungen, Geräten und I/O-Anschlüssen, Datum- und Zeiteinstellungen, Systemsicherheitseinstellungen, Startoperationen, Strommanagement-Einstellungen und Ähnliches. In einem speziellen Ausführungsbeispiel kann der ANVM 160 in einem anderen Speichergerät integriert werden, der in dem IHS 100 beinhaltet ist, wie etwa im NVM 122. In einem speziellen Ausführungsbeispiel, wird ein Teil des NVM 122 zum Speichern eines BIOS 180 verwendet. In einem speziellen Ausführungsbeispiel wird ein Teil des RAM 120 zum Speichern eines Anwendungsprogramms 170 verwendet. Das Anwendungsprogramm 170 umfasst ein oder mehrere Befehle, die von einem Prozessor 110 ausgeführt werden können, um ein neues Abbild für das BIOS 180 und folglich für den NVM 122 zu erzeugen. In einem speziellen Ausführungsbeispiel wird das neue Abbild vom Anwendungsprogramm 170 in dem RAM 120 gespeichert, vor der Aktualisierung des BIOS 180 in dem NVM 122. Das Anwendungsprogramm 170 kann ausgeführt werden, um den NVM 122 lokal zu aktualisieren oder kann von einem entfernten Prozess ausgeführt werden, das auf einem anderen IHS (AIHS) (nicht dargestellt) läuft.
-
In einem speziellen Ausführungsbeispiel umfasst das BIOS 180 einen Code (auch als Befehle bezeichnet), der unabhängig von einem Chipsatz ist, der in dem IHS 100 verwendet wird, und der ausführbar ist, um den NVM 122 aus dem Abbild zu aktualisieren, das in dem RAM 120 gespeichert ist. Zusätzliche Einzelheiten der Aktualisierung des NVM 122 aus dem RAM 120 werden mit Bezug auf 2 beschrieben.
-
Der Prozessor 110 kommuniziert mit den Systemkomponenten über den Bus 150, der Daten, Adress- und Kontrollleitungen umfasst. In einem Ausführungsbeispiel kann das IHS 100 mehrere Instanzen des Busses 150 umfassen. In einem exemplarischen, nicht dargestellten Ausführungsbeispiel können nicht alle Geräte, die gezeigt werden, direkt mit dem Bus 150 gekoppelt werden. Die mehreren Instanzen des Busses 150 können einem oder mehreren proprietären Standards entsprechen und/oder einem oder mehreren industriellen Standards wie etwa PCI, PCIe, ISA, USB, SMBus und Ähnliches. Ein Kommunikationsgerät 145 wie etwa eine Netzwerkschnittstellenkarte und/oder ein Funkgerät können an den Bus 150 angeschlossen werden, um einen drahtgebundenen und/oder drahtlosen Informationsaustausch zwischen dem IHS 100 und anderen Geräten/Systemen (nicht dargestellt) wie etwa dem AIHS zu ermöglichen. In einem speziellen Ausführungsbeispiel kann das IHS 100 mehrere Instanzen des Prozessors 110 umfassen, zum Beispiel in einem Mehrkern-, Mehrprozessor-System.
-
Der Prozessor 110 ist geeignet zum Ausführen der Rechnerbefehle und/oder Befehle des IHS 100. Das Speichermedium, zum Beispiel RAM 120, speichert vorzugsweise Befehle (auch bekannt als ein Softwareprogramm) für die Umsetzung verschiedener Ausführungsbeispiele eines Verfahrens gemäß der vorliegenden Offenbarung. Ein Betriebssystem (OS) 135 des IHS 100 ist eine Art von Softwareprogramm, das die Ausführung von anderen Softwareprogrammen steuert, die als Anwendungssoftwareprogramme bezeichnet werden, zum Beispiel das Anwendungsprogramm 170. In verschiedenen Ausführungsbeispielen können die Befehle und/oder Softwareprogramme auf verschiedene Weise implementiert werden, inklusive prozedurbasierter Verfahren, komponentenbasierter Verfahren, und/oder objektorientierter Verfahren, und andere. Das BIOS 180 wird üblicherweise in einer Assembler-Sprache programmiert. Software kann auch implementiert werden unter Verwendung von C, XML, C++ Objekten, JAVA und .NET-Technologie von Microsoft.
-
In einem nicht dargestellten beispielhaften Ausführungsbeispiel kann das IHS 100 in einer Mehrzahl von Betriebs-Modi wie etwa einem Start-Up-Modus, einen Leerlauf-Modus, einen Laufzeit-Modus, einem sicheren (safe) Modus und anderen ähnlichen Modi betrieben werden. Das IHS 100 kann als in einem warmen oder kalten Start- (Boot-Up) Modus laufend beschrieben werden, wenn es BIOS-Code wie etwa die SETUP- und POST-Codes ausführt. Das IHS 100 kann aus dem Start-Modus aussteigen, wenn die Ausführung des POST-Codes fertig ist und die Kontrolle von dem BIOS 180 zum Betriebssystem (OS) 135 des IHS 100 transferiert wird. Das IHS 100 kann in einem Laufzeit- (run-time) Modus laufend beschrieben werden, wenn das OS 135 geladen und betriebsbereit ist, zum Ausführen von einem oder mehreren Anwendungsprogrammen, wie etwa dem Anwendungsprogramm 170.
-
2A ist ein Flussdiagramm, das ein Verfahren zum Aktualisieren eines NVM eines IHS darstellt, gemäß einem Ausführungsbeispiel. In einem speziellen Ausführungsbeispiel ist der NVM im Wesentlichen der Gleiche wie der NVM 122 und IHS ist im Wesentlichen das Gleiche wie das IHS 100, das mit Bezug auf 1 beschrieben wurde.
-
Beim Schritt 210 wird ein Anwendungsprogramm wie etwa das Anwendungsprogramm 170 zum Erzeugen eines aktualisierten Abbildes des BIOS 180 ausgeführt, das in dem NVM 122 gespeichert ist. In einem speziellen Ausführungsbeispiel kann ein entfernter Prozess und/oder ein Anwendungsprogramm, das auf einem anderen IHS wie etwa einem zentralen Server läuft, zum Erzeugen des aktualisierten Abbildes ausgeführt werden. Beim Schritt 212, wird das aktualisierte Abbild, das lokal oder fern erzeugt wurde, in dem RAM 120 gespeichert und ein Aktualisierungsanfrage-Flag oder Bit wird in dem ANVM 160 gesetzt. Das Setzen des Aktualisierungsanfrage-Bits zeigt eine anhängige Anfrage für die Aktualisierung des NVM 122 an. Zum Beispiel kann ein RBU-Programm oder ein RCI eine Aktualisierung des BIOS anfordern durch das Setzen des Aktualisierungsanfrage-Flags. Beim Schritt 214 wird ein Prozessorinitalisierungsbefehl wie z. B. PROC_INIT vom Anwendungsprogramm 170 erzeugt, um die Aktualisierung des NVM 122 zu initialisieren. In einem speziellen Ausführungsbeispiel, in einem Mehrprozessor-System können mehrere Prozessoren von dem Prozessor-Initialisierungsbefehl zurückgesetzt werden. Beim Schritt 216 wird vor der Aktualisierung des NVM 122 aus dem aktualisierten Abbild eine Mehrzahl von Bedingungen überprüft, ob sie zutreffend und/oder gesetzt sind. Zusätzliche Einzelheiten der Mehrzahl von Tests, die überprüft werden, werden mit Bezug auf 2B beschrieben.
-
Beim Schritt 218 werden die Inhalte des RAM 120 einschließlich des aktualisierten Abbildes beibehalten und/oder geschützt. Zusätzliche Einzelheiten der Erhaltung der Inhalte des RAM 120 werden mit Bezug auf 2C beschrieben. Beim Schritt 220 wird der NVM 122 aus dem aktualisierten Abbild, das in dem RAM 120 gespeichert ist, aktualisiert. Das bedeutet, dass Inhalte des aktualisierten Abbildes, die in dem RAM 120 gespeichert sind, in das BIOS 180, das in dem NVM 122 gespeichert ist, kopiert werden. Zusätzliche Einzelheiten der Aktualisierung des NVM 122 aus dem RAM 120 werden mit Bezug auf 2D beschrieben. Beim Schritt 222, wird das IHS 100 durch die Aktivierung eines kalten Neustarts (cold reboot) zurückgesetzt. Der kalte Neustart (cold reboot) lädt das aktualisierte Abbild des BIOS 180 und ermöglicht dadurch, dass die Änderungen, die in der Aktualisierung enthalten sind, wirksam werden. In einem speziellen Ausführungsbeispiel können die Schritte 216, 218, 220 und 222 in dem BIOS 180 implementiert werden.
-
2B ist ein Flussdiagramm, das zusätzliche Einzelheiten für die Überprüfung einer Mehrzahl von Bedingungen, die mit Bezug auf den Schritt 216 von 2A beschrieben werden, gemäß einem Ausführungsbeispiel darstellt. Beim Schritt 2162, wird ein warmer Neustart- (warm reboot) Status des IHS 100 überprüft. In einem speziellen Ausführungsbeispiel kann der warme Neustart-(warm reboot) Status überprüft werden durch Lesen einer vordefinierten Speicherstelle, z.B. einer speziellen Stelle in dem RAM 120, und durch Feststellen, ob die Inhalte der vordefinierten Speicherstelle vordefinierten Daten wie etwa einem vordefinierten Bit-Muster entsprechen. Beim Schritt 2164 wird ein Aktualisierungsanfrage-Bitsatz überprüft, um auf einen vordefinierten Zustand wie etwa eine logische „1“ gesetzt zu werden. Der Aktualisierungsanfrage-Bitsatz zeigt eine anhängige Anfrage für die Aktualisierung des NVM 122 aus dem RAM 120, wie mit Bezug auf den Schritt 212 von 2A beschrieben wurde. In einem speziellen Ausführungsbeispiel wird der Aktualisierungsanfrage-Bitsatz in dem ANVM 160 durch das Anwendungsprogramm 170 gespeichert. Beim Schritt 2166 wird ein Checksummen-Fehlerstatus (check sum error status) des ANVM 160 überprüft, um fehlerfrei zu sein, um den Eintritt eines einzigen Bitfehlers auszuschließen, der das Aktualisierungsanfrage-Bit unbeabsichtigt setzen würde.
-
2C ist ein Flussdiagramm, das zusätzliche Einzelheiten für das Beibehalten der Inhalte des RAM 120, das mit Bezug auf Schritt 218 von 2A beschrieben wurde, gemäß einem Ausführungsbeispiel darstellt. Beim Schritt 2182 werden Interrupt-Signale initialisiert, die in der Lage sind, die Aktualisierung des NVM 122 und/oder des RAM 120 zu unterbrechen. In einem beispielhaften, nicht dargestellten Ausführungsbeispiel kann die Initialisierung die Neuinitialisierung eines 8259 programmierbaren Interrupt-Controllers (programmable interrupt controler, PIC) umfassen, der die Interrupt-Anfrage (interrupt request, IRQ) bearbeitet, sowie die Interrupt-Vektortabelle (interrupt vector table, IVT). Beim Schritt 2184 werden die Interrupts deaktiviert, um das Unterbrechen der Aktualisierung vorzubeugen oder zu vermeiden. Beim Schritt 2186 werden ein Bus-Mastergerät, wie etwa ein PCI-Bus-Master und Hardware-Interrupts deaktiviert.
-
2D ist ein Flussdiagramm, das zusätzliche Einzelheiten der Aktualisierung der Inhalte des NVM 122 aus dem RAM 120, die mit Bezug auf Schritt 220 von 2A beschrieben wurde, gemäß einem Ausführungsbeispiel darstellt. Beim Schritt 2201 wird eine Benutzerschnittstelle für eine verbesserte Benutzerfreundlichkeit bereitgestellt. In einem beispielhaften nicht dargestellten Ausführungsbeispiel ist die Benutzerschnittstelle ein Bildschirm wie etwa das Bildschirmgerät 105. Die Benutzerschnittstelle wird reaktiviert und ein Video-Interrupt z.B. INT10h wird vor dem letzten Start (boot) wieder hergestellt. Beim Schritt 2202 wird eine Ausgabe wie etwa eine Bildschirm-Textmeldung generiert, um einen Status der Aktualisierung des NVM 122 anzuzeigen. Beim Schritt 2203 wird die Integrität des aktualisierten Abbildes, das in dem RAM 120 gespeichert ist, überprüft, z. B. durch das Durchführen einer Fehler-Checksumme auf dem RAM 120. Beim Schritt 2204 wird das aktualisierte Abbild, das in dem RAM 120 gespeichert ist, dekomprimiert. Beim Schritt 2205 wird das aktualisierte Abbild, das in dem RAM 120 gespeichert ist, kopiert, um das BIOS 180, das in dem NVM 122 gespeichert ist, zu aktualisieren. Beim Schritt 2206 wird ein Antwort-Code für das Anwendungsprogramm 170 geschickt. Der Antwort-Code zeigt, ob die Aktualisierung des BIOS 180 mit oder ohne Fehler fertig gestellt wurde. Beim Schritt 2207 wird eine Ausgabe des Durchführungsstatus bereitgestellt, um die Benutzerfreundlichkeit zu verbessern. Die Ausgabe des Durchführungsstatus zeigt, ob die Aktualisierung des BIOS 180 mit oder ohne Fehler beendet wurde. Beim Schritt 2208 wird zumindest eine von der Mehrzahl der Anzeigen, die mit Bezug auf Schritt 216 von 2A beschrieben wurden, zurückgesetzt. In einem speziellen Ausführungsbeispiel wird der Aktualisierungsanfrage-Bitsatz gelöscht oder zu einem vordefinierten Zustand gesetzt, wie etwa zu einem logischen „0“. Mit Bezug auf 2A, 2B, 2C und 2D können verschiedene Schritte, die oben beschrieben wurden, hinzugefügt, ausgelassen, kombiniert, geändert oder in unterschiedlichen Reihenfolgen durchgeführt werden. Zum Beispiel kann in einem speziellen Ausführungsbeispiel mit Bezug auf 2A ein zusätzlicher Schritt vor dem Schritt 210 hinzugefügt werden, um dem IHS 100, ein unterbrechungsfreies Stromversorgungsgerät (uninterruptible power supply, UPS) bereitzustellen. Das UPS kann auf vorteilhafte Weise die Fertigstellung des Aktualisierungsschritts des BIOS 180 im Fall eines Stromversagens während des Aktualisierungsprozesses des NVM sicherstellen.
-
3 ist ein Flussdiagramm, das ein Verfahren für die Aktualisierung eines BIOS eines IHS gemäß einem Ausführungsbeispiel darstellt. In einem speziellen Ausführungsbeispiel ist das BIOS im Wesentlichen das gleiche wie BIOS 180 und das IHS ist im Wesentlichen das gleiche wie das IHS 100, die mit Bezug auf 1 beschrieben wurden. Beim Schritt 302 wird der Code für das BIOS 180, der in dem NVM 122 gespeichert ist, durch einen BIOS-Rücksetzungsvektor als Antwort zu einer Prozessor-Initialisierung oder Rücksetzung aktiviert. Obwohl der Prozessor zurückgesetzt wird, bleiben viele Komponenten des IHS 100 im Wesentlichen in dem gleichen Zustand wie vor dem Rücksetzen des Prozessors. Zum Beispiel werden die Inhalte der Interrupt-Vektoren des RAM 120 und das Aufladen von Gerätetreibern vor und nach dem Prozessorrücksetzen im Wesentlichen erhalten. Beim Schritt 304 läuft das BIOS 180 aus dem NVM 122. Beim Schritt 306 wird eine Feststellung getroffen, ob das IHS sich in einem warmen Neustartvorgang (warm reboot) befindet. In einem speziellen Ausführungsbeispiel ist Schritt 306 im Wesentlichen ähnlich zum Schritt 2162, der mit Bezug auf 2B beschrieben wurde. Beim Schritt 308 wird als Antwort zur Feststellung, dass das IHS 100 sich in einem warmen Neustartvorgang (warm reboot) befindet, eine Feststellung getroffen, ob ein RBU-Programm oder ein RCI nach einer Aktualisierung des BIOS fragt, zum Beispiel durch Überprüfen, ob das Aktualisierungsanfrage-Bit im AVNM 160 gesetzt ist. In einem speziellen Ausführungsbeispiel ist Schritt 308 im Wesentlichen ähnlich zum Schritt 2164, der mit Bezug auf 2B beschrieben wurde. Beim Schritt 310 wird als Antwort zur Feststellung, dass das RBU oder RCI eine Aktualisierung anfordert, eine Feststellung getroffen, ob das Speichergerät, das die Anfrage speichert, eine gültige Checksumme hat.
-
Beim Schritt 312 als Antwort zur Feststellung, dass das IHS 100 sich nicht in einem warmen Neustartvorgang (warm reboot) befindet, oder dass keine anhängige Anfrage für die Aktualisierung des BIOS existiert, oder dass es einen Checksummen-Fehler gibt, macht das BIOS weiter mit der üblichen POST-Sequenz, die den RAM 120 initialisiert und zum Aufladen des OS 135 zur Verfügung steht. Beim Schritt 314 nach der Überprüfung, dass das IHS 100 sich in einem warmen Neustartvorgang (warm reboot) befindet, und dass es eine anhängige Anfrage für die Aktualisierung des BIOS gibt und dass es keinen Checksummen-Fehler für das Speichergerät gibt, das den Indikator der anhängigen Anfrage speichert, überträgt das BIOS die Ausführung von dem NVM 122 zu dem bereits duplizierten BIOS-Code in dem RAM 120. Der BIOS-Code befindet sich bereits in dem RAM 120 aufgrund des warmen Neustarts (warm reboot). Das BIOS setzt einen Stapelspeicher (memory stack) in dem RAM 120 auf, um zusätzliche Operationen durchzuführen. Beim Schritt 316 werden Interrupt-Vektoren und/oder Interrupt-Controller neu initialisiert. In einem speziellen Ausführungsbeispiel ist Schritt 316 im Wesentlichen der gleiche wie der Schritt 2182, der mit Bezug auf 2C beschrieben wurde. Beim Schritt 318 werden Hardware-Interrupts und PCI-Bus-Master deaktiviert. In einem speziellen Ausführungsbeispiel ist Schritt 318 im Wesentlichen der gleiche wie die Kombination der Schritte 2184 und 2186, die mit Bezug auf 2C beschrieben wurden.
-
Beim Schritt 320 wird ein Videogerät neu aktiviert und ein Video-Interrupt (INT10h) wird zu dem Steuerungsprogramm (handler) aus dem letzten Starten (boot) wieder hergestellt, um die Benutzerfreundlichkeit zu verbessern. In einem speziellen Ausführungsbeispiel ist der Schritt 320 im Wesentlichen der gleiche wie der Schritt 2201, der mit Bezug auf 2D beschrieben wurde. Beim Schritt 322 wird eine Textmeldung dargestellt, die über den Aktualisierungsstatus informiert, und eine Checksumme wird auf dem RAM 120 durchgeführt, um die Integrität des aktualisierten Abbildes, das in dem RAM 120 gespeichert ist, zu überprüfen. Nach der Überprüfung der Checksumme wird das BIOS durch Kopieren der Inhalte des RAM 120 aktualisiert, wenn das aktualisierte Abbild in dem NVM 122 vorhanden ist. Beim Schritt 324 wird eine andere Textmeldung dargestellt, die einen Durchführungsstatus des BIOS anzeigt. Zusätzlich wird ein Aktualisierungsanfrage-Flag gelöscht, welcher anzeigt, dass keine anhängigen zusätzlichen Anfragen für die Aktualisierung des BIOS vorhanden sind und ein Fertigstellungscode wird dem RBU- oder RCI-Task zugeschickt, wenn er eine Aktualisierung anfordert. Beim Schritt 326 wird ein kalter Neustart (cold reboot) durchgeführt und ermöglicht dadurch dem aktualisierten BIOS, aus dem NVM 122 geladen zu werden.
-
Verschiedene Schritte, die oben beschrieben wurden, können hinzugefügt, ausgelassen, kombiniert, geändert oder in unterschiedlicher Reihenfolge durchgeführt werden. Zum Beispiel könnte ein zusätzlicher Schritt vor dem Schritt 302 hinzugefügt werden, um einen UPS dem IHS 100 bereitzustellen. Das UPS kann die Fertigstellung der Aktualisierungsaufgabe des BIOS 180 in dem Fall eines Stromversagens während des Aktualisierungsprozesses des NVM vorteilhaft sicherstellen.