找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 17606|回复: 6

[原创]我所知道的EC====>Battery

[复制链接]
发表于 2009-4-18 10:00:43 | 显示全部楼层 |阅读模式
我所知道的EC====>Battery
- b# ?, E6 p0 w' Q8 z, V% B' R
! t( k! f5 |2 `$ p5 r: i' E. G

  i/ J/ G; q1 s- K6 J4 N
1.Battery Information
1 G  t- y5 p5 Y, T! L6 Z# G

. K$ R8 G( j: r" q6 S: F9 c' l( _
+ X# f# D* f6 {3 O0 t

& I! ~$ Q  B& B3 T( t# a
   探测Battery的信息是EC一个重要的工作,OS也要通过读取ECRAM中的内容获取电池电量、温度、电压、充、放电电流、Battery是否存在的信息。那么EC如何获得这些信息呢?Battery通常是一个smbus device所以它会接在EC的一组smbus上,而Batteryspec上会给出Batterysmbus的地址以及读取Battery信息相关的命令。EC通过向smbus上送Batteryaddresscmd然后就会取得相应的信息了。

7 L; ^8 f* r( I6 V4 h

8 s( `; J- c4 ^  f" Y, \3 j& V  d" I
9 Y8 |% {7 E. u9 S7 O1 N6 F+ |& X
2.Battery Charge&Discharge Algorithm
2 K1 A; {* @2 @% f
7 Y0 h# ^: x$ E6 N2 A5 s

% w" Z3 ]* w# H  G
1)Charge
) p4 h4 A- _2 W# A5 N
   充电的过程是这样的,AC in 的状态下Battery插入,这时EC会进入precharge mode进行小电流充电。如果precharge时间过长(通常是指超过一个小时)EC就会停止充电并且认为Battery dead,送给host一个Battery FailEvent。在precharge mode如果充电电流增大到特定的数值后EC就会进入fastcharge mode快速充电。Battery 充满后停止充电。在这个过程中如果电池温度异常EC也会进行一些处理。这就充电的简单过程。
5 U2 D) F6 _' C) O
2)Discharge

( C) ]! {* c( u7 }' y# B' J/ F$ C
   AC out & Battery in这时Battery开始放电,在放电过程中如果电量小Critical Low,系统处于S0 EC会发Critical Eventhost,然后OS紧急关机。系统处S3,EC将会唤醒OS。如果电量小于BattLowLowled将会被点亮(Battery Low Policy会详述)。另外放电温度也会被检测,如果温度过高将会做降频动作等。

4 r$ a. B" J' u& R8 A

. |* B" Q; \! B+ c+ H' x' V  {0 P8 N. z$ v

* g- t) l: C0 U6 \) T* }
3.LowLed Policy
6 j1 w& t/ w6 m% n1 D, L+ s
' m- R; y' W4 {9 o( Q- W
' e. g9 z0 b' J- t4 [* ~; m) ~

' V- d* `9 ^! r7 q1 u6 y; p
    经常使用NB的话,大家可能会发现有一个led很有趣。插入AC充电时会看到一个黄色的led被点亮,电池没电了会看到一个红色的led亮,有时还会一闪一闪的。其实这就是EC导入的一个Function。黄色的led其实跟这个Function无关,它是充电指示灯,不过它和LowLed摆在一个位置。那么这个红色的LowLed什么时候会恒亮,什么时候会闪烁呢?当Battery的电量很低的时候也就是小于BattLow时,LowLed就会恒亮。当Battery DeadLowLed就会闪烁,导致Battery Dead的原因有Prechage时间太长温度过高或过低。
5 n7 a: \  s" S( s3 \

  j: _) C4 e( l3 l* ~

! z& _0 B3 R- ^+ K
4.Battery Event
# ?6 G7 }% C) y3 n
* u7 P1 y7 M# `6 @9 u! d

8 I) i2 C" m+ X+ ^* c
% f4 |  f+ B0 ?3 y# z% r
    Battery
在充放电的过程中,因为电量、电流、温度等原因EC需要向host端发送SCI Event,用于host在特定情况下采取相应的补救措施。
+ o+ B  U2 [0 `4 K6 }
( g0 F* y1 Y% z! v
1)BattChgEvent
( O0 Q2 @4 s4 q
     当Battery插入或者拔出时EC会发送BattChgEvent通知Host,这时Host会读取ECRAM获得Battery是否存在的信息并更新系统端的显示。

. ?$ }" y: e4 w$ P
( A* @6 C/ J+ @. n8 c/ b
2)BattWarnEvent
% T6 K8 b& h; R0 @1 {- p1 n
    当Battery的剩余电量到达Battery Warning Level时,EC会发送BattWarnEvent通知HostHost端收到后会给出提示信息。

7 f7 E( K: K8 @1 v$ K5 l
. B) i/ _3 v) u# v7 N. w
3)BattLowEvent

) c4 h( G7 L& |+ D8 n# T2 }
     当Battery的剩余电量到达Battery Low Level时,EC会发送BattLowEvent通知Host,而且这时LowLed会恒亮。

8 t9 o2 \: U9 ]; i
4)BattCrtEvent

' d& U3 O" C7 j: {+ k8 k
     当Battery的剩余电量接近0%时,EC会发送BattCrtEvent通知HostHost收到后做shutdown动作。如果在很长的一段时间里(几十秒),Host5 {* @3 P, \7 |2 q' }
没有shutdown,那么EC将会Emergency Shutdown
. x$ d8 G; S2 l2 X$ \

$ W3 o) W) j& D

4 q3 s, N) i) ~2 x6 J0 k: G
- E8 f9 F0 M- w; _
  

& K) u$ e5 f+ t8 T
/ y! [1 k* D+ c$ }( S( T4 n" U4 D
  

" V/ N# e- L- k4 G! ]- [
5.How to Debug Battery?9 j9 D. \  I2 I) {1 g
7 x5 M) [# \+ o6 q: Z

; ~& h8 A9 x3 K+ }

4 {3 m6 A# G& q8 S6 d+ [# D) Q     EC
通过smbus不断的获取电池信息, 所以电池信息在不断的变化之中。有些时候为了澄清问题,或者为了增加新的Function该如何Debu呢?我的做法是使用debug toolsmbus停掉,然后将一些符合条件的值通debug tool写入ECRAM中,然后验证相关的Function是否生效。另外如果是需要给BIOSSCI Event,我会直接将Event填入SCI queue。然后驱动SCI,SCI Event被发送出去。

! P% C/ t* C3 Y$ j
* [9 z& m  w5 c3 s% X4 ~( S6 i4 B
% R! \6 t" i' `, k
Peter

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入计匠网

×
发表于 2009-8-13 16:28:37 | 显示全部楼层
小弟初探EC的世界,看了您的几篇帖子受益匪浅......
回复

使用道具 举报

发表于 2009-8-20 14:00:15 | 显示全部楼层

re:battery

我看了一遍,写的过于简单过于笼统
回复

使用道具 举报

发表于 2009-10-2 09:47:55 | 显示全部楼层
好多Host,请问谁可以帮忙解释一下哪些host分别指的是什么?是南桥还是BIOS?
回复

使用道具 举报

发表于 2009-10-20 13:23:19 | 显示全部楼层
我们想在用的一个smart charger IC,这样好多电流的测量就可以省去了,我们只要根据该IC得一个report pin就可以知道充电的状况了
回复

使用道具 举报

发表于 2009-12-1 14:17:36 | 显示全部楼层

battery

写的简单了点,不过比较概括就是了
回复

使用道具 举报

发表于 2010-1-14 09:11:25 | 显示全部楼层
真的是十分感谢,中国就缺少您这样的标榜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-4-28 18:05 , Processed in 0.041464 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表