Computerhardware: BIOS: CMOS

Was ist das „CMOS“? Bearbeiten

Seit dem 286er ist das „CMOS-RAM“ Bestandteil jedes PCs. CMOS ist die Abkürzung von Complementary Metal Oxide Semiconductor und bezeichnet eine extrem stromsparende Halbleitertechnologie. Wird ein statischer RAM mit dieser Technologie gefertigt, so wird dieser als CMOS-RAM bezeichnet. Das CMOS-RAM nur als CMOS zu bezeichnen, ist also falsch.

Seit dem 286er gibt es in jedem PC einen Uhrenschaltkreis, den MC146818. Dieser RTC (Real Time Clock) ist ebenfalls in CMOS Technologie gefertigt und wird ebenso wie das CMOS-RAM von einer Batterie oder einem Miniakku versorgt, während der PC ausgeschaltet ist.

Es war naheliegend, die beiden in CMOS - Technologie gefertigten Schaltkreise zu integrieren. Seit dem 386er stecken CMOS - RAM und RTC im gleichen Chip, manchmal sogar gemeinsam mit einem winzigen Akku.

Was wird im CMOS-RAM gespeichert? Bearbeiten

Der CMOS - RAM wird gebraucht, damit der Hersteller des PCs wichtige Informationen über die Hardware speichern kann. Der Anwender kann das BIOS-Setup-Programm benutzen, um die gespeicherten Werte zu lesen und zu verändern. Der CMOS-RAM befindet sich außerhalb des normalen Adress-Bereiches und kann keinen direkt ausführbaren Code enthalten. Der CMOS-RAM-Speicher hat technisch bedingt eine maximale Größe von 128 Bytes. Das nachstehende BASIC-Programm liest die Bytes von 0 bis 127 (hexadezimal: 7Fh) aus dem CMOS-RAM und zeigt diese am Bildschirm an. Um ein Byte aus dem CMOS-RAM zu lesen, ist es nötig, ein BASIC Kommando OUT an Port 70h zu senden, mit Angabe der CMOS-Adresse, die gelesen werden soll. Durch ein Kommando INP von Port 71h erhält man die gewünschten Informationen.

Das nachstehende BASIC-Programm liest 128 CMOS-Bytes aus und zeigt diese am Bildschirm an.

10 CLS       
20 FOR x = 0 TO &H7F 
30 OUT &H70, x
40 PRINT USING "\ \"; HEX$ (INP(&H71));
50 NEXT x
60 PRINT " " 

Die ersten zehn Byte sind für den Uhrenschaltkreis MC146818 reserviert: Die Werte von Sekunden, Minuten, Stunden, Tag, Monat, Jahr und Wochentag werden vom RTC jede Sekunde aktualisiert. Weitere zehn Byte sind für einen „Alarm“ vorgesehen: Man kann einen Alarmzeitpunkt festlegen, an dem der PC automatisch eingeschaltet werden soll. Die nächsten vier Byte sind für Statusinformationen vorgesehen. Die restlichen 104 Byte sind je nach BIOS - Hersteller sehr unterschiedlich belegt.

Wie kommen die Anfangswerte in den CMOS-RAM? Bearbeiten

Die Werte im CMOS-RAM sind mit einer Kontrollsumme geschützt. Der Power On Self Test errechnet bei jedem Start die Checksumme und vergleicht sie mit der gespeicherten Checksumme. Wenn durch einen Zufall ein Byte verändert worden ist oder durch eine schwache Batterie der gesamte Speicherinhalt verloren gegangen ist, kopiert das BIOS einen Satz Anfangswerte in den CMOS-RAM. Die Tabelle mit den Anfangswerten, den „Setup Defaults“, wird vom Hersteller der Hauptplatine zusammengestellt und vorsorglich im BIOS-ROM bereitgestellt. In manchem BIOS gibt es noch eine zweite Tabelle „Fail-Safe Defaults“ für Notfälle, z. B. wenn der PC nicht stabil läuft: In dieser Tabelle sind Beschleunigungsfunktionen abgeschaltet und der Speicherzugriff ist verlangsamt. Mit diesen Werten kann der PC eventuell „wiederbelebt“ werden.

Falls sich das BIOS-Setup noch starten lässt, können Sie den CMOS - Speicher manuell auf diese Anfangswerte zurücksetzen. Suchen Sie dazu im BIOS-Menü nach „Exit Options“ o. Ä.

CMOS-RAM löschen Bearbeiten

Das Löschen bzw. Zurücksetzen aller Werte ist beispielsweise nötig, wenn Sie das BIOS-Setup-Passwort vergessen haben. Es kann auch nötig werden, wenn nach Übertaktungs-Experimenten der PC nicht mehr bootet. Wenn Sie Glück haben, wird das Problem vom BIOS erkannt und das BIOS stellt nach fünf erfolglosen Startversuchen die Standardeinstellungen wieder her. Und wenn nicht?

Dann müssen Sie den PC vom Stromnetz trennen (Stecker ziehen), bei einem Notebook müssen Sie auch den Akku herausnehmen. Schrauben Sie den PC auf und nehmen Sie die BIOS-Batterie heraus, die das CMOS mit Strom versorgt. Warten Sie eine bis zehn Minuten, bis die letzten Kondensatoren des PCs ihre Ladung verloren haben (in einem Extremfall hat es einmal zwei Stunden gedauert, bis alle 128 Byte des CMOS-RAM gelöscht waren). Setzen Sie die CMOS-Batterie wieder ein. Wenn Sie den PC starten, sollte das BIOS beim POST feststellen, dass die CMOS-Checksumme falsch ist und das CMOS-RAM mit den Werten des „Setup Defaults“ füllen. Doch verlassen Sie sich nicht darauf: Starten Sie das BIOS-Setup und setzen Sie alle Werte auf „Setup Defaults“. Stellen Sie anschließend Datum, Uhrzeit, Boot Sequenz und andere wichtige Werte neu ein und speichern Sie die Einstellungen. Nun sollte der PC starten − ohne nach einem BIOS-Passwort zu fragen.