在我们平时的工作和生活中,总是想挖掘他表面下更深层次的内涵,追求自己远大的理想,以至于达到最高的境界。下面结合这篇有关于EC的论述,来了解笔记本最底层的EC与电源,与开机的关系,从而提高笔记本的维修理论水平。
BIOS(基本输入输出系统)在整个系统中的地位是非常重要的,它实现了底层硬件和上层操作系统的桥梁。比如你现在从光盘拷贝一个文件到硬盘,您只需知道“复制、粘贴”的指令就行了,您不必知道它具体是如何从光盘读取,然后如何写入硬盘。对于操作系统来说也只需要向BIOS发出指令即可,而不必知道光盘是如何读,硬盘是如何写的。BIOS构建了操作系统和底层硬件的桥梁。而我们平时说的BIOS设定仅仅是谈到了其软件的设定,比如设置启动顺序、禁用/启用一些功能等等。但这里有一个问题,在硬件上,BIOS是如何实现的呢?毕竟,软件是运行在硬件平台上的吧?这里我们不能不提的就是EC。
EC(Embed Controller,嵌入式控制器)是一个16位单片机,它内部本身也有一定容量的Flash来存储EC的代码。EC在系统中的地位绝不次于南北桥,在系统开启的过程中,EC控制着绝大多数重要信号的时序。在笔记本中,EC是一直开着的,无论你是在开机或者是关机状态,除非你把电池和Adapter完全卸除。在关机状态下,EC一直保持运行,并在等待用户的开机信息。而在开机后,EC更作为键盘控制器,充电指示灯以及风扇和其他各种指示灯等设备的控制,它甚至控制着系统的待机、休眠等状态。主流笔记本系统中,EC在系统架构中的地位如下图:
现在的EC有两种架构,上图左边是比较传统的,即BIOS的FLASH通过X-BUS接到EC,然后EC通过LPC接到南桥,一般这种情况下EC的代码也是放在FLASH中的,也就是和BIOS共用一个FLASH。右边的则是比较新的架构,EC和FLASH共同接到LPC总线上,一般它只使用EC内部的ROM。至于LPC总线,它是INTEL当初为了取代低速落后的X-BUS而推出的总线标准。 EC上一般都含有键盘控制器,所以也称KBC。那EC和BIOS在系统中的工作到底有什么牵连呢?在这里我们先简单的分析一下。在系统关机的时候,只有RTC部分和EC部分在运行。RTC部分维持着计算机的时钟和CMOS设置信息,而EC则在等待用户按开机键。在检测到用户按开机键后,EC会通知整个系统把电源打开,CPU被RESET后,会去读BIOS内一个特定地址内的指令(其实是一个跳转指令,这个地址是由CPU硬件设定的)。这里开始分两种情况,对于上图左边的结构:CPU发出的这个地址通过FSB到北桥,然后通过HUB-LINK到南桥,通过LPC到EC,再通过X-BUS一直到达BIOS。在CPU读到所发出的地址内的指令后,执行它被RESET后的第一个指令。在这个系统中,EC起到了桥接BIOS和南桥(或者说整个系统)的作用,对于上图右边的结构:在CPU发出的地址到南桥后,会直接通过LPC到BIOS,不需要EC的桥接。
这里需要说明的是,对于台式机而言,一般是不需要EC的。这里原因有很多:比如台式机本身的ATX电源就具有一定的智能功能,他已经能受操作系统控制来实现待机、休眠的状态;其次由于笔记本的键盘不能直接接到PS/2接口,而必须接到EC之上;还有就是笔记本有更多的小功能,比如充电指示灯、WIFI指示灯、Fn等很多特殊的功能,而且笔记本必须支持电池的充放电等功能,而智能充放电则需要EC的支持;另外,笔记本TFT屏幕的开关时序也必须由EC控制。这些原因导致了笔记本使用EC来做内部管理的必要性。
总体来说,EC和BIOS都处于机器的最底层。EC是一个单独的处理器,在开机前和开机过程中对整个系统起着全局的管理。而BIOS是在等EC把内部的物理环境初始化后才开始运行的。
看到这里,我想大家也明白EC到底是呵方神圣。如果说BIOS 是底层系统的话,那EC 似乎更加底层。
在南桥上还有一个功能块就是电源管理单元(PM,Power Management),一般来说,他和EC来共同配合完成。这里包括从开机键按下后,启动,待机,休眠,关机的全部功能。还包括对背光亮度,声音等的控制等等。至于现在Intel的Speed Step技术,也有部分功能是透过南桥来实现的(南桥发送SLP、STPCLK(sleep,Stop Clock)来实现睡眠、深睡眠等)。
这部分的设计比较简单,只需要点到点的连接南桥和CPU即可。
逻辑上的开机过程:
开机过程对于电脑设计是至关重要的。在笔记本电脑打好PCB后第一次开机时,如果电源的时序正确了,其他的问题都比较好解(一般来说时序正确的话机器都能开起来)。最怕的就是电源时序不对,机器开不起来,这才是最要命的。在笔记本内部的电压有好几种, 首先是RTC电源,这部分电力是永远不关闭的,除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器)。RTC用以保持机器内部时钟的运转和保证CMOS配置信息在断电的情况下不丢失;其次,在你插上电池或者电源适配器,但还没按power键的时候(S5),机器内部的开启的电称为ALWAYS电,主要用以保证EC的正常运行;再次,你开机以后,所有的电力都开启,这时候,我们称为MAIN电(S0),以供整机的运行;在你进待机的时候(S3),机器内部的电成为SUS电,主要是DDR的电力供应,以保证RAM内部的资料不丢失;而休眠(S4)和关机(S5)的电是一样的,都是Always电。其中,上文中括号内的是表示计算机的状态(S0-开机,S3-待机,S4-休眠,S5-关机)。
现在我们假设没有任何的电力设备在供电(没电池和电源),这时候,机器内部只有RTC电路在运作,南桥上会接有一个3V的纽扣电池来供给RTC电力,以保持内部时间的运行和CMOS信息。
南桥的启动时序
根据前面的Power Status,我们来分析一下开机的过程。在插上电池或者电源的时候,机器内部的单片机EC就Reset并开始工作,等待用户按下Power键。在此期间的时序是:ALWAYS电开启以后,EC Reset并开始运行,随后发给南桥一个称为‘RSMRST#’的信号。这时候南桥的部分功能开始初始化并等待开机信号。这里要注意,这时候的南桥并没有打开全部电源,只有很少一部分的功能可用,比如供检测开机信号的PWRBTN#信号。
在用户按下Power键的时候,EC检测到一个电平变化(一般时序是:高-低-高),然后发送一个开机信号(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,并正式开始工作。
在用户需要进入待机模式(S3)的时候,系统的ACPI和windows同时运作,拉低SLP_S3#,并保持SLP_S4#和SLP_S5#被拉高,以关闭了MAIN电,系统则进入待机模式。
而在需要进入休眠或者关机模式时,同时拉低SLP_S3#、SLP_S4#和SLP_S5#,关闭除了RTC以外的电源。当然,在这一系列的过程中,需要操作系统和BIOS的共同协作,对硬件来说,只需要保证在特定的状态保证特定的电压供给即可。
当机器要要从S0进入S5,即关机的时候,也会有一定的时序进行,基本上就是前面时序的逆运行。
以上就是整个硬件的开机、进入S3,S5的过程,当然不同的硬件有不同的开机过程,这里说的不过是最普通、最为常见的一种。
下面我针对惠普1000的IO介绍他内部EC的工作情况。 |