笔记本开机原理
2007年09月16日 星期日 21:57
www.vipcn/InfoView/Article_169713.html 一. 電源方面 1. 電源插入 (包括AC和Battery): 此時H8經過延時后就位, 并且那些在Suspend后依然有電的電源模塊(比如+V5s, +V3s等)開始工作正常. 2. 按Bottom啟動: H8將收到一個 High to Low的Pulse, 然后H8產生-PWRON; 3. DC –DC 將產生Vcc3, Vcc5, Vcore, Vcc2.5. 4. H8認為電源穩定后將Vcc3延時到Southbridge, S/B產生電源复位-RSMRST#到H8. 5. H8 產生SB_PWRBTN#模擬開關給S/B, 正式打開電源, S/B再發出-H8_SUSC#到H8. 6. H8產生-H8_SB_PWROK到S/B. S/B收到后產生CPURST_SB#到CPU,產生-PCIRST#到PCI, 產生-RSTDRV到各個Device(包括HDD, CDROM等). 7. N/B, CPU, 各Device的收到Reset信號后電源就位. 此后, 工作交接給System BIOS處理. 二. 系統啟動方面 1. POST (Power On Self Test): BIOS 檢測各Device是否存在, 能否正常工作. 2. BIOS查顯卡BIOS, 由顯卡BIOS初始化顯卡. BIOS查其他設備BIOS,並初始化各個設備. 3. BIOS 檢測和顯示CPU的類型和頻率后開始測試RAM.(此時我們可以Set CMOS). 4. 安裝一些設備, 如HDD, CDROM, 串并口等. BIOS會自動設置(檢測)內存的定時參數, 硬盤參數和訪問模式等. 5. 安裝PNP設備, 並顯示名稱及型號. 6. 分配中斷, DMA通道及I/O PORT. 7. 如果HDD啟動的話, BIOS讀取HDD上主引導紀錄, 主引導紀錄從分區表中到第一個活動分區. 然后, 讀取擯棄執行此分區的引導紀錄, 此后執行權交接給OS.(FDD, CDROM啟動也類似). |
笔记本启动过程深入探究
2007年08月19日 星期日 00:21
引言 对于经常使用电脑的用户(来CFAN的都应该包括在这一行列吧)来说,每天当你按下Power Button等待电脑进入系统开始一天正常工作的时候,你有没有想过在这一段时间内电脑内部都发生了什么?当电脑发生故障不能启动的时候你是否不知所措,不知道是哪里出了问题?如果你还没有想过这个问题,或者这是你老早就在思考的问题,却苦苦得不到答案,那么请继续往下看。 概述 整个电脑的启动过程大概可以分为三个阶段: 一 从按下Power Button到CPU Reset 这一阶段是通过硬件逻辑电路来完成CPU Reset,并且台式机与笔记本又有所区别。 二 BIOS引导阶段(从CPU Reset到操作系统引导) 这一阶段完全在BIOS的控制之下,由BIOS完成微机硬件的自检(POST)与初始化,BIOS还提供BIOS设置和Runtime Service服务(微机原理课学过的BIOS中断服务),最后BIOS将从可引导介质上引导操作系统。 三 操作系统引导阶段 第一阶段:CPU Reset 笔记本由于有KBC的存在,这一阶段和台式机又有不同。KBC(Keyboard Controller,键盘控制器)从字面上我们就可以看出来它的作用。这只是它当初的定义,现在的KBC的功能已经远远超出它当初的定义了,现在笔记本上的电源管理,状态LED的显示,Panel背光亮度的调节,Fn键的控制,CPU Throttle的开关,无线蓝牙红外等外设的控制,电池充放电的控制等等功能都由KBC来接手,应该说KBC接手了台式机上南桥的一部分功能。现在常用的KBC芯片主要有Hitachi的H8和Winbond系列(如W83L941D)。 KBC在NB的开机过程中也起着很大的作用,下面我们来看: 在系统关机的时候,只有RTC部分和KBC部分在运行,明白这一点很重要!很多笔记本用户会问为什么笔记本即使不开机过一段时间电池电量也会减少?这正是KBC还在用电的原因,当然,电池的自然陨耗也不可忽略。RTC部分维持着计算机的时钟和CMOS设置信息,而KBC则在等待用户按开机键。在检测到用户按开机键后,KBC会通知整个系统把电源打开(这部分在下面详细介绍)。CPU被RESET后,会去读BIOS内一个特定地址内的指令(其实是一个跳转指令,这个地址是由CPU硬件设定的),接下来就是第二阶段讨论的内容了! (以下一段从权威揭密 笔记本硬件结构终极教程 (下)一文摘录) 那我们现在就讲解一下笔记本电脑在硬件上的逻辑开机过程。 首先我们做一些预习工作,以方便读者的理解。在笔记本内部的电压有好几种,我们分别看一下。 首先是RTC电源,这部分电力是永远不关闭的,除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器)。RTC用以保持机器内部时钟的运转和保证CMOS配置信息在断电的情况下不丢失;其次,在你插上电池或者电源适配器,但还没按power键的时候(S5),机器内部的开启的电称为ALWAYS电,主要用以保证EC的正常运行;再次,你开机以后,所有的电力都开启,这时候,我们称为MAIN电(S0),以供整机的运行;在你进待机的时候(S3),机器内部的电成为SUS电,主要是DDR的电力供应,以保证RAM内部的资料不丢失;而休眠(S4)和关机(S5)的电是一样的,都是Always电。其中,上文中括号内的是表示计算机的状态(S0-开机,S3-待机,S4-休眠,S5-关机)。 [attach]31552[/attach] 上图是对上面这段话的总结,我想应该很容易明白。其中最后一列指的是其电压开启的控制信号,这点下面会讲到。至于为什么这里没有S4,即休眠状态,是因为在S4状态和S5状态下,系统开启的电是一样的,所以就没必要增加一组控制电路。 OK,现在我们假设没有任何的电力设备在供电(没电池和电源),这时候,机器内部只有RTC电路在运作,南桥上会接有一个3V的纽扣电池来供给RTC电力,以保持内部时间的运行和CMOS信息。 我们来分析一下开机的过程。在插上电池或者电源的时候,机器内部的单片机KBC就Reset并开始工作,等待用户按下Power键。在此期间的时序是:ALWAYS电开启以后,KBC Reset并开始运行,随后发给南桥一个称为‘RSMRST#’的信号。这时候南桥的部分功能开始初始化并等待开机信号。这里要注意,这时候的南桥并没有打开全部电源,只有很少一部分的功能可用,比如供检测开机信号的PWRBTN#信号。 在用户按下Power键的时候,KBC检测到一个电平变化(一般时序是:高-低-高),然后发送一个开机信号(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这个信号通知南桥CORE VR成功开启后,南桥会发出PCI RST#信号到PCI总线,于是总线上的设备都被初始化(包括北桥),并同时发出H_PWRGD来通知CPU它的核心电压已经成功开启。然后北桥发H_CPURST#信号给CPU,CPU被RESET,并正式开始工作。 至此,PC开机过程的第一阶段全部完成(台式机,笔记本)。 我们跟随微机进入第二阶段。 第二阶段: BIOS引导 从这一阶段开始,我们就可以“看”到这一过程了(显卡开始工作之后)。在这一阶段,BIOS是绝对的主角!基本上一切都在它的控制之下。 可以说BIOS是一个很大的话题,不要说一篇文章,就是一本书,一门课程都不可能讲的很透彻!这里我主要是根据自己的理解,对BIOS在微机启动过程中的作用作一下梳理。 CPU Reset后就会通过北桥,南桥,寻BIOS, 生成片选信号,开始读取资料,进行自检(POST, Power On Self Test). 为了便于理解,先给不熟悉BIOS的兄弟(当然还有妹:))们补补课(之前听到有人说BOIS,还有的称BOSS!)。BIOS的全称是Basic Input And Output System,中文名就是基本输入输出系统,从名称上我们不能获得更多的信息,它到底是硬件还是软件?既然称为系统我怎么看不到?应该说BIOS是名符其实的软件(先别急着反驳,听我讲完),它本身是一段程序,只不过这段程序和我们平时接触的程序有一点不同。它不像我们常见的程序那样工作于操作系统下,因为它本身就可以说是一个简单的小型操作系统(不好理解?就当我没说过上面的这段话,继续往下看)。这段程序是固化在一块芯片当中的――这块芯片就是我们学说的BIOS芯片,而这块芯片又焊接在主板上。如果你细心的话,在主板上你肯定能到这块芯片(没有BIOS的PC偶还么的见过)。而正是由于BIOS是固化在芯片中的才会导致某些人说BIOS是硬件。整理一下,应该说BIOS是软件,如果我们说BIOS芯片(保存BIOS程序的那块芯片),那么它就是硬件(芯片当然是硬件拉)。 要想了解更多关于BIOS的信息,大家可以去 www.biosdiy ,从上面可以获得更多的资料,从基本的BIOS设置到怎么刷BIOS到替换BIOS的开机画面,应有尽有。 再说一下BIOS在微机中的基本作用: 1. POST(Power On Self Test,开机自检) CPU Reset后将从BIOS读取第一条指令,接下来BIOS会对CPU各项寄存器,先检查是否运行正常,接下来会检查8254 Timer(可编程计数器),bios setup8259A(可编程中断控制器),8237DMA Controller(DMA 控制器)的状态。 2. Initial――针对动态内存(DRAM),主板芯片组,显卡以及相关外围的寄存器做初始化设置,并检测是否能够工作。 所谓初始化设置,就是依照该芯片组的技术文件检定,做一些寄存器的填值,改位的动作,使得主板/芯片组和内存,I/O的功能得以正常运行。 3. 记录系统的设置值,并且存储在非挥发性内存(Non-Volatile RAM),像CMOS或Flash Memory(ESCD区域)等。 4.将常驻程序库(Runtime Program)常驻于某一段内存内,提供给操作系统或应用程序调用,像Int 10H, Int 13H, Int 15H之类的函数(这个功能在Windows系统下已经不存在了,在DOS下还会用到,就是我们常说的BIOS 中断) 当CPU Reset后,根据X86架构的特性,(386以后)CPU会从4G地址的最顶端FFFFFFF0处获得第一条指令来执行,而这一地址被定位在BIOS里。由于FFFFFFF0到FFFFFFFF只有短短的16字节,根本不可能放下一段程序,所以这里会放一条跳转(Jump)指令让BIOS跳到更低的地址去执行。而这个地址就是上图的Boot Block模块的入口地址。这个Boot Block(启动模块)是IBM PC遗留下来的规范,基本上每一个BIOS厂家都会有这么一个Boot Block。它的作用就是完成BIOS的最初引导(比如说测试很小的一块内存来供临时使用),如果你对BIOS DIY比较熟的话,它的另一项功能你可能会比较熟悉,就是当刷BIOS由于不慎导致失败的时候,我们可以通过Boot Block的拯救功能来救回BIOS,一般是在软驱里放入两个文件,一个是特殊的刷BIOS工具另一个是BIOS文件。然后用这个软驱启动,如果Boot Block模块没有损坏的话,用这个方法可以救活BIOS. Boot Block完成引导后就会解压缩出Runtime模块,到这里可能你会问,什么是解压缩Runtime模块?莫非BIOS里还藏有Winrar,winzip这样的程序,答案当然是否定的。用到解压缩功能完全是因为BIOS可以利用的地址空间太小了,而随着芯片组功能和外设功能的增强,BIOS里还要加入起来越多的功能,为了解决地址空间不足的问题,BIOS就引入了压缩模块的方法,将一些固定功能的BIOS模块通过压缩算法压缩,挤出一些空间来让更多的扩展功能使用。当然,这些压缩算法肯定没有Winrar等压缩软件那么复杂了,否则光是压缩算法就占据了大部分空间,还不如不引入压缩功能来的划算。到这里还有一个问题,就是有人可能要问,之前不是讲过BIOS刚开始执行就会进行POST吗?怎么前面还会解压Runtime模块?这是因为在POST过程中要用到中断调用等功能,而这些功能是由Runtime模块提供的。 Runtime模块解压后就会解压POST模块,可以看到连POST也被压缩了,可见BIOS空间是多么宝贵!在POST过程中如果用户有按键(比如常见的DEL键)想进行BIOS设定,那么BIOS会解压出BIOS SetUp模块,来提供BIOS设定界面并保存用户设定结果。在POST过程中BIOS还会进行芯片组,内存,显卡,外设等的初始化工作。 上面的只是一个初略的BIOS执行流程,BIOS实际执行的过程要比上面说的复杂的多。并且不同的厂商会在BIOS里加入许多特定的功能(比如一键杀毒,还原等),这更会增加BIOS的复杂度! 造成BIOS过于复杂的另一原因是BIOS开发主要是用一般人不熟悉的汇编语言。面对复杂的BIOS,不要说普通的用户,就连BIOS开发人员有时都会被搞焦头烂额。还好,Intel终于开发出了EFI(Extended Firmware Interface,扩展固件接口)准备用来取代BIOS。EFI用流行的C语言开发,可以做出比较好的图形界面,使用起来更加直观。EFI还加入了一些比较实用的功能,比如说可以不进系统,在EFI里就可以进行文件操作,在EFI里使用网络功能等。有兴趣的可以在网上一下EFI的相关资料,毕竟EFI离我们也不太远了,之前Microsoft承诺会在Windows Vista里启用EFI的支持,可后来又跳票了,最近MS又表示2007年会启用EFI支持,MS是否会再忽悠我们一把,我们只有到2007年再下结论了。 第三阶段: 操作系统引导 BIOS自检过程中,如果没有错误,接下来就会进行操作系统引导。 BIOS会根据CMOS里记录的启动顺序一个个地来尝试加载启动代码。具体的过程是BIOS将磁盘的第一扇区(磁盘最开始的512字节)载入内存,放在0X0000:0X7C00处,然后检查这个扇区的最后两个字节是不是“55AA”,如果是则认为这是一个有效的启动扇区,如果不是就会尝试下一个启动介质,如果到可以启动的程序就会从这一介质启动,如果所有的启动介质都判断过后仍然没有到可启动的程序那么BIOS会给出错误提示。 下面我们以硬盘上的Windows XP系统的启动为例来讲一下整个操作系统的引 很多文章里都会忽略这一阶段,直接从CPU Reset读取BIOS代码开始自检讲起,可能是这一步经过的时间太短了,用户根本觉察不到,所以没有必要讲:( 。但是这是必需的一步,不经过这一阶段PC不可能启动! 注意:台式机与笔记本在这一阶段有很大的区别,这是由于笔记本有KBC的存在 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论