找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
楼主: peterhu

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?) V; Q9 u$ Q4 P4 R' \& ^( D! S
看看是到哪里死掉的。
回复

使用道具 举报

发表于 2009-6-11 22:45:28 | 显示全部楼层

找到死机的原理了

感谢版主的回答,
+ K! U/ ^/ Y$ v* T/ c3 d8 p5 M今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
) b1 Q" q$ F+ B6 P3 E4 V我们在操作系统下用SE在64口下d4 .a7是发现在发d4的时候触摸板的数据线就被拉低了,而在发a7数据线又被拉高了。而且现在EC就死了。当发a8时又好了。现在我不知道在重启的时候是我们EC都会接到什么命令。还有这些命令是OS发的还是BIOS发的。现在感觉自己越来越糊涂了,还请版主指教!谢谢了
回复

使用道具 举报

 楼主| 发表于 2009-6-12 09:52:51 | 显示全部楼层
如果像你描述的状况,那么EC就没有死(还可以收CMD).在我们的code中A7,A8是disable touchpad,enable touchpad的命令
! G7 h0 q4 S7 [9 g2 G# M8 _D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
, k8 `* _- G( r- \这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析9 y; \, e4 l1 f# |0 b
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。; ]: i: x7 Y/ N  y

, g' V( V1 ?; WVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,% Q; X- ?& r0 |: q+ f: e
e83,) q7 ?( [; ~' p
IFE,$ D2 `( M( ^# _4 B; P$ l' v5 A
e23,oFA,
' L: B$ t- T2 `1 P1 G' x4 FID1,DDF,LPC RST  ^9 Q4 F" L. E; W& E( D
Swrong LPC RST
  N7 z- S3 W" c9 P7 j/ yLPC_Reset_Flag=64

' k7 B1 J6 |" O( {) j6 r
) }( d9 c% ]& K) c8 ~- d5 D9 nID1,DDF,
- R: J! a* C' D9 n& DIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,% a- ]4 K8 ~+ s% p! z5 I/ n8 H. y' M
ID1,DDF,
- j# @9 e# K  F. N  l- `I90,VED,C,RFA,OFA,V01,C,RFA,
4 A' Z; }% \, Z4 a% uID1,DDF,O,OFA,O,: C, ^7 T! n+ |2 M8 j; q. Z4 K
e2A,>IDLE! p1 B; Z+ |7 q3 P
oFA,<1 i' K6 M! N9 g' u) U
e00,
8 D* c) P# X$ i2 wIAA,O55,O,
) y* E4 h5 ?1 _5 Q$ @$ o1 xIAD,
* o  Y  j% ?8 |: n4 AID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
' s& O" q# ~: h( J8 T3 s1 f" wI60,O,D65,
2 ]+ J1 Q& ^. t  x& D, pI60,D6D,VF5,C,RFA,OFA,K20,- x- `9 O# S2 C8 y- t" s
IAD,5 S' l( E, z2 R; \; Q- {  h. N8 ^
IAE,O,VF5,C,RFA,OFA,K20,' g- g; S5 W* l6 C) i2 M
IAD,/ @) i! }, X- R+ C" R
IAE,O,. T" Y- U6 w6 P1 Y- B1 \
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
! `3 }. ^! n% e% m6 v* sI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
6 o, Z7 R5 Z% p/ e+ U3 \+ M' EIAE,O,
# X) |4 T) S( Q% H& ]& ke91,d2F,d00,) f$ Q$ b: b& f% \6 Y, K: u) T4 P
e10,d83,d2F,P3_K#/ o/ l7 ^. ]# G; J+ @
P3_K#
% `: J8 A4 @0 O6 w9 q

& v" Q2 s% u- q# f, ^7 U, |' Re23,oFA,6 V( u& v% S8 F
I90,VED,C,RFA,OFA,+ ~& P) V: m: w5 A8 j  O4 c
IAD,
- O/ r0 M& P" K6 `! v* ~IAD,O,
& z8 k6 h6 T: O1 A0 v. d) WIAE,V03,C,RFA,OFA,' I5 a' f( x- k
IAD,- A+ Z+ g  g6 I4 N4 s( y
IAD,O,3 E0 Y& L8 ~' f: L
IAE,
. R! r! F& {# |1 }5 \) E3 b5 RI90,VED,C,RFA,OFA,
2 I) D9 C' E# P8 sIAD,
  I+ ^& \8 m% n6 q0 R; pIAD,O,
$ I% @* O" S1 g1 \4 V- r) X% oIAE,V05,C,RFA,OFA,
8 o( l  K4 }! T5 i6 I* j0 X- ?. C- H% hIAD,( o5 p9 f, S# s
IAD,O,
- C. X# i8 E2 V" _+ @) Z$ uIAE,O,
( K; J; k. W1 ^6 e- n( le90,d2E,o00,
. T8 _3 Z8 c8 D3 }e91,d2F,d00,P3_K#3 J. F7 U( X7 W* |$ ^  A; V; L
P3_K#

4 ]+ t' ?6 }  W5 ]8 i+ l. r& y* F! a7 l3 y3 {, x4 }" r
IAD,VF3,C,RFA,OFA,7 ?+ L8 {$ \) P
IAD,9 H7 K! z& Y0 Q* \6 L5 }2 f
IAD,O,
! W. c; p7 m- i5 J( K5 dIAE,VF3,C,RFA,OFA,
% P* N) ^/ n! V9 @; dIAD,, M- ^6 `0 C2 `& c" T. F
IAD,O,3 s9 q' v# k/ M' Z0 n1 Z+ F
IAE,V20,C,K10,RFE,OFE,K08,8 M- W. s; i' j9 o# [% t
IAD,2 f" L& d, i* C2 z
IAD,O,' [% u1 `2 a/ u5 U
IAE,V20,C,K10,RFE,OFE,K08,7 r- U& C1 P1 {6 Q
IAD,: e  s6 G  _( Q
IAD,O,+ ~7 @9 W+ Z( c
IAE,V20,C,K10,RFE,OFE,K08,
2 o9 I" M, ]) ^IAD,
$ y$ a) K6 o0 i6 S8 Y% r3 ]IAD,O,
3 B. D9 |- C! n& WIAE,
/ E8 x; ^9 b/ v- h$ QIAE,VF4,C,RFA,OFA,! ?% f% f9 s0 F2 y
IAD,( O8 a9 Q$ @: Q& @; C
IAD,O,+ ]9 N% w4 h3 f8 b, o* {" c
IAE,VF4,C,RFA,OFA," y2 g+ j  O' ?: V) ^# O+ S
IAD," C5 W2 l9 p  |6 k
IAD,O,
5 A! D1 E2 s( P8 e- h, d9 e+ d0 RIAE,VF2,C,RFA,RAB,R41,OFA,
0 F7 o+ P) J/ o2 ?. s- lIAD,
2 g& j& e- t9 T* ~- WIAE,O,OAB,8 H; t- o9 I! b8 R
IAD,
+ Q* V- `+ O9 M6 U* v, [/ H$ iIAE,O,O41,' r* g; \( M+ H& {5 f. X
IAD,
7 }. g8 F, u0 K2 t$ g  |IAE,O,VF2,C,RFA,RAB,R41,OFA,
9 _' _' E7 m7 R4 UIAD,' [6 d4 d3 f- }5 E0 |- X7 W
IAD,O,OAB,
; G# W7 w( [  \: R! D: Z! xIAE,O,O41,
0 e6 a6 u* e& ]# x7 N' MIAD,
0 o  Z4 }+ T$ S, o7 w2 b& |, ZIAD,O,
- F1 K% ?* g6 x9 L+ Z9 l0 J% wIAE,VF2,C,RFA,RAB,R41,OFA,
$ h8 Q1 \. D% H0 tIAD,4 M$ f# y- {$ s5 I+ k' k
IAD,O,OAB,+ C* b5 ]4 C' G0 F' {# z% A5 T
IAE,O,O41,5 l, r* c3 t+ e% W4 s  t
IAD,) W8 C9 ~, S$ g6 g4 c# C; ~; h  Y
IAD,O,
1 J' m0 l1 g. p3 t& vIAE,* H4 _. w/ i+ b% j7 g4 h; u
I90,VED,C,RFA,OFA,4 v* K" C6 z1 t; x
IAD,4 q* N0 z+ M' X# M
IAD,O,
0 s7 Z; w/ d- I% {IAE,V00,C,RFA,OFA,
' V: H: n4 `( v0 ?) [. wIAD,- f, V: ~& [4 W( g5 i: X7 a
IAD,O,0 {) q" U7 R9 v7 p
IAE,9 `7 J* t: W* V- S. y! m* u
ID1,DDD,' T5 }) @4 _5 B' h) x6 l- P
ID1,DDF,3 b2 u7 L0 y1 G  H
ID1,DDF,
7 n3 ^% }4 u$ e0 V: N; L; G% O. Ge22,oFA,- g1 w3 n  W4 t- c7 P! @$ a
e83,( |  W8 G6 ?  ]8 r9 R
e83,
  q/ K5 T* S) s% q8 P# ?8 E/ G, Ue83,
3 ^8 c1 R9 F4 @. ]% y# B* me83,
8 S) B8 d$ B6 ^% n, ge83,  [* K3 d& [+ q
e83,7 Q  @! c, l8 x6 s: n
e83,* J* ]6 T1 @$ P
e83,! o9 T& N* E' N( W
e83,$ w. D4 P  D6 R( a' n- v
IAD,
* x: {+ o  D1 v: t2 D/ J& v; _IA7,: e( @8 C5 B! O( F1 X2 n* v! W+ t' g
IAE,O,- V, `5 m1 T' E6 _6 ]5 P
IA8,
$ g* j2 S- k4 v  SI60,D44,1 V* x9 K; b1 \+ T6 O( _
IAD,$ F; E6 a& d- |
IA7,. t/ A) c: j& B# u4 b# ]
IAE,O,
* j  l9 s/ i6 P# ZIA8,VFF,C,RFA,OFA,RAA,OAA,+ r0 i5 L! X/ w4 x
IAD,O,K20,
$ m6 B. h1 [' I5 nIA7,
5 [9 G( J' I( G0 C, j- {IAE,O,
; L+ L. ^9 ]; @( NIA8,
0 A- y' O2 P% ^# yI60,D04,
/ G# \. G" P6 A0 |. m& MIAD,
9 f/ H" n& Y6 W4 C' M; q# bIA7,0 j5 x2 o6 z& d# O8 w
IAE,O,/ F9 R! O$ M/ w0 n2 @
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,: N7 F  q. O) T8 Y
IAD,O,
; r& S  S4 R# \- N# _6 X- cIA7,
& o0 `( d5 e; P& f9 n) H8 rIAE,O,* u6 w5 K& V9 B, B
IA8,# ?" G# D. |7 H) k, u5 e+ h5 b
I60,D44,
# o/ p! r, }# G- zIAD,
5 R) p9 X, O; A! {$ H# i1 ?! t6 @IA7,
9 e# l4 W5 L8 F( i  wIAE,O,1 E% J* V  W+ C1 e$ K& q
IA8,
7 R- P, T+ C1 D* g9 K1 [ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
5 P2 z- m6 k) ^) j, E& [! N4 A8 _- pIAE,O,3 x( x/ \- c9 V
IA8,
. {9 K' h) k. e5 @3 T& dIAD,& Z' u1 y- ]! }& g' K
IA7,: [& l, S& Z' x" c1 d0 E
IAE,O,
. C# Z. E: d5 d7 H* LIA8,/ b1 o% T1 o" @( y
I60,D47,
& f* I! i5 W% E" a- R8 z; AIAD,( ^( M8 [/ V+ a% y4 ]
IA7,+ e2 j- \3 K7 ]; m6 b
IAE,O,4 }- c  x" U) n. e: P
IA8,
- b  o3 |6 p# l! ?/ v4 gID4,VFF,
3 t$ [, q! Z* M& Se83,C,RFA,OFA,
2 p) G4 M/ u7 F3 ^  He83,O,RAA,R00,OAA,O,O00,+ R" h# o. O9 T  }
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
- S  w" `& U7 w7 {  @9 k- OID4,VE8,O,C,RFA,OFA,
$ Y) _6 {4 B+ X8 A" tID4,V00,O,C,RFA,OFA,1 X5 E0 X& i. y+ o3 S
ID4,VE6,O,C,RFA,OFA,- Z* m9 S- ~$ x7 b
ID4,VE6,O,C,RFA,OFA,
# E' S& G5 \  _" u3 ~. vID4,VE6,O,C,RFA,OFA,
1 a7 j" M$ h: N5 g5 MID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
. S( w, ?  k: EID4,VE8,O,C,RFA,OFA,
- {9 n4 P- x1 y& n' s8 |! GID4,V03,O,C,RFA,OFA,
5 o7 ^: _6 `7 dID4,VF3,O,C,RFA,OFA,: K' _/ K/ w. [7 ]5 y5 ]8 q
ID4,VC8,O,C,RFA,OFA,. h* x2 n: M9 F  P! c- n" J- g! n
ID4,VF3,O,C,RFA,OFA,& h: H9 s7 G" ~) h0 q
ID4,V64,O,C,RFA,OFA,: I: `8 D* ?8 K. T: ?& u/ g0 j
ID4,VF3,O,C,RFA,OFA,  c6 `; D& v; o/ f: m6 b
ID4,V50,O,C,RFA,OFA,) O3 E1 O0 g8 E1 L/ t& d
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
6 {2 E+ @0 ?+ c, bID4,VF3,O,C,RFA,OFA,
9 U& a+ b7 }* D. o" I- @, `ID4,VC8,O,C,RFA,OFA,. e2 n( o# E5 k" \: U' Y* r; r; N
ID4,VF3,O,C,RFA,OFA,
/ g8 O. p, @2 d1 J8 S: WID4,VC8,O,C,RFA,OFA,; [# P0 @( Y5 Y
ID4,VF3,O,C,RFA,OFA,) K/ N& Z( f. A2 K  H
ID4,V50,O,C,RFA,OFA,, t1 J+ y6 l! K
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
4 [: \6 r1 h/ K* T" UID4,VF3,O,C,RFA,OFA,5 _- t( N7 I: K7 j
ID4,V64,O,C,RFA,OFA,8 A; T) A* s' U
ID4,VE8,O,C,RFA,OFA,- Q6 g0 t8 ^, z0 q. g5 X1 X4 O: {0 D5 s
ID4,V03,O,C,RFA,OFA,
5 P- u: B9 V7 k1 yID4,VF4,O,C,RFA,OFA,O,+ F. Z8 `& W' c. B
e83,2 K* ~+ ?# F) Z& h9 P1 X* _
e83,; D; K0 n4 }" J3 b- z
e83,. ], [" f0 A; e- I2 s; n+ n
e83,) x' e' b; p2 {! A4 h
e83,
0 s. v* g8 g/ r7 n  u- s. _' We83,
! C: [! `) K4 Pe83,
: Z" p# J$ A; a+ M/ _+ ke83,! ]& ^  z( d8 t9 J( p, o! f  }4 t/ s1 b
e83,
8 B5 ~& }: A6 w$ \' H2 N0 ?e83,00,C8,2E,. q- C% z1 J& |: Q4 t
e83,00,C8,2E,
' m6 \, m# I$ L/ a" y/ C9 e  Xe83,00,C8,2E,
0 ?: G% P0 A: @" A: {& ^e83,00,C8,2E,
) T+ R0 p8 I; B( F& Je83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
2 u) R- ~  Q& R: h  ^e83,
6 w# U$ Z0 p! r# H
1 u' i: c6 H0 B
3 q: J' N. @6 M$ p7 N4 Y
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

发表于 2009-6-12 22:21:11 | 显示全部楼层

感谢

谢谢您的答复
' y5 V# Z4 u$ w8 V! U* k( P( H     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
. V9 I8 ?  F* [  a& i$ t! T0 j      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!& h/ H7 m* ^5 T- h; @' i' ^
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。) o3 e! p3 p* g( U$ Y! s* i4 Q- g$ ~
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!9 K$ B8 [4 m& n  A/ P4 L
BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
! [9 F# p/ D- g. X: m; j4 _Device(EC0) {4 L% g: _! e5 g* m
Name(_HID, EISAID("PNP0C09"))
( P- F! e* W9 P+ {  g% a......! O" P1 f0 Z) ~& F! x
}$ H3 L' e- v2 q7 x2 z2 h
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
- z* l8 \7 s9 ~就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)6 t- Q- \' Q+ D) X' X2 u. ?4 K( O
2、   
1 b/ f! o% ]2 c, B5 }) X# \Name(_CRS,ResourceTemplate(){           
' Q. X& H6 R9 O$ e  y        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
* E/ }$ ^( s2 N            IO(Decode16, 0x66, 0x66, 0, 1)# p  E4 ]% v4 j$ z& _- _& h
        }). q, N  B2 J; S& R5 L
3、接着就是8 u# m9 N: u: N1 r3 m
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO71 P8 l$ D4 {5 K
通过这个声明,OS知道EC和哪个GPE关联起来: r( t: I" D$ {- ?* U# @
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来8 U" ^& ^& B: U; z% T' G3 j
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。# c1 N$ x  M4 S" b" ~; t
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
1 v- L) |2 n% w3、OK,看看linux是如何处理SCI中断的; u9 l5 _" X6 O  s' p% m9 a
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
5 B+ \: r3 F. Z+ X2 g, r1 a) l* uacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
9 D4 n# d. r( s' r" r4、EC接到0x84查询命令之后,就把Q事件号传给OS
# l) B- C# i2 N3 c- _2 G5 bOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

发表于 2009-6-13 10:49:19 | 显示全部楼层
高手还是很多啊!感谢您的回答!* H& ^: Q+ E. P. N3 O
    主要是我们现在很难看到BIOS的代码,其实代码我到时有就是没有看AMI代码的环境!您写的这些代码应该是BIOS代码吧!是不是可以这么理解,BIOS会提交一个ACPI的表给OS。这个表有我们EC的设备号和通过什么端口进行通信对不对,还有就是如何区分那个SCI是我们EC发的,这一切的动作完全由BIOS设置并给OS。是不是可以这么理解请指教
回复

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
) S7 o/ \4 o. l, K你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了# d8 _) z( W/ Q9 Z8 J. F5 w
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。9 \: g. B9 Q/ |2 w, H# b
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
: x! d+ ]' v5 R3 z& q5 ?bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。  L! p6 F+ B! a4 K
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

发表于 2009-7-3 16:07:30 | 显示全部楼层

分析的很好

分析的很透彻,学习了
回复

使用道具 举报

发表于 2010-4-7 10:31:29 | 显示全部楼层
好文章,收益不少,peter
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-1 19:35 , Processed in 0.507847 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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