首页 > 代码库 > 硬件自检

硬件自检

电脑启动过程中有一个非常完善的硬件自检机制。对于采用award bios的电脑来说,它在上电自检那短暂的几秒钟里,就可以完成100多个检测步骤。首先我们先来了解两个基本概念第一个是bios(基本输入输出系统),bios实际上就是被“固化”在计算机硬件中、直接与硬件打交道的一组程序,计算机的启动过程是在主板bios的控制下进行的,我们也常把它称作“系统bios"。第二个基本概念是内存的地址,通常计算机中安装有32mb、64mb、128mb或更多的内存,为了便于cpu访问,这些内存的每一个字节都被赋予了一个地址。32mb的地址范围用十六进制数表示就是0~1ffffffh,其中o~fffffh的低端1mb内存非常特殊,因为我们使用的32位处理器能够直接访问的内存最大只有1mb,因此这1mb中的低端640kb被称为基本内存,而a0000h~bffffh要保留给显示卡的显存使用的,c0000h~fffffh则被保留给bios使用,其中系统bios一般占用最后的64kb或更多一点的空间,显示卡bios一般在c0000h~c7fffh处,ide控制器的bios在c8000h~cbfffh处。了解了这些基本概念之后,下面我们就来仔细看看计算机的启动过程。

1、当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不稳定,主板控制芯片组会向cpu发出一个reset(重置)信号,让cpu初始化。当电源开始稳定供电后,芯片组便撤去reset信号,cpu马上就从地址ffffoh处开始执行指令,这个地址在系统bios的地址范围内,无论是award blos还是amiblos,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。

2、系统blos的启动代码首先要做的事情就是进行post(power on self test,加电自检),post的主要任务是检测系统中的一些关键设备是否存在和能否正常工作,如内存和显卡等。由于post的检测过程在显示卡初始化之前,因此如果在post自检的过程中发现了一些致命错误,如没有找到内存或者内存有问题时(post过程只检查640k常规内存),是无法在屏幕上显示出来的,这时系统post可通过喇叭发声来报告错误情况,声音的长短和次数代表了错误的类型。

3、接下来系统bios将查找显示卡的bios,存放显示卡bios的rom芯片的起始地址通常在c0000h处,系统blos找到显卡bios之后调用它的初始化代码,由显卡bios来完成显示卡的初始化。大多数显示卡在这个过程通常会在屏幕上显示出一些显示卡的信息,如生产厂商、图形芯片类型、显存容量等内容,这就是我们开机看到的第一个画面,不过这个画面几乎是一闪而过的,也有的显卡bios使用了延时功能,以便用户可以看清显示的信息。接着系统bios会查找其他设备的bios程序,找到之后同样要调用这些blos内部的初始化代码来初始化这些设备。

4、查找完所有其他设备的bios之后,系统bios将显示它自己的启动画面,其中包括有系统bios的类型、序列号和版本号等内容。同时屏幕底端左下角会出现主板信息代码,包含bios的日期、主板芯片组型号、主板的识别编码及厂商代码等。

5、接着系统bios将检测cpu的类型和工作频率,并将检测结果显示在屏幕上,这就是我们开机看到的opu类型和主频。接下来系统bios开始测试主机所有的内存容量,并同时在屏幕上显示内存测试的数值,就是大家所熟悉的屏幕上半部分那个飞速翻滚的内存计数器。

6、内存测试通过之后,系统bios将开始检测系统中安装的一些标准硬件设备,这些设备包括硬盘、cd-rom、软驱、串行接口和并行接口等连接的设备,另外绝大多数新版本的系统bios在这一过程中还要自动检测和设置内存的相关参数、硬盘参数和访问模式等。

7、标准设备检测完毕后,系统bios内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备。每找到一个设备之后,系统bios都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、dma通道和i/0端口等资源。

到这一步为止,所有硬件都已经检测配置完毕了,系统bios会重新清屏并在屏幕上方显示出一个系统配置列表,其中简略地列出系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

硬件自检