千难万难启动最难系列(一)

从电源键到MBR

这是一个详细介绍计算机启动过程系列文章,本篇文章主要介绍从按下电源键到BIOS加载MBR的过程。

第一步

我们在按下启动键时,首先启动的应是电源(因为如果没有电源供电,那么主板上所有的配件都是无法工作的)。但是为了保证安全使用,电源部分采取了一系列安全保护措施;因此开关电源从起振到稳定之间会有一段时间的延迟,等待各组电压都稳定下来后,电源各部分会输出一个检测信号,这个信号为高电平时表示该部分电压正常,这些部分包括输入电压和各组输出电压。这些信号总和的结果就是一个POWER GOOD信号(也称为POWER OK或PWR OK信号);如果主板接受不到这个信号,那么时钟芯片会持续向CPU发送复位(RESET)信号(与我们按下RESER键相当),CPU就不会工作。

当CPU接受到正常的POWER GOOD信号,主板和CPU就启动了吗?其实主板此时,还要根据CPU的VID0-VID3引脚的定义组合,将CPU所提供的VID0-VID3信号送到电源管理模块的相应的端口;如果主板BIOS具有可设定CPU电压的功能,主板会按时设定的电压与VID的对应关系产生新的VID信号并送到电源管理模块芯片,电源管理模块将根据设定并通过DAC电压将其转换为基准电压,再经过场效应管轮流导通和关闭,将能量通过电感线圈送到CPU,最后再经过调节电路使用输出电压与设定电压值相当。

由于CPU还要根据自己所需要的频率,通过IC总线来检测主板频率发生器所设置的频率是否支持;因为电脑要进行正确的数据传送以及正常的运行,没有时钟信号是不行的,时钟信号在电路中的主要作用就是同步;因为在数据传送过程中,对时序都有着严格的要求,只有这样才能保证数据在传输过程不出差错。时钟信号首先设定了一个基准,我们可以用它来确定其它信号的宽度,另外时钟信号能够保证收发数据双方的同步。对于CPU而言,时钟信号作为基准,CPU内部的所有信号处理都要以它作为标尺,这样它就确定CPU指令的执行速度;如CPU本身的频率无法适应频率发生器所提供的高频率,也是无法正常工作的。因此只有当接受到POWER GOOD信号,和相应的得到CPU工作的电压时以及相应的时钟频率后,CPU才能正常的工作, 也就是从地址FFFF0H处开始执行指令,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

 第二步

    系统BIOS的启动代码首先要做的事情就是进行POST(Power-On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作。POST自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。

 第三步

    接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡 BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

 第四步

    查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度。

 第五步

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

 第六步

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

 第七步

接下来系统BIOS将更新ESCD。 ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行操作系统的引导文件,从而启动操作系统。

 

特别申明:本文的写做参考了: http://blog.csdn.net/range0505/archive/2008/09/13/2924915.aspx  在此向作者表示感谢

posted on 2011-11-17 17:39  lisperl  阅读(1606)  评论(5编辑  收藏  举报