Friday, June 5, 2009

Nonvolatile BIOS memory refers to a small memory on PC motherboards that is used to store BIOS settings. It was traditionally called CMOS RAM because it used a low-power CMOS SRAM (such as the Motorola MC146818 or similar) powered by a small battery when system power was off. The term remains in wide use but it has grown into a misnomer: nonvolatile storage in contemporary computers is often in EEPROM or flash memory (like the BIOS code itself); the remaining usage for the battery is then to keep the real-time clock going. The NVRAM has a typical capacity of 512 bytes, which is enough for all BIOS-settings.

CMOS mismatch
CMOS mismatch errors typically occur if the computer's power-on self-test program:
Finds a device that is not recorded in the CMOS.
Does not find a device that is recorded in the CMOS.
Finds a device that has different settings than those recorded for it in CMOS.
Detects a CMOS checksum error.


CMOS battery

The memory and real-time clock are generally powered by a CR2032 lithium coin cell. These cells last two to ten years, depending on the type of motherboard, ambient temperature and the time that the system is powered off, while other common cell types can last significantly longer or shorter periods, such as the CR2016 which will generally last about 40% as long. Higher temperatures and longer power-off time will shorten cell life. When replacing the cell, the system time and CMOS BIOS settings may revert to default values. This may be avoided by replacing the cell with the power supply master switch on. On ATX motherboards, this will supply 5V standby power to the motherboard even if it is apparently "switched off", and keep the CMOS memory energised.


Resetting the CMOS settings
To access the BIOS setup when the machine fails to operate, occasionally a drastic move is required. In older computers with battery-backed RAM, removal of the battery and short circuiting the battery input terminals for a while did the job; in some more modern machines this move only resets the RTC. Some motherboards offer a CMOS-reset jumper or a reset button. In yet other cases, the EEPROM chip has to be desoldered and the data in it manually edited using a programmer. Sometimes it is enough to ground the CLK or DTA line of the I²C bus of the EEPROM at the right moment during boot, this requires some precise soldering on SMD parts. If the machine lets you boot but does not want to let you into the BIOS setup, one possible recovery is to deliberately "damage" the CMOS checksum by doing direct port writes using debug.exe, corrupting some bytes of the checksum-protected area of the CMOS RAM; at the next boot, the computer typically resets its setting to factory defaults.

No comments: