收藏 分享(赏)

深入了解微机启动过程.doc

上传人:weiwoduzun 文档编号:1770676 上传时间:2018-08-22 格式:DOC 页数:12 大小:25KB
下载 相关 举报
深入了解微机启动过程.doc_第1页
第1页 / 共12页
深入了解微机启动过程.doc_第2页
第2页 / 共12页
深入了解微机启动过程.doc_第3页
第3页 / 共12页
深入了解微机启动过程.doc_第4页
第4页 / 共12页
深入了解微机启动过程.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、微机启动过程深入探究 引言 对于经常使用电脑的用户(来 CFAN 的都应该包括在这一行列吧)来说,每天当你按下 Power Button 等待电脑进入系统开始一天正常工作的时候,你有没有想过在这一段时间内电脑内部都发生了什么?当电脑发生故障不能启动的时候你是否不知所措,不知道是哪里出了问题?如果你还没有想过这个问题,或者这是你老早就在思考的问题,却苦苦得不到答案,那么请继续往下看。 概述 整个电脑的启动过程大概可以分为三个阶段: 一 从按下 Power Button 到 CPU Reset 这一阶段是通过硬件逻辑电路来完成 CPU Reset,并且台式机与笔记本又有所区别。 二 BIOS 引导

2、阶段(从 CPU Reset 到操作系统引导) 这一阶段完全在 BIOS 的控制之下,由 BIOS 完成微机硬件的自检(POST)与初始化,BIOS 还提供 BIOS 设置和 Runtime Service 服务(微机原理课学过的BIOS 中断服务),最后 BIOS 将从可引导介质上引导操作系统。 三 操作系统引导阶段 第一阶段:CPU Reset 很多文章里都会忽略这一阶段,直接从 CPU Reset 读取 BIOS 代码开始自检讲起,可能是这一步经过的时间太短了,用户根本觉察不到,所以没有必要讲:( 。但是这是必需的一步,不经过这一阶段 PC 不可能启动! 注意:台式机与笔记本在这一阶段有

3、很大的区别,这是由于笔记本有 KBC 的存在(后面会讲到)。 先看台式机: 由于台式机的开机与 PC 电源有密切关系,先看一下电源部分: 首先是电源插头定义: 下面为有卡扣那一边 (看不清楚?没事 拆了机箱拿出电源自己慢慢看 看熟悉就好了) 这个就是主板供电插头的 pin 脚定义图,这是 ATX 12V 规范之前的定义,最新的 ATX 12V 规范 pin 脚已经变成 24 针(主要是加强了了对 CPU 的供电电压 ,如果想了解更多的电源规范可以参考 ATX 电源规范 ,这个不在本文的探讨之列),但是这个变化对开机流程没有影响,所以这张图依然适用(手头只有这张图,懒的找了)。 说明一下,其中,

4、8 引脚为 PG(Power Good)信号。9 引脚为待机供电。14 引脚为 PW-ON(Power-On)信号,14 引脚与 GND(Ground)短接后即可触发电源工作(这一点非常重要!),未触发前 9、14 引脚输出电压均为+5V,其它引脚无输出电压。 还有,根据电源的两种结构,主板触发也采用两种方式。AT 结构电源采用硬开机方式(触发后 PW-ON 为常闭状态),ATX 结构电源采用软开机方式(触发后PW-ON 为常开状态)。由于软开机是目前绝大多数主板采用的触发方式,因此我们主要针对这种触发方式进行分析。这个有时分析是要用到的 所以我想想还是说一下。 主板触发电路 看一下几种典型的

5、主板触发电路: 1. 经过南桥的触发电路(见下图) 在触发电路中凡是参加开机的元件均由电源 9 引脚(紫)提供+5V 供电。+5V 高电位经电阻 R1、R2,在 PW-ON 非接地端形成+3.3V 高电位。当 PW-ON(机箱开机按纽)被触发(即闭合)瞬间,+3.3V 高电位信号被拉低,变为低电位,南桥接收到低电位信号向电源 14 引脚(绿)发出低电位信号,将 POWER(14)+5V 高电位拉低,触发电源工作,实现开机。 2. 用反向器式,不同与上面的接地式。 当 PW-ON 被触发(即闭合)瞬间,+3.3V 高电位信号经反向器(如 7404 等)转换为低电位,南桥接收到低电位信号向电源 1

6、4 引脚(绿)发出低电位信号,将POWER(14)+5V 高电位拉低,触发电源工作,实现开机。 3. IO 控制芯片型 过程与经过南桥相似,只是由南桥控制 I/O 芯片,通过 I/O 芯片发出低电位信号将 POWER(14)+5V 高电位拉低,触发电源工作。 上面列举了三种常用开机电路,当然,不同的 PC 厂商可能会采取不同的设计,基本原理应该都和上面的电路相同。 至此,ATX 电源开始正常工作,就会输出+12V,-12V.+5V ,-5V,+3.3V 电压,包括 8 引脚 PG(Power Good)信号,这时候主板上的用电已经全部输出。输出 PG信号后会触发南桥,经过一系列的触发动作,最终

7、由北桥发送 CPURST#给 CPU,使 CPU Reset. 至此,PC 开机过程的第一步完成(应该是台式机,还有笔记本的没讲 :)。需要说明的是,这一过程在极短的时间内(微秒级)完成,用户根本感觉不到(好复杂啊!还有更复杂的呢,CPU 内部的每秒 G 次级操作!)。 再看笔记本 笔记本由于有 KBC 的存在,这一阶段和台式机又有不同。KBC(Keyboard Controller,键盘控制器)从字面上我们就可以看出来它的作用。这只是它当初的定义,现在的 KBC 的功能已经远远超出它当初的定义了,现在笔记本上的电源管理,状态 LED 的显示,Panel 背光亮度的调节,Fn 键的控制,CPU

8、 Throttle 的开关,无线蓝牙红外等外设的控制,电池充放电的控制等等功能都由 KBC 来接手,应该说 KBC 接手了台式机上南桥的一部分功能。现在常用的KBC 芯片主要有 Hitachi 的 H8 和 Winbond 系列(如 W83L941D)。 KBC 在 NB 的开机过程中也起着很大的作用,下面我们来看: 在系统关机的时候,只有 RTC 部分和 KBC 部分在运行,明白这一点很重要!很多笔记本用户会问为什么笔记本即使不开机过一段时间电池电量也会减少?这正是 KBC 还在用电的原因,当然,电池的自然陨耗也不可忽略。RTC 部分维持着计算机的时钟和 CMOS 设置信息,而 KBC 则在

9、等待用户按开机键。在检测到用户按开机键后,KBC 会通知整个系统把电源打开(这部分在下面详细介绍)。CPU 被 RESET 后,会去读 BIOS 内一个特定地址内的指令(其实是一个跳转指令,这个地址是由 CPU 硬件设定的),接下来就是第二阶段讨论的内容了! (以下一段从权威揭密 笔记本硬件结构终极教程 (下)一文摘录) 那我们现在就讲解一下笔记本电脑在硬件上的逻辑开机过程。 首先我们做一些预习工作,以方便读者的理解。在笔记本内部的电压有好几种,我们分别看一下。 首先是 RTC 电源,这部分电力是永远不关闭的,除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器)。RTC 用以保

