1、笔记本电脑启动过程我们一般把从按下笔记本电源开关到机子完全亮起来进入操作系统的过程称为机子的启动过程。作为笔记本维修人员我们一般习惯把这个过程分为机器的硬件启动过程和软件启动过程。机子的硬件启动过程是指从按下笔记本电源开关到机子上的所有硬件都具备了工作条件的过程;软件启动过程是指系统 BIOS 程序指挥主板上硬件一步一步工作,加载进入操作系统进入用户登录界面的过程。了解机子的启动过程,对于我们分析判断机子的故障有很大帮助。 首先让我们来了解一些基本概念。第一个是大家非常熟悉的 BIOS(基本输入输出系统),它是固化在主板上 ROM 芯片(即 BIOS 芯片)内的一组软件程序,是直接与硬件打交道
2、的底层代码,它主要为计算机提供最低级的硬件控制和支持。BIOS 包括有系统 BIOS(即常说的主板 BIOS)、显卡 BIOS 和其它设备(例如 IDE 控制器、SCSI 卡或网卡等)的 BIOS,其中系统 BIOS 是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS 一般被存放在 ROM(只读存储芯片) 之中,新即使在关机或掉电以后,为这些代码也不会消失。 第二个基本概念是内存的地址,我们的机器中一般安装有 32MB、64MB 或 128MB 内存,这些内存的每一个字节都被赋予了一个地址,以便 CPU 访问内存。32MB 的地址范围用十六进制数表示就是01FFFFFFH
3、 ,其中 0FFFFFH 的低端 1MB 内存非常特殊,因为最初的 8086 处理器能够访问的内存最大只有 1MB,这 1MB 的低端 640KB 被称为基本内存,而 A0000HBFFFFH 要保留给显示卡的显存使用,C0000H FFFFFH 则被保留给 BIOS 使用,其中系统 BIOS 一般占用了最后的 64KB 或更多一点的空间,新显卡 BIOS 一般在 C0000HC7FFFH 处,为 IDE 控制器的 BIOS 在 C8000HCBFFFH 处。 首先,我们来看看计算机的硬件启动过程吧。我们假设没有任何的电力设备在供电(没电池和电源) ,这时候,机器内部只有 RTC 电路在运作,
4、南桥上会接有一个 3V 的纽扣电池来供给 RTC 电力,以保持内部时间的运行和 CMOS 信息。在插上电池或者电源的时候,机器内部的单片机 EC 就 Reset 并开始工作,等待用户按下 Power 键。在此期间的时序是:ALWAYS 电开启以后,EC Reset 并开始运行,随后发给南桥一个称为RSMRST# 的信号。这时候南桥的部分功能开始初始化并等待开机信号。这里要注意,这时候的南桥并没有打开全部电源,只有很少一部分的功能可用,比如供检测开机信号的 PWRBTN#信号。 在用户按下 Power 键的时候, EC(开机芯片) 检测到一个电平变化(一般时序是:高-低-高) ,然后发送一个开机
5、信号(PWRBTN#)给南桥,南桥收到 PWRBTN#信号后依次拉高SLP_S5#,SLP_S4#,SLP_S3#信号(他们的作用参看上页的图) ,开启了所有的外围电压,主要是+3V ,+5V 以及 DDR2.5V 等,并发送 PM PWROK 信号,这信号表明外围电源正常开启。 PM PWROK 将作为一个使能信号发送到 CPU 外围 VCCP 的电压 Generator,并开启VCCP。在此之后,VCCP Generator 会发出 CORE_VR_ON 来开启 CORE VR(即 CPU 的核心电压) 。至此,整机的电压已经全部开启。 在用 VR_PWRGD_ICH 这个信号通知南桥 C
6、ORE VR 成功开启后,南桥会发出 PCI RST#信号到 PCI 总线,于是总线上的设备都被初始化(包括北桥) ,并同时发出H_PWRGD 来通知 CPU 它的核心电压已经成功开启。然后北桥发 H_CPURST#信号给CPU,CPU 被 RESET,并正式开始工作。 在用户需要进入待机模式(S3)的时候,系统的 ACPI 和 windows 同时运作,拉低SLP_S3#,并保持 SLP_S4#和 SLP_S5#被拉高,以关闭了 MAIN 电,系统则进入待机模式 而在需要进入休眠或者关机模式时,同时拉低 SLP_S3#、SLP_S4# 和 SLP_S5#,关闭除了 RTC 以外的电源。当然,
7、在这一系列的过程中,需要操作系统和 BIOS 的共同协作,对硬件工程师来说,只需要保证在特定的状态保证特定的电压供给即可。 当机器要要从 S0 进入 S5,即关机的时候,也会有一定的时序进行,基本上就是前面时序的逆运行,这里就不详细说了。笔记本的软启动过程第一步:当 CPU 接到复位信号后,CPU 在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去 RESET 信号,CPU 马上就从地址 FFFF0H 处开始执行指令,从前面的介绍可知,这个地址实际上在系统 BIOS 的地址范围内,无论是Award BIOS,AMI BIOS 或着
8、是 PHOENIXBIOS,放在这里的只是一条跳转指令,跳到系统 BIOS 中真正的启动代码处。(笔记本电脑主要用 PHOENIXBIOS) 第二步: 系统 BIOS 的启动代码首先要做的事情就是进行 POST(PowerOn Self Test,加电后自检),POST 的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于 POST 是最早进行的检测过程,此时显卡还没有初始化,如果系统 BIOS 在进行 POST 的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查 640K 常规内存),那么系统BIOS 就会直接控制喇叭发声来报告错误,声音
9、的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST 结束之后就会调用其它代码来进行更完整的硬件检测。 第三步: 接下来系统 BIOS 将查找显卡的 BIOS,前面说过,存放显卡 BIOS 的 ROM 芯片的起始地址通常设在 C0000H 处,系统 BIOS 在这个地方找到显卡 BIOS 之后就调用它的初始化代码,由显卡BIOS 来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统 BIOS 接着会查找其它设备的 BIOS 程序,找到之后同样要调用这些 BIOS 内部的初始化代码来初始化相关的设备。 第四步: 查找完所有其它设备的 BIOS 之后,系统 BIOS 将显示出它自己的启动画面,其中包括有系统 BIOS 的类型、序列号和版本号等内容。 第五步: 接着系统 BIOS 将检测和显示 CPU 的类型和工作频率,然后开始测试所有的 RAM,并同时在屏幕上显示内存测试的进度,我们可以在 CMOS 设置中自行决定使用简单耗时少或者详细耗时多的测试方式。