-
STAND DER
TECHNIK
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft Computersysteme und im Besonderen
Verfahren und Vorrichtungen zur Verwendung einer Flash-EEPROM-Speicheranordnung,
die einen Hauptspeicher ergänzt, um
diagnostische Funktionen vorzusehen.
-
Beschreibung
des Stands der Technik
-
Seit
geraumer Zeit kommen Flash-EEPROM-Speichervorrichtungen (EEPROM
als englische Abkürzung
von electrically-erasable programmable read-only memory) in Anordnungen
als ein neuer Typ eines langfristigen Speichers zum Einsatz. Eine
Flash-EEPROM-Speicheranordnung
besteht aus einer großen
Anzahl von Metalloxid-Silizium-Feldeffekttransistoren mit schwebendem
Gate, die als Speicherzellen auf normale Art und Weise in Zeilen
und Spalten mit der Schaltkreisanordnung für den Zugriff auf einzelne
Zellen angeordnet sind und die Speichertransistoren dieser Zellen
in verschiedenen Speicherzuständen
platzieren. Derartige Speichertransistoren können durch das Speichern einer Ladung
an dem schwebenden Gate programmiert werden. Diese Ladung bleibt
erhalten, wenn die Stromversorgung von der Anordnung entfernt wird. Eine
Ladung zeigt für
gewöhnlich
eine "Null" oder einen programmierten
Zustand an, während
das Fehlen einer Ladung eine "Eins" oder einen gelöschten Zustand
anzeigt. Der Zustand des schwebenden Gates kann erfasst werden,
wenn die Vorrichtung gelesen wird.
-
Diese
Anordnungen können
derart gestaltet sein, dass sie zahlreiche der Operationen ausführen, die
vorher durch andere Speicherausführungen
in digitalen Systemen ausgeführt
worden sind. Zum Beispiel wird der Flash-Speicher als Ersatz für verschiedene
Nur-Lese-Speicher verwendet, wie etwa des grundlegenden Ein-Ausgabe-Startspeichers
(BIOS) eines Computersystems. Die Möglichkeit der Programmierung
eines bestehenden Flash-Speichers bietet gegenüber einem herkömmlicheren EPROM-Speicher
erhebliche Vorteile. In letzter Zeit wurden Flash-Speicher eingesetzt,
um ein kleineres, leichteres funktionales Äquivalent zu einem elektromechanischen
Festplattenlaufwerk vorzusehen. Ein Flash-Speicher eignet sich für diesen
Zweck, da er im Vergleich zu einem elektromechanischen Festplattenlaufwerk
schneller gelesen werden kann und in Bezug auf physische Beschädigungen
weniger empfindlich ist. Flash-Speicher-Festplattenlaufwerke sind besonders
nützlich
für tragbare
Computer, bei denen der Platzbedarf besonders begrenzt ist und das
Gewicht eine große
Rolle spielt.
-
Bevor
ein Flash-Speicher jedoch zum Speichern sich schnell verändernder
Daten verwendet werden kann, müssen
eine Reihe von schwierigen Problemen in Bezug auf das Design des
Flash-Speichers
gelöst
werden. Für
gewöhnlich
ist eine Flash-Speicheranordnung
in Blöcke
unterteilt, die derart verbunden sind, dass alle Speicherzellen
eines ganzen Blocks gleichzeitig gelöscht werden. Danach kann eine
Zelle einzeln zur Datenspeicherung programmiert werden. Da alle
Speichertransistoren eines Blocks der Anordnung zusammengeführt werden,
um gemeinsam gelöscht
zu werden, kann eine Zelle in einem programmierten Zustand nicht
auf den gelöschten
Zustand umgeschaltet werden, bevor nicht der ganze Block der Anordnung
bzw. des Felds gelöscht
worden ist. Somit können
ungültige
Informationen nicht gelöscht
werden, ohne auch alle gültigen Informationen
zu löschen,
die in dem Block verbleiben. Im Vergleich zu anderen Speichern,
bei denen veränderte
Daten direkt an die Stelle der zu ersetzenden Daten geschrieben
werden (im Wesentlichen unverzüglich),
führt dies
bei einer Flash-EEPROM-Speicheranordnung dazu, dass ein zeitaufwändiger Löschprozess
erforderlich ist, bevor eine Überschreibung
erfolgen kann. Wenn sich die Informationen bei einer Dateneingabe
in den Flash-Speicher ändern,
der zum Speichern der sich ändernden Informationen
verwendet wird, werden die neuen Informationen in einen neuen Speicherbereich
geschrieben anstatt die alten Informationen zu überschreiben und die alten
Informationen werden als ungültig
gekennzeichnet. Nachdem danach der Block mit den alten Informationen
gefüllt
und ein ausreichender Abschnitt dieses Blocks als ungültig markiert bzw.
gekennzeichnet worden ist, werden alle in dem Block verbliebenen
gültigen
Informationen in einen sauberen Speicherbereich geschrieben; und
danach kann der ganze Block gelöscht
werden, häufig
durch einen im Hintergrund ausgeführten Prozess.
-
Ein
Flash-Speicher kann inhärent
mit der gleichen Rate gelesen werden wie ein dynamischer Direktzugriffsspeicher
(DRAM), der durch die gleichen Prozesse hergestellt wird, so dass
es den Anschein hat, als könne
der Flash-Speicher als Ersatz oder zur Ergänzung des Hauptspeichers verwendet werden.
Da die Höhe
der erforderlichen Ladung zum Schreiben einer Flash-Vorrichtung
jedoch deutlich größer ist,
erfordert das Schreiben in einen Flash-Speicher mehr Zeit als das
Schreiben in einen DRAM. Da die veränderten Daten ferner nicht
direkt über
ungültige
Daten in einem Block des Flash-Speichers geschrieben werden können, sondern
in einen neuen Bereich geschrieben werden müssen, werden die alten Daten
ungültig
und der Block mit den ungültigen
Daten wird letztendlich gelöscht,
wobei die durchschnittliche Zeit zum Schreiben in einen Flash-Speicher
deutlich länger
ist als die Zeit zum Schreiben in einen DRAM.
-
Obwohl
Flash-Speicher in Computersystemen für viele Zwecke eingesetzt worden
sind, werden sie bis jetzt jedoch nicht als Hauptspeicher oder als
Ergänzung
eines Hauptspeichers eingesetzt. Die Schreibzeit für einen
Flash-Speicher galt als zu lang, um den Einsatz eines Flash-Speichers
als Teil des Hauptspeichers zu ermöglichen.
-
Es
gibt eine Reihe von Gründen
für die
Verwendung eines Flash-Speichers
zumindest als Ergänzung
des Hauptspeichers in einem Computersystem. Die in einem Flash-EEPROM-Speicher
platzierten Daten erfordern keinen neuen Refreshzyklus oder eine
höhere
Leistung für
einen derartigen Zyklus. Da die in dem Flash-Speicher platzierten Daten nicht verloren
gehen, wenn die Stromversorgung eines Systems unterbrochen wird,
können
Prozesse, die normalerweise in dem Nur-Lese-Speicher gespeichert
werden, wie zum Beispiel die grundlegenden Ein-Ausgabe-Anschaltprozesse (BIOS), in
dem Flash-Speicher auf dem Hauptspeicherbus platziert werden, um
ein sehr schnelles Starten vorzusehen. Die BIOS-Prozesse werden
in diesem Fall für
gewöhnlich
in einem Flash-EEPROM oder EPROM-Speicher auf einem so genannten
X-Bus platziert, ein Zusatz des Industry Standard Association (ISA)
Busses, einem Prozessor-basierten System von Intel. Wenn dem Computer
Strom zugeführt
wird, werden die BIOS-Prozesse in dem Flash-Nur-Lese-Speicher auf
dem X-Bus gelesen und über
den ISA-Bus (oder einen anderen sekundären Bus), eine ISA/PCI-Brücke, den
PCI-Bus und eine PCI-Prozessor/Speicher-Brücke in den Hauptspeicher übertragen.
-
Das
U.S. Patent US-A-5.522.076 offenbar einen mit einem Systembus verwendeten
Flash-Speicher, der als ein BIOS-ROM verwendet wird, mit einem Hauptblock,
der ein BIOS speichert, und mit einem Boot-Block, der Minimumprogramme
für die Ausführung der
Initialisierung eines Computerprogramms speichert. Der BIOS ROM
kann über
eine Boot-Block-Überschreibungseinheit
aktualisiert oder überschrieben
werden, die mit einem Erweiterungsbusanschluss des Computersystems
verbunden ist, oder über
eine Diskette, wobei die Diskette oder die Boot-Block-Überschreibungseinheit
ein Überschreibungsprogramm
sowie eine Kopie des BIOS und des Boot-Blocks aufweisen.
-
Das
U.S. Patent US-A-5.530.847 offenbart einen nicht flüchtigen
Speicher, vorzugsweise einen Flash-Speicher, als Bestandteil eines
Speicherteilsystems, das mit einem generischen Bus verbunden ist,
wobei der nicht flüchtige
Speicher dazu dient, eine Boot-Laderoutine, eine Dekomprimierungsroutine,
eine komprimierte Treiberroutine und eine komprimierte Diagnoseroutine
speichert. Die komprimierte Treiberroutine und die komprimierte
Diagnoseroutine werden durch die Dekomprimierungsroutine in einen
Video RAM dekomprimiert, um unter anderem das Testen des System-RAM
zu erleichtern. Die Treiberroutine sieht eine Umgebung an Stelle
des Betriebssystems vor, in der die Diagnoseroutine in dem Video-RAM
ausgeführt
wird. Die Diagnosen werden somit ohne durch ein Betriebssystem vorgesehene BIOS-Hardware-Behandlungsroutinen
durchgeführt. Die
Diagnosen werden optional ausgeführt
und nicht als Bestandteil des normalen Bootens eines PCs.
-
Eine
Eliminierung der Übertragung
der BIOS-Prozesse in den Hauptspeicher würde einen schnellen Systemstart
vorsehen.
-
Ferner
wäre es
nicht erforderlich, die BIOS-Prozesse in dem DRAM-Hauptspeicher
in Funktion eines Schattenspeichers auszuführen, so dass der normalerweise
für diesen
Zweck verwendete Abschnitt des Hauptspeichers nicht erforderlich
ist.
-
Die
Platzierung der BIOS-Prozesse in einer Flash-EEPROM-Speicheranordnung,
die sich als Ergänzung
des Hauptspeichers auf dem Speicherbus befindet, würde einen
weiteren signifikanten Vorteil vorsehen. Das BIOS weist verschiedene
Prozesse auf, welche den Zustand verschiedener Komponenten des Computersystems
testen. Diese BIOS-Prozesse sind für eine Person nützlich,
die einen Computer im Falle eines Ausfalls überprüft. Wenn der Computer jedoch
Probleme aufweist, die es unmöglich
machen, dass die BIOS-Prozesse in den Hauptspeicher geschrieben
werden, so können
die BIOS-Prozesse nicht zur Bestimmung der Art des Problems verwendet
werden. Wenn diese Prozesse auf eine bestimmte Weise in dem permanenten
Speicher auf dem Speicherbus zur Verfügung gestellt werden können, wäre es deutlich
leichter, die Quelle des Problems zu ermitteln, selbst wenn der
Computer ansonsten nicht funktionsfähig ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 6.
-
Die
vorliegende Erfindung wird durch eine Flash-EEPROM-Speicheranordnung
realisiert, die der Verbindung mit einem Speicherbus eines Computers
dient, mit Diagnoseprozessen, die in der Anordnung gespeichert sind,
um den Status des Systems zu testen, um Daten vorzusehen, die Fehlfunktionen
in dem Computer anzeigen, wobei in der Anordnung Zugriffsprozesse
gespeichert sind, um die Diagnoseprozesse aufzurufen, auch wenn
sich der Computer nicht booten lässt,
und wobei Kommunikationsprozesse in der Anordnung gespeichert sind,
um die durch die Diagnoseprozesse erzeugten Ergebnisse zur Verwendung
bei Instandsetzungsarbeiten an dem Computer zu übertragen.
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung ermöglicht
die Datenübertragung
zwischen Hardwarekomponenten eines Computers und einem externen
Host-Computer, so dass ein Wartungstechniker an dem Host-Computer
die Fehlfunktionen in dem Computer diagnostizieren und beheben kann, der
die Flash-EEPROM-Speicheranordnung
aufweist.
-
Die
Aufgaben und Merkmale der vorliegenden Erfindung werden in Bezug
auf die folgende genaue Beschreibung in Verbindung mit den Zeichnungen
besser verständlich,
wobei übereinstimmende Elemente
in den verschiedenen Abbildungen gleiche Bezeichnungen tragen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen zeigen:
-
1 ein
Blockdiagramm eines gemäß der vorliegenden
Erfindung gestalteten Computersystems;
-
2 ein
Diagramm der Funktionen der gemäß der vorliegenden
Erfindung gestalteten Softwareprozesse, die in einem Flash- Speichermodul gespeichert
sind und zur Ergänzung
des Hauptspeichers in dem System aus 1 verwendet
werden;
-
3 ein
Flussdiagramm eines Verfahrens gemäß der vorliegenden Erfindung;
und
-
4 ein
Flussdiagramm, das die Schritte des Verfahrens aus 3 näher veranschaulicht.
-
Bezeichnung
und Nomenklatur
-
Bestimmte
Teile der folgenden genauen Beschreibung sind als symbolische Darstellungen
der Operationen an Datenbits in einem Computerspeicher vorgesehen.
Die Beschreibungen und Darstellungen sind das von Fachleuten auf
dem Gebiet der Datenverarbeitung verwendete Mittel zur wirksamsten
Vermittlung des Wesentlichen ihrer Arbeit an andere Fachleute. Bei
den Operationen handelt es sich um Operationen, die physikalische
Manipulationen physikalischer Größen erfordern.
Für gewöhnlich,
jedoch nicht unbedingt, nehmen diese Größen die Form elektrischer oder
magnetischer Signale an, die gespeichert, übertragen, kombiniert bzw.
verknüpft, verglichen
oder anderweitig manipuliert werden können. Es hat sich gelegentlich
als praktisch erwiesen, überwiegend
begründet
durch die normale Verwendung, diese Signale als Bits, Werte, Elemente,
Symbole, Zeichen, Ziffern bzw. Zahlen oder dergleichen zu bezeichnen.
Diesbezüglich
wird hiermit festgestellt, dass alle diese und ähnliche Begriffe den entsprechenden
physikalischen Größen zugeordnet werden
müssen
und lediglich praktische Bezeichnungen für diese Größen darstellen.
-
Ferner
werden die ausgeführten
Manipulationen häufig
auch als Addieren bzw. Hinzufügen
oder Vergleichen ausgedrückt,
wobei diese Begriffe für
gewöhnlich
mit geistigen Tätigkeiten
verbunden sind, die von einer menschlichen Bedienungsperson ausgeführt werden.
In den meisten Fällen
ist für
die hierin beschriebenen Operationen, die einen Bestandteil der
vorliegenden Erfindung bilden, keine Fähigkeit einer menschlichen
Bedienungsperson erforderlich oder wünschenswert; bei den Operationen
handelt es sich vielmehr um maschinell ausgeführte Operationen. Nützliche
Maschinen bzw. Vorrichtungen zur Ausführung der Operationen der vorliegenden
Erfindung sind unter anderem digitale Allzweckrechner oder ähnliche
Vorrichtungen. In allen Fällen
ist die Unterscheidung zwischen den Verfahrensoperationen für den Betrieb
eines Computers und dem Berechnungsverfahren an sich zu berücksichtigen.
Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
für den
Betrieb eines Computers bezüglich
der Verarbeitung elektrischer oder anderer (z. B. mechanischer,
chemischer) physikalischer Signale zur Erzeugung anderer verlangter
physikalischer Signale.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Nachstehend
wird Bezug auf die Abbildung aus 1 genommen.
Diese veranschaulicht ein gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung konfiguriertes Computersystem 10.
Das veranschaulichte System 10 weist eine Zentraleinheit 11 auf,
welche die verschiedenen Anweisungen ausführt, die vorgesehen sind, um
die Operationen des Systems zu steuern. Die Zentraleinheit 11 ist
für gewöhnlich in
Verbindung mit einem Prozessorbus zu einer Brückenschaltung 14 verbunden,
welche die Zugriffe auf einen Ein-/Ausgabebus 12 steuert,
der Informationen zwischen verschiedenen Bauteilen des Systems 10 transportieren
kann. In Bezug auf die Abbildung aus 1 handelt
es sich bei dem Bus 12 vorzugsweise um einen PCI-Bus oder
einen anderen lokalen Bus, der besonders schnelle Datenübertragungen
vorsehen kann. Der in der Abbildung aus 1 ausgewählte Bus
dient ausschließlich
Veranschaulichungszwecken. In einem typischen System 10 sind
verschiedene Ein-/Ausgabevorrichtungen mit dem Bus 12 als
Bus-Master- und
Bus-Slave-Schaltungen verbunden. In der vorliegenden Abbildung kann
zum Beispiel ein langfristiger Speicher 15 mit dem PCI-Bus 12 als
Bus-Master- oder als Bus-Slave-Schaltung
verbunden werden. Andere Ein-/Ausgabevorrichtungen,
wie zum Beispiel Soundkarten, Bildspeicher und dergleichen können ebenfalls
mit dem Bus 12 verbunden werden.
-
Die
Brückenschaltung 14 ist
ebenfalls über einen
Speicherbus 16 mit dem Hauptspeicher 13 verbunden.
Der Hauptspeicher 13 besteht für gewöhnlich aus einem dynamischen
Direktzugriffsspeicher, der so angeordnet ist, wie dies für den Fachmann
auf dem Gebiet allgemein bekannt ist, um Informationen über einen
Zeitraum zu speichern, während
dem das System 10 mit Strom versorgt wird, wobei bestimmte Systeme
zum Erreichen des gleichen Zwecks auch andere Formen eines Direktzugriffsspeichers
verwenden können,
wie etwa einen statischen Direktzugriffsspeicher. Gemäß der vorliegenden
Erfindung wird ferner eine gemäß der vorliegenden
Erfindung gestaltete Flash-EEPROM-Speicheranordnung 17 an
dem Speicherbus 16 in Verbindung mit dem Hauptspeicher 13 positioniert.
Eine gemäß der vorliegenden
Erfindung gestaltete zweite Flash-EEPROM-Speicheranordnung 17 ist
ebenfalls an dem Bus 12 positioniert, um eine zweite Position
darzustellen.
-
Wie
dies dem Fachmann auf dem Gebiet bekannt ist, erfolgt das Schreiben
in Flash-Speicherzellen deutlich langsamer als das Schreiben in
einen DRAM-Speicher, da die aktuellen Anforderungen wesentlich höher sind
und der Prozess des Schreibens und Löschens wesentlich komplizierter
ist als das Schreiben in einen typischen DRAM-Speicher. Aus diesem
Grund galten Flash-Speicher als ungeeignet zum Speichern von Programmen
und Prozessen, die häufige
Schreibvorgänge
aufweisen. Obwohl die Schreibzeiten im Vergleich zu den Schreibzeiten
für DRAM
lang sind, gibt es allerdings eine Reihe von Gründen für die Verwendung von Flash-EEPROM-Speicherzellen zur
Ergänzung
des Hauptspeichers.
-
Ein
Hauptgrund ist es, Programme und Prozesse vorzusehen, die unmittelbar
zur Ausführung durch
die Zentraleinheit zur Verfügung
stehen, wenn einem Computer Strom zugeführt wird. Wenn eine Flash-EEPROM-Speicheranordnung
auf dem Speicherbus positioniert wird, so dass ein ebenso schneller
Zugriff wie auf den DRAM des Hauptspeichers möglich ist, und wenn ein Anwendungsprogramm
in der Flash-EEPROM-Speicheranordnung platziert wird und aus dieser
ausgeführt
werden kann, so muss das Anwendungsprogramm nicht aus dem Dauerspeicher
aufgerufen und in dem Hauptspeicher platziert werden, um ausgeführt zu werden.
Wenn in ähnlicher
Weise ein ausführbares
Anwendungsprogramm in einer Flash-EEPROM-Speicheranordnung gespeichert
wird, die an einem Bus wie etwa einem PCI-Bus positioniert ist,
so kann die Anwendung aus dem Flash-Speicher ausgeführt werden,
ohne dass sie für
die Ausführung
in dem Hauptspeicher-DRAM platziert werden muss. Dies ermöglicht einen
schnelleren Arbeitsbeginn der Programme und eliminiert im Wesentlichen
Seitenwechsel für
in dem Flash-Speicher gespeicherte Anwendungen.
-
Es
wurden verschiedene Anordnungen gemäß der vorliegenden Erfindung
entwickelt, die es ermöglichen,
dass ein Flash-Speicher,
der ein Programm speichert, an dem Speicherbus platziert wird. Diese
Anordnungen vermeiden die langsamen Schreibvorgänge sowie die zugeordneten
Löschvorgänge des
Flash-Speichers, so dass der Flash-Speicher an dem Speicherbus positioniert
werden kann, ohne die Operationen wesentlich zu verlangsamen.
-
Einige
dieser Anordnungen nutzen die Tatsache, dass die meisten an Codesektoren
eines Anwendungsprogramms ausgeführten
Operationen Leseoperationen darstellen; folglich können die
meisten Zeilen eines Programms aus dem Flash-Speicher mit einer
Rate ausgeführt
werden, die so schnell ist, wie eine mögliche Ausführung aus dem DRAM. Schreiboperationen
von Daten in den Programmraum in dem Flash-Speicher sind für gewöhnlich auf
Operationen beschränkt,
die selten auftreten. Einige Prozesse erzeugen und modifizieren
jedoch Datenstrukturen und in den Codesektoren gespeicherte Variablen. Zum
Beispiel erzeugen BIOS-Prozesse für gewöhnlich Datenstrukturen, die
Hardwareelemente des Computersystems definieren.
-
Bei
einer Anordnung, die eine Ausführung
direkt aus dem Flash-Speicher
ermöglicht,
der an dem Speicherbus oder an einem lokalen Bus angeordnet ist,
sind die dem Flash-Speicher zugeordneten Speicheradressen als ausschließliche Lese-
oder Ausführungsadressen
vorgesehen. Dies ermöglicht
das Lesen und Ausführen
eines in der Flash-EEPROM-Speicheranordnung gespeicherten ausführbaren
Programms auf normale Art und Weise. Wenn jedoch versucht wird,
in die Flash-EEPROM-Speicheranordnung
zu schreiben, wird eine Ausnahme erzeugt, da dieser Bereich der
Flash-EEPROM-Speicheranordnung nur dem Lesen und Ausführen vorbehalten
ist. Eine spezielle Ausnahmebehandlungsroutine wird aufgerufen,
die bewirkt, dass die Speicherverwaltungseinheit die Seite liest,
welche die Adresse aufweist, in die versucht wird zu schreiben und
so dass die Daten in den DRAM-Speicher gespeichert werden. Nachdem
eine Seite aus der Flash-EEPROM-Speicheranordnung in dem DRAM-Speicher platziert
worden ist, wird die Seitentabelle für diesen Abschnitt des Programms
aktualisiert, so dass an diesen Programmabschnitt adressierte Zugriffe
jetzt an den DRAM-Speicher adressiert sind, aus dem die Programmdaten
gelesen, geschrieben und ausgeführt
werden können.
Somit können
die Daten in diesem Programmabschnitt, ob Datenstrukturen, Variablen
oder selbst modifizierender Code, durch Schreiben auf die Seite
in dem DRAM-Hauptspeicher modifiziert werden. Auf diese Weise kann
jedes Programm oder jeder Prozess, der in einer Flash-EEPROM-Speicheranordnung
gepeichert ist, die an dem Speicherbus oder einem lokalen Bus positioniert ist,
ausgeführt
werden, obwohl das Programm oder der Prozess einen Bereich aufweist,
der während
der Operation geschrieben werden muss.
-
Die
vorliegende Erfindung nutzt eine derartige Anordnung, die eine direkte
Ausführung
von Programmen aus dem Flash-Speicher ermöglicht, um die Ausführung von
BIOS-Programmen realisierbar zu machen, die verschiedene Datenstrukturen schreiben.
Wenn der Flash-Speicher an dem Speicherbus platziert wird, kann
auf Prozesse zugegriffen werden, wenn ein operativer DRAM-Speicher existiert,
selbst wenn der Computer nicht funktionsfähig ist. Durch das Speichern
der BIOS-Prozesse in einem Flash-Speicher, der so positioniert ist,
dass er den Hauptspeicher-DRAM an dem Speicherbus ergänzt, kann
auf die BIOS-Prozesse zugegriffen werden, obwohl das Computersystem
Daten nicht über die
PCI- und ISA-Busse
lesen kann. Da die BIOS-Prozesse in einem Flash-Speicher in dem Hauptspeicher implementiert
sind, wird auf sie sofort zugegriffen, wenn Strom zugeführt wird.
Die vorliegende Erfindung ermöglicht
Systemtestprozesse, die einen Bestandteil der BIOS-Prozesse darstellen
oder eines anderen Prozesses, der in dem Flash-Speicher gespeichert
ist, die dazu verwendet werden, den Status der Systemhardware zu
bestimmen. Durch das Vorsehen verschiedener Diagnose- und Ein-/Ausgabeprozesse
ermöglicht
die vorliegende Erfindung die Diagnose und Behebung von Hardwareproblemen, auch
wenn das Betriebssystem nicht aufgerufen werden kann. Durch die
Ergänzung
der normalerweise verfügbaren
BIOS Prozesse sieht die Erfindung die Möglichkeit vor, einem Anwender
mehr Daten zum Hardwarestatus zu liefern (oder über ein Modem an einen Servicetechniker),
und sie ermöglicht
einem Anwender (oder Techniker) die Manipulation der Hardware des
Systems zur Diagnose sowie häufig zur
Behebung von Fehlfunktionen.
-
Obwohl
der Flash-Speicher, der diese Diagnoseprozesse aufweist, an einem
lokalen Bus wie etwa dem PCI-Bus positioniert ist, kann trotzdem
auf die ausführbaren
Diagnoseprozesse zugegriffen werden, obwohl das Computersystem nicht
in der Lage ist, Daten über
den sekundären
Bus zu lesen, solange der Pfad über
den PCI-Bus unversehrt bleibt.
-
Die
Anordnung der in Verbindung mit einem Computersystem vorgesehenen
BIOS-Testroutinen ist für
gewöhnlich
so gestaltet, dass Werte zurückgegeben
werden, die den Status der Komponenten des Systems anzeigen, die
normalerweise verwendet werden, um den Computer beim Starten einzurichten.
Viele dieser Werte sind nur zur Diagnose von Hardwareproblemen für eine Person
mit technischer Befähigung
nützlich,
und auf sie kann nur zugegriffen werden, wenn der Computer eine
entsprechende besondere Hardware aufweist. Selbst eine Person, mit derartigen
Fähigkeiten,
kann zusätzliche
Diagnoseroutinen mit erheblicher Detailgenauigkeit benötigen, um
den Werten eine diagnostische Bedeutung zu geben. Da die meisten
Anwender nicht die erforderlichen Kenntnisse besitzen, um die durch
ein Diagnoseprogramm gelieferten Ergebnisse verstehen zu können, liefern
die meisten Hersteller mit den von ihnen verkauften Computern keine
Diagnoseprozesse. Folglich sind die durch die BIOS-Prozesse erzeugten Werte
für die
meisten Anwender in Bezug auf die Diagnose von Hardwareproblemen
nicht besonders nützlich.
In jedem Fall stehen die durch die zurzeit erhältlichen BIOS-Prozesse erzeugten
Ergebnisse nicht zur Verfügung,
wenn das System das entsprechende Betriebssystem nicht bootet. Dies
hat die Wartung und Instandsetzung von Computern sehr teuer gestaltet.
-
Für gewöhnlich gewähren Hersteller
nach dem Kauf eines Computers Garantieleistungen für die Dauer
von einem bis drei Jahren. Ein Anwender ruft unter einer genannten
Telefonnummer für
den Service an, wenn im Rahmen der Garantie ein Problem mit dem
Gerät auftritt.
Dies startet für
gewöhnlich
einen umständlichen
Prozess, wobei ein Techniker zuerst ermittelt, in wie weit der Anwender
das Problem erkannt hat, und wobei der Techniker den Anwender danach
im Gespräch
durch verschiedene Schritte führt,
um die zur Verfügung
stehenden Fakten zu ermitteln. Häufig
wird ein Problem auf diese Weise nicht gelöst und der Anwender oder ein
Servicetechniker muss das Gerät
zur Instandsetzung in eine Reparaturstätte bringen, oder ein Techniker muss
versuchen, das Problem am Einsatzort des Geräts zu beheben. Die Kosten für diese
Dienstleistung haben mit verbesserten Fähigkeiten von Personal Computern
zugenommen.
-
Wenn
die Diagnoseprozesse im Gegensatz dazu einem Anwender im Rahmen
des Abschnitts der Einschaltinitialisierung (POI für power-on
initialization) der BIOS-Prozesse vorgesehen werden würden, und
wenn die BIOS-Testprozesse und die Diagnoseprozesse auch ausgeführt werden
könnten, wenn
sich das System nicht booten lässt,
so könnte der
Anwender diese Informationen an einen Techniker weiterleiten und
von diesem Zeit wie Kosten sparende Anweisungen darüber erhalten,
wie sich eine große
Anzahl von Hardwareproblemen lösen
lassen. In einem Ausführungsbeispiel
der vorliegenden Erfindung werden die ergänzenden Diagnoseprozesse automatisch
ausgeführt,
wenn während
dem Hochfahren ein Fehler auftritt, und wobei dem Benutzer angezeigt
wird, dass ein Problem besteht und welche Schritte der Anwender
vornehmen sollte. Dazu kann ein Anruf bei dem Servicetechniker zählen, um
diesem das Problem und die Ergebnisse der Diagnoseprozesse zu erläutern, oder
um den Servicetechniker über
ein Modem oder einen Netzanschluss mit dem Gerät zu verbinden. Letztere Option
würde es
dem Techniker ermöglichen, über eine
derartige Verbindung Tests vorzunehmen, und zwar unter Verwendung
der in dem Gerät
in Verbindung mit dem Problem zur Verfügung stehenden Diagnoseprozesse, und
wobei das Problem möglicherweise
unter Verwendung von Softwareprozessen gelöst werden kann, die über das
von dem Techniker verwendete System zur Verfügung stehen.
-
Die
Abbildung aus 2 zeigt ein Blockdiagramm eines
gemäß der vorliegenden
Erfindung gestalteten Softwaresystems. Das System weist einen BIOS-Treiber-Kernel 21 und
eine Mehrzahl von BIOS-Gerätetreibern 23 auf,
die jeweils in einer Flash-EEPROM-Speicheranordnung
(wie etwa der Anordnung 17 aus 1) an dem
Speicherbus eines Computers gespeichert sind. Der Kernel 21 und
die Treiber 23 können
Bestandteil der BIOS-Funktionen sein,
die in dem Flash-Speicher gespeichert sind oder getrennt von diesem,
wobei sie dennoch in dem gleichen Flash-Speicher gespeichert sind.
Der Kernel 21 und jeder der Gerätetreiber sind auch dann funktionsfähig, wenn
das Betriebssystem des Computers nicht gebootet werden kann, so
dass sie zur Diagnose und Korrektur der Funktionen des Computers
verwendet werden können.
Eine Möglichkeit
der Unterstützung
der Funktion des Kernel und der Gerätetreiber wird aus der Abbildung
aus 3 und die folgenden Beschreibungen deutlich.
-
Wenn
dem Computersystem Strom zugeführt
wird, werden die in dem Flash-Speicher gespeicherten BIOS-Prozesse
aufgerufen und das System beginnt zu booten. Wenn das System ordnungsgemäß arbeitet,
wird letztendlich das Betriebssystem geladen und das System wird
in den betriebsfähigen Zustand
versetzt. Wenn sich das System nicht booten lässt, stehen die BIOS und sonstigen
Diagnoseprozesse in dem Flash-Speicher an dem Speicherbus zur Verfügung und
werden in Abwesenheit des üblichen
Betriebssystems verwendet. In einem Ausführungsbeispiel werden die BIOS-Diagnoseprozesse
durch einen Systembootfehler aufgerufen und können einem Anwender den Fehler
anzeigen und diesem vorschlagen, die Diagnoseprozesse durch die
Auswahl einer Bildschirmoption aufzurufen. In einem Ausführungsbeispiel
können
die BIOS-Diagnoseprozesse dem Anwender den Fehler anzeigen und in
einem Versuch zur Problembehebung automatisch auf die Diagnoseprozesse
umschalten oder diese ausführen.
In jedem Fall ermöglicht
das Vorhandensein der ergänzten
Diagnoseprozesse in dem Speicher einem Anwender oder einem Techniker
den Einsatz der Diagnoseprozesse in dem Flash-Speicher zum Diagnostizieren
der Hardwareprobleme, auch wenn sich das System nicht booten lässt.
-
Der
Kernel 21 weist nur einige wenige einfache Funktionen auf,
die er selber ausführen
kann. Er kann Kernel-E/A- Serviceprozesse 24 verwenden,
um eine Tastatur-, Disketten- oder
eine Video-Ein-/Ausgabe anzufordern, die einem Anwender die Manipulation
des Systems ermöglicht,
wenn diese Funktionen nicht gegeben sind, die normalerweise durch
das Betriebssystem vorgesehen werden. In einem Ausführungsbeispiel
rufen diese Prozesse die normalen BIOS-Prozesse zur Realisierung
dieser Funktionen auf. Die Hauptfunktion des Kernel 21 ist
es jedoch, eine Reihe von Kernel-Serviceprozessen 25 vorzusehen,
die betrieben werden können,
um Dienste für die
Mehrzahl von BIOS-Gerätetreibern 23 vorzusehen.
Im Allgemeinen zählen
zu den Kernel-Serviceprozessen 25 Prozesse, die die Datenübertragung von
durchgeführten
Diagnosen erleichtern, sowohl zwischen den Systemkomponenten sowie
Komponenten außerhalb
des Systems.
-
Jeder
BIOS-Gerätetreiber 23 (nur
einer ist im Detail abgebildet) ist für gewöhnlich einer bestimmten Eingabe-/Ausgabe-Hardwarevorrichtung 29 zugeordnet.
Ein derartiger Treiber wird für
gewöhnlich von
dem Hersteller oder Serviceprovider der jeweiligen Hardwarevorrichtung
geschrieben und weist Prozesse zur Verwendung in Verbindung mit
dieser Hardwarevorrichtung auf. Jeder Gerätetreiber 23 sieht
einen Verteilerprozess 26 vor, der eine Standardschnittstelle
zur Interaktion durch den speziellen Hardwaretreiber 23 mit
den Kernel-Serviceprozessen 25 erzeugt. Die Kernel-Serviceprozesse 25 können einen
Gerätetreiber 23 adressieren,
indem ein Befehl an den Verteilerprozess 26 gerichtet wird.
Im Betrieb ruft einer der Kernel-Serviceprozesse 25 in serieller
Reihenfolge die Verteilerprozesse 26 jedes der BIOS-Gerätetreiber 23 ab,
die vorgesehen sind, um Befehle von den Treibern 23 anzufordern.
Ein Verteilerprozess 26 spricht auf eine Befehlsanforderung
von dem Kernel an, indem Befehle zur Ausführung für die Kernel-Serviceprozesse 25 vorgesehen werden.
Der Verteilerprozess 26 empfängt die Befehlsfunktionen zur
Ausführung über einen
Befehlsprozessor 27. Der Befehlsprozessor 27 setzt über eine
zugeordnete Hardwarevorrichtung 29 erzeugte Befehle in
Befehle um, welche die Kernel-Serviceprozesse 25 verstehen,
so dass der Kernel die begrenzte Anordnung von verfügbaren Befehlen
ausführen
kann. Der Verteilerprozess 26 überträgt die Befehle in einen Befehlspuffer,
auf den der Kernel zugreifen kann. Für gewöhnlich handelt es sich bei
einem derartigen Puffer um eine Datenstruktur, die durch den Kernel
in dem Direktzugriffsspeicher festgelegt und durch die Aufrufparameter
identifiziert wird.
-
Jeder
der Gerätetreiber 23 weist
ferner einen Paketprozessor 28 auf, der direkt mit der
Hardwarevorrichtung 29 kommuniziert und (abhängig von
der Vorrichtung 29) Pakete von der Hardwarevorrichtung 29 zur Übertragung
an den Befehlsprozessor 27 empfängt. Der Paketprozessor 28 analysiert
diese Pakete und leitet die Daten an den Befehlsprozessor 27 weiter.
Der Befehlsprozessor 27 analysiert die Daten in rohe Funktionsbefehle
und benachrichtigt den Verteiler 26, dass ein Befehl zur
Verfügung
steht. Wenn die Kernel-Serviceprozessoren 25 den Verteiler 26 abrufen,
um zu bestimmen, ob der Gerätetreiber 23 einen
auszuführenden
Befehl aufweist, wobei der Verteiler 26 den Befehlspuffer
mit dem Befehl lädt und
den Befehl zur Ausführung
an den Kernel leitet.
-
Wenn
der erste Zugriff auf den Diagnosekernel 21 erfolgt, legen
die Kernel-Serviceprozesse 25 Datenstrukturen fest, welche
die Adressen der verschiedenen Dienste auf unterer Ebene aufweisen, welche
von dem Kernel über
dessen E/A-Serviceprozesse
angeboten werden, einer Datenbank der bestehenden BIOS-Diagnosetreiber 23 und
den Adressen der Verteiler 26 für die Treiber 23.
Der Kernel kann auch Datenstrukturen verwalten, die Stapel und Datenbereiche
für die Übertragung
von Befehlen und Daten definieren. Wenn die Kernel-Serviceprozesse 25 zum
ersten Mal aufgerufen werden, bewirkt ein Prozess die Suche der
Datenbank der BIOS-Diagnosetreiber 23,
um zu bestimmen, welche BIOS-Gerätetreiber
existieren sowie die Adressen der Verteilerprozesse 26 für die Treiber.
Danach übermitteln
die Kernel-Serviceprozesse 25 einen Initialisierungsbefehl
zur Einrichtung jedes Gerätetreibers 23.
Als Reaktion auf diesen Initialisierungsbefehl erzeugt jeder Verteiler 26 Daten,
welche den BIOS-Gerätetreiber 23 für die durch
die Kernel-Serviceprozesse 25 verwaltete
Datenstruktur definieren. Diese Daten können die Anforderungen des
BIOS-Gerätetreibers 23 für Daten,
Stapel, Code und Unterbrechungen ebenso aufweisen wie andere Daten,
die für
den Betrieb des BIOS-Gerätetreibers 23 und
die zugeordnete Hardware 29 erforderlich sind. Als Reaktion
auf den Initialisierungsbefehl kann der Verteilerprozess 26 auch
die Initialisierung der Hardware 29 (wie etwa eines Modems)
bewirken, welcher der BIOS-Gerätetreiber 23 zugeordnet
ist, so dass die Hardware 29 betrieben werden kann.
-
Nachdem
die Initialisierung abgeschlossen ist, rufen die Kernel-Serviceprozesse 25 den
Verteiler jedes der BIOS-Gerätetreiber 23 ab.
-
Die
Kernel-Serviceprozesse 25 können ferner einen GetStatus-Befehl an jeden der
BIOS-Gerätetreiber 23 senden,
um den Status der Hardware 29 zu bestimmen, die dem BIOS-Gerätetreiber 23 zugeordnet
ist. Der Befehl GetStatus bewirkt, dass der Verteiler 26 die
physikalischen Eigenschaften der Hardware 29 bestimmt,
so dass Probleme mit der Hardware erkannt und Daten an den Kernel
zurückgeführt werden
können,
die den Status anzeigen.
-
Jeder
der Gerätetreiber 23 kann
interne Diagnoseprozesse aufweisen, die speziell vom Hersteller
oder Gerätezulieferer
entwickelt worden sind, die durch einen Anwender initiiert werden
können,
um Statusdaten als Reaktion auf einen Befehl GetStatus zu sichern,
um die Bestimmung zu unterstützen,
wo ein Problem existiert und wie das Problem gelöst werden kann. Durch die Auswahl
der Kernel-Serviceprozesse 25 sieht der Anwender einen
Zugriff auf diese Diagnoseprozesse jedes Gerätetreibers 23 vor. Wenn
ein Anwender den Befehl GetStatus verwendet, verwendet der Treiber 23 diese
internen Diagnoseprozesse zur Ausführung umfassender Tests zur Bestimmung
von Fehlfunktionen sowie zum Vorsehen von Diagnosevorschlägen. Die
Diagnoseprozesse können
ferner Prozesse aufweisen, die es versuchen, entdeckte Probleme
zu beheben.
-
Die
Kernel-Serviceprozesse 25 können auch einen Befehl Connect
(Verbinden) an jeden der BIOS-Gerätetreiber 23 senden,
um es zu bewirken, dass eine einem bestimmten Treiber 23 zugeordnete Hardware 29 mit
einem externen Host verbunden wird. Der Verbindungsprozess ist für gewöhnlich von dem
Kernel isoliert und wird als spezielle Befehle in einem Bereich
des BIOS-Gerätetreibers 23 gespeichert,
wie dies in der Abbildung aus 2 durch
die internen BDD-Befehle dargestellt ist. Wenn der Verteiler 26 zum
Beispiel für
einen Modemgerätetreiber den
Verbindungsbefehl empfängt,
kann er einen Prozess der internen BDD-Prozesse ausführen, der
eine Verbindung mit einem Servicetechniker an einem Host-Computer
herstellt, der sich an einem Standort eines Herstellers befindet,
wobei ein Teil des Computers die Probleme als Reaktion auf die Diagnoseprozesse anzeigt.
Als Reaktion auf die versuchte Ausführung eines Connect-Befehls
sollte der Verteiler 26 des BIOS-Gerätetreibers 23 einen
Wert an den Kernel zurückführen, der
die Ergebnisse eines Versuchs anzeigt, wie etwa: Verbindung hergestellt,
belebt, Gerät
nicht vorhanden, Verbindung unterbrochen oder dergleichen. Dieser
Befehl ermöglicht
eine Verbindung des Computers mit einem Servicetechniker, der danach
die in Verbindung mit dem Computer bestehenden Probleme von einem
entfernten Standort aus bestimmen kann.
-
Zur
Erleichterung der Verwendung einer derartigen Verbindung kann der
Kernel einen Befehl PutDataStream senden, um es zu bewirken, dass
der BIOS-Gerätetreiber 23 Daten über ein
Modem oder eine LAN-Verbindung an einen Host überträgt. Ein ähnlicher Befehl GetDataStream
von dem Kernel an einen BIOS-Gerätetreiber 23 ermöglicht es,
dass der Kernel Daten von einem BIOS-Gerätetreiber erhält, und
zwar zur Übertragung
an einen bestimmten anderen Abschnitt des Computersystems, um Fehlfunktionen
zu korrigieren.
-
Zur
Unterstützung
derartiger Übertragungen kann
ein BIOS-Gerätetreiber 23 den
Kernel zur Übertragung
von Systemstatusdaten an den anfordernden BIOS-Gerätetreiber 23 unter
Verwendung eines an den Kernel gerichteten Befehls GetSystemStatus auffordern.
In ähnlicher
Weise bewirkt ein an den Kernel gerichteter Befehl GetSystemInfo,
dass der Kernel Systeminformationen an den anfordernden BIOS-Gerätetreiber 23 überträgt. Ein
Befehl PutString von einem BIOS-Gerätetreiber 23 bewirkt,
dass die Kernel-E/A-Serviceprozesse 24 einen Datenstring
an einen Videoanschluss senden, so dass dieser einem Anwender angezeigt
wird. Ein Befehl Exit an den Kernel initiiert einen Prozess, der
einen Anwender zu einem Reboot auffordert, sobald die Fehlfunktion
behoben ist.
-
Bestimmte
zusätzliche
Befehle, die der Kernel ausführen
kann, unterstützen
die Diagnose sowie die Korrektur von Systemfehlfunktionen zusätzlich. Zum
Beispiel kann ein Befehl ReadSector verwendet werden, um es zu bewirken,
dass der Kernel Daten aus einem Speicherlaufwerk zu Testzwecken
list; und ein Befehl WriteSector kann verwendet werden, um Daten
durch Daten zu ersetzen, die von einem Host-System oder einem nicht
flüchtigen
Speicher vorgesehen werden.
-
Es
gibt eine Reihe möglicher
Prozesse, die unter Verwendung des in der Abbildung aus 2 veranschaulichten
Systems implementiert werden können.
Ein in der Abbildung aus 3 veranschaulichter typischer
Prozess kann auf die folgende Art und Weise ausgeführt werden.
Wenn dem System Strom zugeführt
wird, wird der BIOS-Einschaltinitialisierungsprozess aktiviert und überträgt die Ausführung auf
den Diagnosekernel, um eine Reihe von grundlegenden Systemtests
einzuleiten. In einem Ausführungsbeispiel
können
diese sehr einfach sein, wie etwa die Ausführung eines BIOS-Statustests,
die in der Vergangenheit verwendet worden sind. Zum Beispiel kann
der Kernel die die Größe des verfügbaren Direktzugriffsspeichers
bestimmen, ob der Speicher arbeitet und ob der Code ausgeführt werden kann.
Wenn das System die Tests besteht, wird das Betriebssystem automatisch
gebootet und das System arbeitet.
-
Die
Kernel-Serviceprozesse 25 können auch oder alternativ jeden
der Hardware-Gerätetreiber 23 auffordern,
eine umfassendere Reihe von Diagnosetests auszuführen, die Statuswerte zurückgeben,
um sicherzustellen, dass die verschiedenen Geräte ordnungsgemäß arbeiten.
Zum Beispiel können
diese Tests den Status von Systemeinstellungen zurückführen sowie
die verschiedenen Peripheriegeräte, wie
etwa Rotationsdisks, die Tastatur, Video, Netzwerkanschlüsse und
Modems. Die Ergebnisse jeder Reihe von Diagnosetests werden mit
ihrem Auftreten protokolliert. Der Kernel leitet danach die nächste Statusbestimmung
ein und protokolliert die Ergebnisse dieses Tests. Wenn die Vorrichtungen 29 in ähnlicher
Weise diese Tests bestehen, so wird das Betriebssystem automatisch
gebootet und das System arbeitet.
-
Bevor
die Kernel-Serviceprozesse 25 die Ausführung etwaiger Diagnoseprozesse
durch die Gerätetreiber 23 bewirken
können,
werden eine Reihe von Operationen in ähnlicher Weise ausgeführt, wie
dies in der Abbildung aus 4 dargestellt
ist. Die Kernel-Serviceprozesse 25 bestimmen zuerst, welche
Systemressourcen zur Verfügung
stehen und was jeder Gerätetreiber 23 für die Durchführung seiner
Tests benötigt.
Ein bestimmter Treiber 23 kann zum Beispiel zwei Megabyte
an Direktzugriffsspeicher voraussetzen, während ein anderer Treiber einen
Speicher von einem Megabyte benötigt.
Nachdem das Ausmaß der
verfügbaren
Ressourcen bestimmt worden ist, legen die Kernel-Serviceprozesse 25 die
vorstehend genannten Datenstrukturen als die fest, in denen E/A-Dienste,
Gerätetreiber
und Verteileradressen aufgezeichnet werden. Danach werden die Adressen
der Verteilerprozesse 26 der Treiber 23 bestimmt,
und jeder der Treiber 23 wird initialisiert. Die Kernel-Serviceprozesse 25 rufen
danach die Treiber 23 sequentiell für den Empfang von Befehlen ab.
An diesem Punkt können
die Kernel-Serviceprozesse 25 einen Befehl GetStatus an
die Treiber 23 senden, um den Status der zugeordneten Vorrichtungen 29 zu
bestimmen.
-
Wenn
die Gerätetreiber 23 freigegeben
sind, um den Gerätestatus
zu bestimmen und die Geräte 29 die
Tests bestehen, so wird das Betriebssystem automatisch gebootet
und das System arbeitet.
-
Wenn
das System einen dieser anfänglichen Tests
nicht besteht, kann der jeweilige Treibe 23 den Kernel
anweisen, eine Nachricht anzuzeigen, die den Fehler erläutert, möglicherweise
Lösungen
für das Problem
vorschlägt
und den Anwender fragt, ob er versuchen möchte, das Problem zu beheben.
Einer der Gerätetreiber 23 kann
zum Beispiel so gestaltet sein, dass er Tests durchführt, um
den Status eines elektromechanischen Festplattenlaufwerks zu bestimmen.
Dieser Gerätetreiber 23 kann
verschiedene grundlegende Diagnoseroutinen ausführen, einschließlich des
Lesens der Master-Partitionstabelle. Beim Lesen der Partitionstabelle
kann der Treiber 23 bestimmen, dass ein Eintrag korrumpiert
ist. Der Gerätetreiber 23 antwortet
auf diese Bestimmung, indem die Kernel-E/A-Serviceprozesse 24 aufgefordert werden,
dem Betrachter das Problem anzuzeigen und möglicherweise Lösungen vorzuschlagen.
-
Wenn
ein Anwender den Vorschlag auswählt,
dass ein Versuch zur Instandsetzung des Laufwerks erfolgen soll,
so ruft der Kernel das Diagnose-Setup-Programm zum zweiten Mal auf.
Nachdem das Setup-Programm ausgeführt worden ist, können die
Kernel-Serviceprozesse 25 jeden
der Gerätetreiber 23 anweisen,
umfassendere Tests der Systemvorrichtungen auszuführen, um
den Zustand der zugeordneten Hardwarevorrichtung im Detail zu bestimmen.
Die speziellen durch die Gerätetreiber 23 ausgeführten Prozesse
sind von der jeweiligen durch den Hersteller vorgesehenen Implementierung
abhängig.
-
Die
Ergebnisse dieser umfassenderen Tests können eine Reihe verschiedener
Ergebnisse erzeugen. Zum Beispiel kann der Treiber den Kernel auffordern,
auf dem Display "Laufwerkfehler.
Möchten Sie
den Fehler beheben?" anzuzeigen.
Eine Antwort "Nein" würde ein
Verlassen der Diagnoseprozesse bewirken. Eine Antwort "Ja" kann bewirken, dass
der Treiber einen Prozess ausführt,
der dem Anwender danach die Option anbietet, den Computer auszuschalten
und das Betriebssystem durch eine archivierte Kopie zu ersetzen.
-
Andere
Diagnoseprozesse können
einem Anwender die Option anbieten, mit einem Softwarehersteller
online zu gehen, um verschiedene Programme zu ersetzen. Wenn eine
derartige Option ausgewählt
wird, würde
der jeweilige Treiber den Kernel aufrufen, um den Befehl Connect
auszuführen,
um eine Verbindung mit dem Hersteller des Betriebssystems unter
Verwendung der in dem Gerätetreiber
für das
Modem gespeicherten Daten vorzusehen. Nachdem die Verbindung mit
dem Hersteller hergestellt worden ist, könnte ein Techniker die dem Kernel
und den Gerätetreibern
zur Verfügung
stehenden verschiedenen Befehle verwenden, um die Festplatte abzufragen
und um das Problem mit dem Betriebssystem zu bestimmen. Ein Techniker
kann unter Verwendung der Befehle ReadSector des Treibers das Laufwerk
prüfen
und danach unter Verwendung des Befehls PutDataStream die Daten
zurück lesen.
Wenn der korrumpierte Abschnitt eines Laufwerks lokalisiert worden
ist, kann unter Verwendung des Befehls GetDataStream eine korrigierte
Version in dem Laufwerk platziert werden, wobei dies dem Kernel
ermöglicht,
Daten von einem BIOS-Gerätetreiber
zur Übertragung
an das Laufwerk zu erhalten. Der Befehl WriteSector an den Kernel
würde danach die
neue Version der Software in dem Laufwerk platzieren. Die Operation
würde erneut über einen
Befehl Exit an den Kernel abgeschlossen werden, der bewirkt, dass
das Display ein neuerliches Booten verlangt. Hiermit wird festgestellt,
dass diese Einrichtung verwendet werden kann, um Versionen der Diagnoseprozesse
in jedem der Gerätetreiber 23 zu
aktualisieren und zu ersetzen.
-
Erdenklich
sind weitere Operationen mit einer ähnlichen Funktionsweise zur
Unterstützung
der Diagnose und der Instandsetzung eines Computersystems. Zum Beispiel
können
die Diagnoseprozesse über
das Betriebssystem zur Verfügung
gestellt werden sowie in der Betriebsphase vor dem Betriebssystem.
Dies würde
die Anforderung zum Speichern redundanter Prozesse zur Diagnose
und Instandsetzung des Computers reduzieren. Die Möglichkeit,
die Diagnoseprozesse schreiben zu können, ermöglicht eine individuelle und
online ausgeführte
Aktualisierung einzelner Diagnosetreiber, wenn diese Möglichkeit
gewünscht
wird.
-
Die
vorliegende Erfindung wurde vorstehend in Bezug auf ein bevorzugtes
Ausführungsbeispiel beschrieben,
wobei der Fachmann auf dem Gebiet jedoch feststellen wird, dass
verschiedene Modifikationen und Abänderungen möglich sind, ohne dabei vom
Umfang der vorliegenden Erfindung abzuweichen. Zum Beispiel wäre es möglich, die
Funktionen des Diagnosekernels unter Verwendung von Hardware oder
Firmware auch für
einen Benutzer zugänglich
vorzusehen, obwohl sich ein Computer nicht booten lässt. Ferner
können
zur Ausführung
der vorliegenden Erfindung auch andere Arten von nicht flüchtigen
Speicherzellen zusätzlich
zu Flash-EEPROM-Speicherzellen verwendet werden. Die vorliegende
Erfindung ist somit ausschließlich
durch die anhängigen
Ansprüche
definiert.