10、持机器内部时钟的运转和保证 CMOS 配置信息在断电的情况下不丢失;其次,在你插上电池或者电源适配器,但还没按 power 键的时候(S5),机器内部的开启的电称为ALWAYS 电,主要用以保证 EC 的正常运行;再次,你开机以后,所有的电力都开启,这时候,我们称为 MAIN 电(S0),以供整机的运行;在你进待机的时候(S3),机器内部的电成为 SUS 电,主要是 DDR 的电力供应,以保证 RAM 内部的资料不丢失;而休眠(S4)和关机(S5)的电是一样的,都是 Always 电。其中,上文中括号内的是表示计算机的状态(S0-开机,S3-待机,S4-休眠,S5-关机)。上图是对上面这段话的

11、总结,我想应该很容易明白。其中最后一列指的是其电压开启的控制信号,这点下面会讲到。至于为什么这里没有 S4,即休眠状态,是因为在 S4 状态和 S5 状态下,系统开启的电是一样的,所以就没必要增加一组控制电路。 OK,现在我们假设没有任何的电力设备在供电(没电池和电源),这时候,机器内部只有 RTC 电路在运作,南桥上会接有一个 3V 的纽扣电池来供给 RTC 电力,以保持内部时间的运行和 CMOS 信息。 我们来分析一下开机的过程。在插上电池或者电源的时候,机器内部的单片机KBC 就 Reset 并开始工作,等待用户按下 Power 键。在此期间的时序是:ALWAYS 电开启以后,KBC R

12、eset 并开始运行,随后发给南桥一个称为RSMRST#的信号。这时候南桥的部分功能开始初始化并等待开机信号。这里要注意,这时候的南桥并没有打开全部电源,只有很少一部分的功能可用,比如供检测开机信号的 PWRBTN#信号。 在用户按下 Power 键的时候,KBC 检测到一个电平变化(一般时序是:高-低-高),然后发送一个开机信号(PWRBTN#)给南桥,南桥收到 PWRBTN#信号后依次拉高 SLP_S5#,SLP_S4#,SLP_S3#信号,开启了所有的外围电压,主要是+3V,+5V 以及 DDR2.5V 等,并发送 PM PWROK 信号,这信号表明外围电源正常开启。 PM PWROK

