BIOS和CMOS


CMOS主要的功能为记录主板上面的重要参数, 包括系统时间、CPU电压与频率、设备的I/O地址与IRQ等, CMOS中的数据在断电后会消失,所以主板上会有一颗纽扣电池给CMOS供电。
BIOS为写入到主板上某一块flash或EEPROM的程序,可以在开机的时候执行,以加载CMOS中的参数, 并尝试加载调用储存设备中的开机程序,进一步进入操作系统当中。
BIOS程序可以修改CMOS中的数据, 开机的时候可以通过按键进入BIOS的设置界面,一般桌面计算机常见的是使用[del]按键进入BIOS设定画面。

一.什么是BIOS

回到顶部

BIOS为基本输入输出系统(Basic Input Output System)的简称, 是固化在计算机主板只读存储器ROM(Read-Only Memory)芯片上的一组程序代码, 不需要供电就可以保持数据不丢失。BIOS为计算机开机启动后执行的第一个程序。 BIOS中保存着计算机最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自检程序。
BIOS主要有以下功能及作用:
a.POST上电自检及初始化程序:
计算机上电开机后BIOS最先被启动执行,通过读取CMOS RAM中的信息识别硬件配置,并对其进行自检测试和初始化。 检测系统中的一些关键设备是否存在或者是功能是否正常,BIOS自检程序可以确保计算机硬件满足运行的基本条件, 整个自检过程称为POST(Power-On Self-Test)自检。
这些硬件设备包括CPU、640K基本内存(640K BASE MEMORY)、1MB以上扩展内存(EXTEND MEMORY)、 ROM、主板、CMOS存储器、串口、并口、显卡、软盘子系统、硬盘子系统、键盘等。
POST过程会非常快速,用户几乎感觉不出来。 如果在POST过程中系统设备存在致命的问题,BIOS会发出不同含义的蜂鸣声来报告检测过程中出现的错误,同时启动中止,声音的长短及次数对应着系统的错误类型。
如果自检没有问题,显示器屏幕会显示出CPU、内存、硬盘等信息。
BIOS报错声音对应链接:https://baike.baidu.com/item/BIOS%E6%8A%A5%E8%AD%A6%E5%A3%B0/4231622?fr=aladdin
在POST过程中,BIOS也会查找显卡的BIOS,并且调用显卡的BIOS代码,由显卡BIOS去初始化显卡,这个时候显示器一般会显示一些初始化信息,
同时系统BIOS也会去查找其它设备的BIOS,分别调用对应的初始化代码来初始化设备。
b.加载操作系统启动程序bootloader:
POST自检成功后,BIOS会把控制权转交给下一阶段的启动程序。
这时BIOS需要知道下一阶段要启动的程序存放在哪个设备,也就是说BIOS需要有一个外部储存设备的启动排序,排在前面的设备就是优先转交控制权的设备。
这种排序叫做启动顺序(Boot Sequence)。
开机启动过程中可以通过快捷键进入BIOS设置界面,在里面可以设置设备的启动顺序。设置信息存入CMOS中。
BIOS按照系统CMOS中设置的启动顺序搜索软硬盘驱动器及CDROM、网络服务器等有效的启动设备, 将启动设备(通常是磁盘)相对0磁道0扇区上的操作系统引导启动程序bootloader读入内存并运行, 最后系统控制权交给bootloader,由bootloader完成操作系统的加载启动;
c.BIOS中断服务程序:
BIOS告诉CPU各硬件设备的中断号,当用户发出使用某个设备的指令后,CPU根据中断号使用相应的硬件完成工作,再根据中断号跳回原来的工作。
d.IO服务程序:
BIOS直接与计算机的输入输出IO(Input/Output)设备打交道,需要加载I/O驱动程序。 通过特定的数据端口发出命令,传送或接收各种外部设备数据,实现软件程序对硬件的直接操作;
e.CMOS设置读取程序:
引导过程中,可以通过特殊热键进行系统设置,设置信息存入CMOSRAM中。 硬件设备的配置情况存放在一块可读写的CMOS RAM芯片中的,CMOS为一小块特殊的RAM,由主板后备电池供电以保证CMOS信息在关机后不会丢失。 CMOS中保存着系统CPU、软硬盘驱动器、显示器、键盘等设备信息。 如果CMOS中的配置信息不正确,会导致系统性能降低、设备无法识别等各种系统软硬件故障;

BIOS启动过程

回到顶部

