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

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

[复制链接]
发表于 2009-4-18 10:00:43 | 显示全部楼层 |阅读模式
我所知道的EC====>Battery

+ M3 L# c" F) J% }: H8 h
! @) ?( Y- R) G  N, D

& F! y; W* O5 f; p' h- K
1.Battery Information
8 @" N. K6 i* {8 N" a0 X1 b
# U5 h9 v; |$ C+ y1 N

. ?6 _+ C! E4 q+ F3 s, k% B
: J3 y: \: {: R- r0 _( F9 @9 \
   探测Battery的信息是EC一个重要的工作,OS也要通过读取ECRAM中的内容获取电池电量、温度、电压、充、放电电流、Battery是否存在的信息。那么EC如何获得这些信息呢?Battery通常是一个smbus device所以它会接在EC的一组smbus上,而Battery的spec上会给出Battery的smbus的地址以及读取Battery信息相关的命令。EC通过向smbus上送Battery的address,cmd然后就会取得相应的信息了。
6 e( O& E- t, j

/ g( C, o5 L& P6 [4 _
! C* r3 q- q) k; ]; k7 b+ `
2.Battery Charge&Discharge Algorithm

+ n# G. S  P- A( A) ^  y; y/ H+ c- h

! g' g- @4 S# J+ w" f/ E; L
& S  `( I2 @* m+ _; m
1)Charge
6 a$ f7 K) A6 t% {
   充电的过程是这样的,AC in 的状态下Battery插入,这时EC会进入precharge mode进行小电流充电。如果precharge时间过长(通常是指超过一个小时)EC就会停止充电并且认为Battery dead,送给host一个Battery Fail的Event。在precharge mode如果充电电流增大到特定的数值后EC就会进入fastcharge mode快速充电。Battery 充满后停止充电。在这个过程中如果电池温度异常EC也会进行一些处理。这就充电的简单过程。
) P5 ~$ K8 u) z* W0 {" V
2)Discharge
7 c5 N* x1 u" p! C# `( J6 f
   AC out & Battery in这时Battery开始放电,在放电过程中如果电量小Critical Low,系统处于S0, EC会发Critical Event给host,然后OS紧急关机。系统处S3,EC将会唤醒OS。如果电量小于BattLowLowled将会被点亮(Battery Low Policy会详述)。另外放电温度也会被检测,如果温度过高将会做降频动作等。

+ H% o( V$ k1 i0 K4 Q% O! G

" Q# K9 F7 A8 `) Q$ }8 q3 t( [+ o8 L0 Z+ T/ e! N

1 i+ g6 q$ J9 |' X1 @; L8 Q) ?8 b
3.LowLed Policy; \: Y2 D4 k: o0 J
9 r9 c% B. Y- U, S$ C; \

* p2 N5 S" n* R  Q. Q. f
# ~7 I- B' J3 l! J6 h/ V
    经常使用NB的话,大家可能会发现有一个led很有趣。插入AC充电时会看到一个黄色的led被点亮,电池没电了会看到一个红色的led亮,有时还会一闪一闪的。其实这就是EC导入的一个Function。黄色的led其实跟这个Function无关,它是充电指示灯,不过它和LowLed摆在一个位置。那么这个红色的LowLed什么时候会恒亮,什么时候会闪烁呢?当Battery的电量很低的时候也就是小于BattLow时,LowLed就会恒亮。当Battery Dead时LowLed就会闪烁,导致Battery Dead的原因有Prechage时间太长温度过高或过低。

4 T; d: p" Q* Y6 \5 m# `
) a+ d+ y0 U- q; a9 e/ I& L/ B  |

' o- G7 H1 F7 \  f
4.Battery Event
# B  ]5 O5 ~# A5 }* w
' p. \( u4 a8 c$ c2 a1 l( u

- }+ O+ y5 S: M3 e1 S% R6 u0 }
3 T& m' ^9 K, u8 \( o
    Battery
在充放电的过程中,因为电量、电流、温度等原因EC需要向host端发送SCI Event,用于host在特定情况下采取相应的补救措施。
0 \) P# F9 ], p6 }7 s# l3 d
6 H* I- i1 R, n  B* b& s7 X- @
1)BattChgEvent

4 D! Y* U" \; Y8 O
     当Battery插入或者拔出时EC会发送BattChgEvent通知Host,这时Host会读取ECRAM获得Battery是否存在的信息并更新系统端的显示。

* ?$ ?/ i/ T, I# M
1 l$ @) K/ ^$ @- l+ D
2)BattWarnEvent

9 M/ a7 S$ U( S3 |! f
    当Battery的剩余电量到达Battery Warning Level时,EC会发送BattWarnEvent通知Host,Host端收到后会给出提示信息。

: O* w4 ]0 L  a% C# l  f+ S( T

! b% }4 m% ^. z- `
3)BattLowEvent
9 E/ j, H/ N, N, r
     当Battery的剩余电量到达Battery Low Level时,EC会发送BattLowEvent通知Host,而且这时LowLed会恒亮。
1 q; R& Y) j& Z, ~+ |
4)BattCrtEvent
4 ]* b. f( \4 d8 Q* y7 s% G  I
     当Battery的剩余电量接近0%时,EC会发送BattCrtEvent通知Host,Host收到后做shutdown动作。如果在很长的一段时间里(几十秒),Host还
2 T! q( J/ c' g- K% Z& [8 a没有shutdown,那么EC将会Emergency Shutdown。2 d' |$ s9 P( s

" `% l4 T0 F: o" c7 W  D
  Y1 O3 k. ]6 G9 {( t4 N5 R
$ [. f8 i7 W' f% U1 k2 P& z
  
; X6 ?: e5 M  k1 J3 @+ Y

- u" R  m& o! x& M
  
# H; k# l4 ^8 h4 j) X/ F5 \3 i
5.How to Debug Battery?% b  l6 k9 c) z

/ p8 C+ `8 H5 Q% J* Y; M6 p
# \* J3 G/ `: S+ ?2 X, y
; f# ^8 b8 v* X; o: V8 T% \
     EC
通过smbus不断的获取电池信息, 所以电池信息在不断的变化之中。有些时候为了澄清问题,或者为了增加新的Function该如何Debu呢?我的做法是使用debug tool将smbus停掉,然后将一些符合条件的值通debug tool写入ECRAM中,然后验证相关的Function是否生效。另外如果是需要给BIOS发SCI Event,我会直接将Event填入SCI queue。然后驱动SCI,让SCI Event被发送出去。
. U3 z- {2 Z: B/ J
0 J8 V- k6 p% x6 }; u) l: I

0 S; a) x8 d9 ?% a; V
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, 2026-10-20 07:38 , Processed in 0.067308 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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