我所知道的EC.doc
《我所知道的EC.doc》由会员分享,可在线阅读,更多相关《我所知道的EC.doc(65页珍藏版)》请在冰豆网上搜索。
我所知道的EC====>owerSequence
1.What’sPowerSequence?
+w8f*m,\4K9Y0{4H3x
PowerSequence是指HWDevice上电的顺序,它的大致顺序如下:
/v+s#G&{:
Z'J4~,S3o
1)ALWAYS!
}P6m*[2h!
U,v%u2)SUS_ON3)DIMM_ON6h"W*^']0a4)RUN_ON-R#g9U:
p!
t(k5)VR_ON)Z3W(k2S'v8k/I,{'C
这基本上是NB工作需要的所有POWER。
插入AC或者DC后,机器内部的开启的电为ALWAYS电,主要用以保证EC的正常运行;系统正常工作进入os以后,所有的Power都开启。
完整的过程其实是这样的:
AC或者DC插入以后,ECReset开始跑code,用户按下PowerSwitch时,EC拉SUS_ON送给一颗POWERIC,+3VSUS,+5VSUS起来后,POWERIC回ECSUS_OK。
接下来EC发给南桥一个称为‘RSMRST#’的信号。
这时候南桥的部分功能开始初始化并等待开机信号。
这时候的南桥并没有打开全部电源,只有很少一部分的功能可用,比如供检测开机信号的PWRBTN#信号。
在用户按下Power键的时候,EC检测到一个中断,然后duplicate一个开机信号(PWRBTN#)给南桥,南桥收到PWRBTN#信号后依次拉高SLP_S5#,SLP_S4#,SLP_S3#信号,开启了所有的POWER,在V_CORE电起来后,IC会发送ALLSYSPWOK信号给EC这信号表明外围电源正常开启。
南桥会发出PCIRST#信号到PCI总线,于是总线上的设备都被初始化(包括北桥),然后CPURST#信号送出,HOST正式接手并开始工作。
/至此,上电时序完成。
4t-O&f%Q"bC7J
:
l/f,I9r@
2.WhyPowerSequence?
I.Whyneedsequence?
(个人猜测,欢迎指教J)
为什么需要PowerSequence呢?
没有PowerSequence直接把所有的电压都供上可以开机吗?
答案是YES。
直接上电开机是没有问题的,可是没有办法达成省电的功能;另外S3/S4,LongRun也会有问题。
系统進入待机的时候(S3),机器内部的电只有SUS&DIMM电,主要是提供DDR的电压,以保证RAM内部的资料不丢失(S3是将数据StoretoRam,在Resume之后OS从RAM中获得数据,所以DDR的电一定要留着),而S4和关机(S5)的电是一样的,都是Always电(当AC在的时候其实SUS电要留着,目的是加速Resume或者PowerOn的速度)。
0_-e)Q6\7OJ9m
II.S4和S5共用一个信号?
#M3H3M6v,F(A3_#S"]%G6y
做过EC的同志可能会发现,线路图上S4,S5的信号只会有一个。
根据我们的使用经验S4和S5有很大的差异。
原因其实是因为S4,S5都只有ALWAYS电,从EC的角度,根本没有必要区分S4,S5所以SB只有一个信号拉到EC。
.m;W0B:
q+{)我所知道的EC====>SystemArchitecture
1.EC功能概述
EC是NB独有的组成部分。
它将MB上面的keyboard、mouse集中于一体在,EC内部提供了KBC控制器统一控制它们,这样大大节省了空间实现了便携。
NB的另一个特点是它需要电池供电,这样省电是一个重要的问题。
EC配合chipset在S3、S4、S5分别供不同的电源策略以达到节省的目的,另外EC也会控制电池的冲放电的过程,检测电池电量用于决定是否待机or紧急关机
orWakeup等。
另外由于NB集成度高、空间受限,散热非常重要但同时还要兼顾噪音的问题,EC会通过thermalsensor获得当前的CPU和VGA温度,根据不同的温度自动调节风扇的转速。
这些都是EC提供的功能。
7T0F-D:
M1Y
2.常见HW架构b6l9`5l3D%Y;o
现在NBHW线路系统中EC的常见架构有两种,比较旧一点的案子会将BIOS和EC的code放在一起挂在EC的X-BUS下面。
而新一些的做法会将BIOS和EC分开;BIOS挂在SBLPC或者SPI下面而EC挂在EC的SPI下面。
如下图所示:
0A5R%c/g6c0l%R2^
那么为什么会有两种架构呢?
他们有什么区别呢?
听我慢慢道来Jzzz。
这其实是个多方原因导致的结果。
1.出于成本的考虑。
大家都知道现在NB的价格战是愈演愈烈,大家都在拼成本。
所以低端机种都在拼命的costdown.很明显第一种架构也就是图1左边的架构会省掉一颗IC的成本。
那么大家可能又会问既然这么economic为什么还要导入第二种架构呢?
2.出于性能的考虑“有所得就有所失”没有完美的方案,第一种架构存在一个致命得缺陷,就是BIOS和EC跑code时会抢总线,也就是说有可能某一段时间BIOS狂飙得时候,EC就卡住了,反之亦然。
于是就发现POST时间过长,S3、S4Resume时间过长的问题了。
于是乎第二种架构应运而生;所以在新机种以及那些高性能的game系列中就会采用这种架构。
(PS:
现在应该以第二种架构为主了)#Y+{(}1q:
r
3.EC如何与HOST通信\#d-[)s5y*C
由图1可以看出EC与SB通过LPC相连,所以EC与HOST端的通信主要是通过LPCBUS进行的,除此之外EC还会有SMI,SCI的pin拉到SB上也就是说EC也可以通过发SCI,SMI的中断通知Chipset,Chipset再从LPCBUS获得相关的EVENT(PS:
后续的会详细讨论这部分)。
LPCBUS通信的部分如下图所示:
"S"E6@$w'c(d9\&h"o*h
1U&hB1d9W9T(t&~0i!
y
总之EC是NB系统中最为底层的部件,只要有电EC就会工作,检测各种输入信息,同时它还负责提供powersequence和host通信等重要的工作。
(
我所知道的EC====>LID
1.What’slid?
Lid是盖子的意思,在NB上其实就是指Panel打开和关闭的过程。
不知道有没有人试过用磁石去碰NB的底边缘,试过就会发现一碰NB就会进S3、S4当然也可能什么动作都没有(取决于OS的配置)。
其实这部分是因为大多NB都是通过一颗magnetswitchIC控制lid。
Lid有两种状态Open和CloseHW的线路通常还会将它们用作背光的始能信号8q8{:
`;|(B8M
2.LidOpen
LidOpen就是通常上讲的开盖,HW会将这支信号拉到EC一根GPIOpin上,也就是说一旦Lid状态有变化EC这端就会收到中断,EC收到中断后会发SCI通知host,host再去做其他的动作。
可是通常第一次开机的时候Panel是打开的,NB并没有供电所以EC没法更新lid的状态,这时EC就会在进入S0的时候根据lid这根GPIO的状态(H&L)去更新lid的状态。
在OS装载的过程中会主动去callBIOS中的aslcode去更新Lid的状态。
3.LidClose4z2z9{"C3[(Q
LidClose指的是合盖,EC处理的过程和LidOpen基本一致,区别之处在于EC记录Lid的状态有变化。
另外在OS下有一个选项可以设置LidClose时OS可以进行的动作。
如下图所示
如上图1所示closelid可以选择的action有三种"y2F0u%Y+_,D$i9
1.Donothing
)n3V$S&W'cA;f1{.t'^
2.Standby]0d3P)I9m#P#?
*w(A+I"E
3.HibernatX;i)l!
i!
s!
K2y
这些功能是怎么实现的呢?
完整的流程如下图所示:
*d4}%T8{+{(
图2就是完整的工作过程,步骤5是猜的。
要知道真正的做法恐怕只有问了微软才知道J。
窗体顶端
我所知道的EC====>Keyboard-B-u(W$E0]%B#f8j
1.KeyboardIntroduction
Keyboard是PC架构中的一个重要组成部分。
在常见的PC系统中主板上都有一颗专用的8042接口芯片去处理(现在被集成进了SB中),8042控制keyboard的整个工作过程,包括加电自检键盘扫描码的缓冲以及与chipset沟通。
在NB上这部分工作都有EC负责,它有一个keyboardcontroller,它扮演8042相似的角色。
NB都有一个内置Keyboard,这个keyboard是由EC控制的。
Keyboard和touchpad都是EC内置的一个部分,它们按照ps2协议工作,最终的数据通过EC送给host。
常见的102key的键盘如下图1所示:
2.3\0Y8A4f.c6p1NScancodeandMake&Break1[)H.{:
`*S(D0R&v
-m1h-}5f8r#e
当键盘上有键被按下,键盘将产生扫描码(scancode),scancode有两种Makecode和Breakcode,也就是通常所说的通码和断码。
每一个按键都有一个唯一的Makecode和Breakcode。
当一个键被按下就会产生Makecode,松开时就会产生一个Breakcode。
Scancode一共有三套称之为set1、set2、set3,PS2接口键盘默认使用set2。
EC收到set2scancode以后会将它转化为set1送给host。
Set1的scancode中标准按键的ScancodeMakecode和Breakcode都只有一个字节,Makecode和BreakCode的差别就在最高位。
Makecode最高位为0,Breakcode最高位为1。
A的scancode如下图1所示:
Akey
Makecode
Breakcode
Set1
1Eh
$F"a+ax6}"@2T
9Eh
Set2
1Ch
F0h,1Ch
Set3
1Ch
F0h,1Ch
$g6D;U5K,T6]9R图2
3.HowDoesKeyboardWork?
Keyboard功能虽然比较简单,只是让用户可以输入一些字符而已,可是它的工作原理却不简单。
从一个键被按下到操作系统识别它并送给其他的driver或者AP,中间经历了很多道工序。
键盘是一种矩阵结构,每一个键都有一个行地址和列地址,用户按下键以后,EC获得该按键的matrixaddress,EC将该address转化为matrixvalue然后判断该键的类型是特殊功能键还是标准按键,然后采用不同的方法将matrixvalue转成Set2,最后在转成Set1value送给host,host收到就可以送给其它需要的程序了。
其完整的工作流程如下图3所示:
4.Customized-Q2|-?
6N.h!
x,s)S
HotKey
NB上有一些被称为HotKey(热键)的东东,比如用户可以按Fn+F4/F5调整亮度等。
这些是如何实现的呢?
既然k