Computerhardware: BIOS: CMOS

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Das „CMOS-RAM“ ist Bestandteil jedes PC seit dem 286er. 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 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-Gehäuse, in seltenen Fällen sogar gemeinsam mit der Batterie.

Der CMOS RAM wird verwendet, damit der Hersteller des PC wichtige Informationen über die Hardware speichern kann. Der Anwender kann das BIOS-Setup-Programm benutzen, um Werte lesen und verändern zu können. Der CMOS RAM befindet sich außerhalb des normalen Adress-Bereiches und kann keinen direkt ausführbaren Code enthalten. Er ist erreichbar durch IN und OUT Kommandos über Port 70h und 71h. Um ein CMOS Byte zu lesen, ist ein OUT Kommando an Port 70 nötig, mit Angabe der Adresse, die gelesen werden soll. Durch ein IN Kommando von Port 71h erhält man die gewünschten Informationen.

Der CMOS RAM Speicher hat durch die Bitbelegung des Port 70h eine obere Grenze von 128 Bytes. Nur die Bits 0-6 werden für die Adresse verwendet, Bit 7 wird benutzt, um NMIs ein-(0) oder abzuschalten(1).

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 14 Byte sind für den Uhrenschaltkreis MC146818 reserviert: 10 Byte für die Werte von Sekunden, Minuten, Stunden, Tag, Monat, Jahr, Wochentag sowie für den Alarmzeitpunkt. 4 Byte sind für Statusinformationen vorgesehen.

Die nachfolgenden 114 Byte sind je nach BIOS-Hersteller verschieden belegt.

CMOS-RAM löschen[Bearbeiten]

Das Löschen bzw. Zurücksetzen aller Werte ist beispielsweise nötig, wenn Sie das Setup-Passwort vergessen haben. Nehmen Sie die Batterie heraus und trennen Sie den PC vom Stromnetz (Stecker ziehen). Warten Sie eine bis zehn Minuten, bis die letzten Kondensatoren entladen sind. Setzen Sie die Batterie wieder ein.

Wie kommen die Anfangswerte in den CMOS-RAM?[Bearbeiten]

Die Werte im CMOS-RAM sind mit einer Kontrollsumme vor Veränderungen geschützt. Wenn durch einen Zufall ein Byte geändert wird oder wenn der gesamte Speicherinhalt gelöscht worden ist (z. B. weil die BIOS-Batterie erschöpft ist), entdeckt das BIOS dies beim nächsten Start und fragt nach, ob das BIOS-Setup aufgerufen werden soll oder ob ein Satz Anfangswerte in den CMOS-RAM kopiert werden soll. Eine solche Tabelle wurde vom Hersteller zusammengestellt und vorsorglich im BIOS-ROM bereitgestellt.