13、将作为一个使能信号发送到 CPU 外围 VCCP 的电压 Generator,并开启VCCP。在此之后,VCCP Generator 会发出 CORE_VR_ON 来开启 CORE VR(即 CPU的核心电压)。至此,整机的电压已经全部开启。 在用 VR_PWRGD_ICH 这个信号通知南桥 CORE VR 成功开启后,南桥会发出 PCI RST#信号到 PCI 总线,于是总线上的设备都被初始化(包括北桥),并同时发出 H_PWRGD 来通知 CPU 它的核心电压已经成功开启。然后北桥发 H_CPURST#信号给 CPU,CPU 被 RESET,并正式开始工作。 至此,PC 开机过程的第一阶段

14、全部完成(台式机,笔记本)。 我们跟随微机进入第二阶段。 第二阶段: BIOS 引导 从这一阶段开始,我们就可以“看”到这一过程了(显卡开始工作之后)。在这一阶段,BIOS 是绝对的主角!基本上一切都在它的控制之下。 可以说 BIOS 是一个很大的话题,不要说一篇文章,就是一本书,一门课程都不可能讲的很透彻!这里我主要是根据自己的理解,对 BIOS 在微机启动过程中的作用作一下梳理。 CPU Reset 后就会通过北桥,南桥,寻找 BIOS, 生成片选信号,开始读取资料,进行自检(POST, Power On Self Test). 为了便于理解,先给不熟悉 BIOS 的兄弟(当然还有姐妹:)

15、们补补课(之前听到有人说 BOIS,还有的称 BOSS!)。BIOS 的全称是 Basic Input And Output System,中文名就是基本输入输出系统,从名称上我们不能获得更多的信息,它到底是硬件还是软件?既然称为系统我怎么看不到?应该说 BIOS 是名符其实的软件(先别急着反驳,听我讲完),它本身是一段程序,只不过这段程序和我们平时接触的程序有一点不同。它不像我们常见的程序那样工作于操作系统下,因为它本身就可以说是一个简单的小型操作系统(不好理解?就当我没说过上面的这段话,继续往下看)。这段程序是固化在一块芯片当中的这块芯片就是我们学说的 BIOS 芯片,而这块芯片又焊接在主

16、板上。如果你细心找的话,在主板上你肯定能找到这块芯片(没有 BIOS 的 PC 偶还么的见过)。而正是由于 BIOS 是固化在芯片中的才会导致某些人说 BIOS 是硬件。整理一下,应该说 BIOS 是软件,如果我们说 BIOS 芯片(保存 BIOS 程序的那块芯片),那么它就是硬件(芯片当然是硬件拉)。 要想了解更多关于 BIOS 的信息,大家可以去 ,从上面可以获得更多的资料,从基本的 BIOS 设置到怎么刷 BIOS 到替换 BIOS 的开机画面,应有尽有。 再说一下 BIOS 在微机中的基本作用: 1. POST(Power On Self Test,开机自检) CPU Reset 后

17、将从 BIOS 读取第一条指令,接下来 BIOS 会对 CPU 各项寄存器,先检查是否运行正常,接下来会检查8254 Timer(可编程计数器),8259A(可编程中断控制器),8237DMA Controller(DMA 控制器)的状态。 2. Initial针对动态内存(DRAM),主板芯片组,显卡以及相关外围的寄存器做初始化设置,并检测是否能够工作。 所谓初始化设置,就是依照该芯片组的技术文件检定,做一些寄存器的填值,改位的动作,使得主板/芯片组和内存,I/O 的功能得以正常运行。 3. 记录系统的设置值,并且存储在非挥发性内存(Non-Volatile RAM),像CMOS 或 Fla

18、sh Memory(ESCD 区域)等。 4.将常驻程序库(Runtime Program)常驻于某一段内存内,提供给操作系统或应用程序调用,像 Int 10H, Int 13H, Int 15H 之类的函数(这个功能在Windows 系统下已经不存在了,在 DOS 下还会用到,就是我们常说的 BIOS 中断)继续讨论 BIOS 在开机过程中的作用,我们看下面的图: 好了,今天就写这么多,以后有空再写。 Go on 当 CPU Reset 后,根据 X86 架构的特性,(386 以后)CPU 会从 4G 地址的最顶端 FFFFFFF0 处获得第一条指令来执行,而这一地址被定位在 BIOS 里。