1.按下电源开关,电源开始向主板和其它设备供电;当芯片组检测到电源开始稳定供电后(当然从不稳定到稳定的过程只是一瞬间的事情), 便撤去RESET信号。如果是手动按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号; CPU马上就从地址FFFF0000H处开始执行指令,这里只是一条跳转指令,跳到系统BIOS中真正的启动代码处。
2.系统BIOS的启动代码首先进行POST自检。POST主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备; 由于POST是最先运行的检测程序,此时显卡还没有初始化。如果系统BIOS在进行POST的过程中发现了一些致命错误, 例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误, 声音的长短和次数代表了错误的类型;正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。 POST结束后会调用其它代码来进行更完整的硬件检测。
3.接下来系统BIOS将查找显卡的BIOS。存放显卡BIOS的ROM芯片的起始地址通常在C0000H处, 系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡。 此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。 系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。
4.查找完所有其它设备的BIOS之后,系统BIOS将显示出自己的启动画面,画面中包括系统BIOS的类型、序列号和版本号等内容。
5.接着系统BIOS将检测和显示CPU的类型和工作频率,测试所有RAM,同时在屏幕上显示内存测试的进度。 可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。
6.内存测试通过后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口和软驱等设备, 绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
7.标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备。 每找到一个设备,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。
8.到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格, 其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
9.接下来系统BIOS将更新扩展系统配置数据ESCD(Extended System Configuration Data)。 ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据存放在CMOS中。 通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时都能够看到"Update ESCD… Success"这样的信息。 此外某些主板的系统BIOS在保存ESCD数据时使用了与Windows 9x不同的数据格式, Windows 9x在自己的启动过程中会把ESCD数据修改成自己的格式。 在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来。 如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。
10.ESCD更新完毕后,系统BIOS的启动代码将进行最后一项工作,即根据用户指定的设备启动顺序从软盘、硬盘或光驱启动MBR。 在这个过程中会按照启动顺序比较其放置MBR的位置的结尾两位是否为0xAA55,通过这种方式判断从哪个引导设备进行引导。 在确定之后,将该引导设备的MBR中存放的bootloader读入到内存地址0x7C00的位置,并再次判断其最后两位,检测正确之后, 将控制全转交给bootloader进行下一阶段的引导。

二.什么是CMOS

回到顶部

CMOS(Complementary Metal-Oxide-Semiconductor)是计算机主板上一块可读写的RAM芯片, CMOS用来保存计算机基本启动信息(如日期、时间、启动设置等)和当前系统的硬件配置和用户某些参数的设定的芯片, CMOS的特性是可读写的,因此在电脑的主板上是用来保存BIOS的设置电脑硬件参数的数据,这个芯片仅仅用来存储数据, CMOS靠主板上的纽扣电池供电,就算主机断电也能保存数据。
CMOS芯片一般被集成在南北桥芯片组里面。
CMOS中存放着CPU的类型、内存的容量与类型、硬盘的类型以及用户设置的基本参数等信息。

三.BIOS和CMOS的区别与联系

回到顶部

区别:BIOS保存系统的重要信息和设置系统参数的设置程序(BIOSSetup程序),而cmos是主板上的一块可读写的RAM芯片, 里面装的是关于系统配置的具体参数,其内容可通过设置程序进行读写。
联系:BIOS中的系统设置程序是完成CMOS参数设置的手段,即通过BIOS设置程序对CMOS参数进行设置。 CMOS既是BIOS设置系统参数的存放场所,又是BIOS设置系统参数的结果。

补充资料

1、什么是EC?

回到顶部

EC(Embed Controller,嵌入式控制权)又称开机控制芯片。
EC是一个16位单片机,内部本身也有一定容量的Flash来存储EC代码。 早期的EC主要管控键盘,所以也称KBC(KeyBoard Controller,键盘控制器)。 EC在系统中的地位绝不次于南北桥,在系统开启的过程中,EC控制着绝大多数重要信号的时序。
在笔记本中,EC是一直开着的,无论你是在开机或者是关机状态,除非你把电池和Adapter完全卸除。 在关机状态下,EC一直保持运行,并等待用户的开机信息。 在开机后,EC作为键盘控制器,充电指示灯以及风扇等设备的控制,甚至控制着系统的待机、休眠等状态。

2、EC的作用

回到顶部

在系统关机状态下,只有RTC(实时时钟)和EC在运行。RTC维持着计算机时钟和CMOS设置信息,而EC则等待用户按开机键。
在检测到用户按下开机键后,EC会通知整个系统把电源打开, CPU被RESET后,会去读取BIOS内一个特定地址内的指令,其实是一个跳转指令,这个地址是由CPU硬件设定的。
在CPU读到所发出的地址内的指令后,执行它被RESET后的第一个指令。
在这个系统中,EC起到了桥接BIOS和南桥(或者说整个系统)的作用。
EC是一个单独的处理器,在开机前和开机过程中对整个系统起着全局的管理。
而BIOS是在等EC把内部的物理环境初始化后才开始运行的。 如果说BIOS是底层系统的话,那EC似乎更加底层。
在南桥上还有一个功能块就是电源管理单元(PM,Power Management)。 一般来说,他和EC来共同配合完成。这里包括从开机(power button)键按下后,启动,待机,休眠,关机的全部功能。
还包括对背光亮度,声音等的控制等等。
至于现在Intel的Speed Step技术,也有部分功能是透过南桥来实现的(南桥发送SLP、STPCLK(sleep,Stop Clock)来实现睡眠、深睡眠等)。
(Embedded Controller,嵌入式控制器)在一组特定系统中,新增到固定位置,完成一定任务的控制装置就称为嵌入式控制器。

参考网址:https://blog.csdn.net/maomaovv/article/details/1549819
本文由initroot整理编辑,转载请注明www.initroot.com

100次点赞 100次阅读