CMOS
Aus Lowlevel
Version vom 7. Dezember 2007, 14:40 Uhr von Bluecode (Diskussion | Beiträge)
Ein Complementary Metal Oxide Semiconductor (= CMOS) ist eigentlich ein elektonischer Baustein, aber im Bereich der Betriebssystemprogrammierung ist damit meistens der batterie-gepufferter SRAM eines x86- bzw. x86-64-Computers gemeint. In diesem speichert das BIOS Informationen beispielsweise über die angeschlossene Hardware. Außerdem wird darin die momentane Uhrzeit und das Datum gespeichert und von einer Echtzeituhr aktualisiert.
Aufbau
Im CMOS werden folgende jeweils 1Byte große Felder gespeichert:
| Offset | Beschreibung |
|---|---|
| 0x00 | Sekunde |
| 0x01 | Alarmsekunde |
| 0x02 | Minute |
| 0x03 | Alarmminute |
| 0x04 | Stunde |
| 0x05 | Alarmstunde |
| 0x06 | Wochentag |
| 0x07 | Tag des Monats |
| 0x08 | Monat |
| 0x09 | Jahr (letzten zwei Stellen) |
| 0x0A | Statusregister A |
| 0x0B | Statusregister B |
| 0x0C | Statusregister C |
| 0x0D | Statusregister D |
| 0x0E | POST-Diagnosestatusbyte |
| 0x0F | Shutdown-Statusbyte |
| 0x10 | Typ der Diskettenlaufwerke |
| 0x12 | Typ der Festplattenlaufwerke |
| 0x13 | reserviert |
| 0x14 | Gerätebyte |
| 0x15 | Größe des Basisspeichers in kB (niederwertiges Byte) |
| 0x16 | Größe des Basisspeichers in kB (höherwertiges Byte) |
| 0x17 | Größe des Erweiterungsspeichers in kB (niederwertiges Byte) |
| 0x18 | Größe des Erweiterungsspeichers in kB (höherwertiges Byte) |
| 0x2E | CMOS-Prüfsumme (niederwertiges Byte) |
| 0x2F | CMOS-Prüfsumme (höherwertiges Byte) |
| 0x32 | Jahrhundert |
Programmierung
Die Programmierung des CMOS ist denkbar einfach: Die fünf niederwertigen Bits des I/O Ports 0x70 dienen als Offset (siehe Tabelle). Durch Lesen bzw. Schreiben des I/O Ports 0x71 kann dann der Wert an diesem Offset gelesen bzw. geschrieben werden.
Weblinks
- Wikipedia: CMOS (deutsch)
- Real Time Clock / CMOS Setup Reference (englisch)