19、由于FFFFFFF0 到 FFFFFFFF 只有短短的 16 字节,根本不可能放下一段程序,所以这里会放一条跳转(Jump)指令让 BIOS 跳到更低的地址去执行。而这个地址就是上图的 Boot Block 模块的入口地址。这个 Boot Block(启动模块)是 IBM PC遗留下来的规范,基本上每一个 BIOS 厂家都会有这么一个 Boot Block。它的作用就是完成 BIOS 的最初引导(比如说测试很小的一块内存来供临时使用),如果你对 BIOS DIY 比较熟的话,它的另一项功能你可能会比较熟悉,就是当刷BIOS 由于不慎导致失败的时候,我们可以通过 Boot Block 的拯救功能

20、来救回BIOS,一般是在软驱里放入两个文件,一个是特殊的刷 BIOS 工具另一个是BIOS 文件。然后用这个软驱启动,如果 Boot Block 模块没有损坏的话,用这个方法可以救活 BIOS. Boot Block 完成引导后就会解压缩出 Runtime 模块,到这里可能你会问,什么是解压缩 Runtime 模块?莫非 BIOS 里还藏有 Winrar,winzip 这样的程序,答案当然是否定的。用到解压缩功能完全是因为 BIOS 可以利用的地址空间太小了,而随着芯片组功能和外设功能的增强,BIOS 里还要加入起来越多的功能,为了解决地址空间不足的问题,BIOS 就引入了压缩模块的方法,将一

21、些固定功能的BIOS 模块通过压缩算法压缩,挤出一些空间来让更多的扩展功能使用。当然,这些压缩算法肯定没有 Winrar 等压缩软件那么复杂了,否则光是压缩算法就占据了大部分空间,还不如不引入压缩功能来的划算。到这里还有一个问题,就是有人可能要问,之前不是讲过 BIOS 刚开始执行就会进行 POST 吗?怎么前面还会解压 Runtime 模块?这是因为在 POST 过程中要用到中断调用等功能,而这些功能是由 Runtime 模块提供的。 Runtime 模块解压后就会解压 POST 模块,可以看到连 POST 也被压缩了,可见BIOS 空间是多么宝贵!在 POST 过程中如果用户有按键(比如常

22、见的 DEL 键)想进行 BIOS 设定,那么 BIOS 会解压出 BIOS SetUp 模块,来提供 BIOS 设定界面并保存用户设定结果。在 POST 过程中 BIOS 还会进行芯片组,内存,显卡,外设等的初始化工作。 上面的只是一个初略的 BIOS 执行流程,BIOS 实际执行的过程要比上面说的复杂的多。并且不同的厂商会在 BIOS 里加入许多特定的功能(比如一键杀毒,还原等),这更会增加 BIOS 的复杂度! 造成 BIOS 过于复杂的另一原因是 BIOS 开发主要是用一般人不熟悉的汇编语言。面对复杂的 BIOS,不要说普通的用户,就连 BIOS 开发人员有时都会被搞焦头烂额。还好,I

23、ntel 终于开发出了 EFI(Extended Firmware Interface,扩展固件接口)准备用来取代 BIOS。EFI 用流行的 C 语言开发,可以做出比较好的图形界面,使用起来更加直观。EFI 还加入了一些比较实用的功能,比如说可以不进系统,在 EFI 里就可以进行文件操作,在 EFI 里使用网络功能等。有兴趣的可以在网上找一下 EFI 的相关资料,毕竟 EFI 离我们也不太远了,之前Microsoft 承诺会在 Windows Vista 里启用 EFI 的支持,可后来又跳票了,最近 MS 又表示 2007 年会启用 EFI 支持,MS 是否会再忽悠我们一把,我们只有到200

24、7 年再下结论了。 至此,PC 开机过程的第二阶段完成。 第三阶段: 操作系统引导 BIOS 自检过程中,如果没有错误,接下来就会进行操作系统引导。 BIOS 会根据 CMOS 里记录的启动顺序一个个地来尝试加载启动代码。具体的过程是 BIOS 将磁盘的第一扇区(磁盘最开始的 512 字节)载入内存,放在0X0000:0X7C00 处,然后检查这个扇区的最后两个字节是不是“55AA”,如果是则认为这是一个有效的启动扇区,如果不是就会尝试下一个启动介质,如果找到可以启动的程序就会从这一介质启动,如果所有的启动介质都判断过后仍然没有找到可启动的程序那么 BIOS 会给出错误提示。 注:本文引于互联网

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报