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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?3 |: V- r; w( a. n
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,% O9 k* I% c0 B0 O( ~
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
3 U# r, R! I, E) d我们在操作系统下用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的命令$ B1 a# U* W- R0 a/ S
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check2 g: F+ c4 }6 Y4 d% F
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
! g/ E3 B* o: f' U& e7 f* f$ Y其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
, a- {9 w7 R7 h1 F$ k  _! h& R, [1 q' |# w7 f# S
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
( @5 ~' `0 K0 d0 t& le83,7 _% u/ [3 l" \1 ]
IFE,7 M/ l0 V3 l. Y
e23,oFA,0 ?5 f% i4 y  H" u) [5 S+ F
ID1,DDF,LPC RST
; _: K) J3 s3 V' f' i1 vSwrong LPC RST
/ g. m! `# _" O: |LPC_Reset_Flag=64

" u* ~' z# Y2 [0 [3 a  R3 H  D- x' v/ A  ]- Y; J
ID1,DDF,
! ~  X9 \/ l. }" \IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,) O6 v7 i: g2 n, G' j3 ^7 \  Z
ID1,DDF,. w% n3 U8 [- }$ s
I90,VED,C,RFA,OFA,V01,C,RFA,
% r+ B7 ^- U& L+ o* oID1,DDF,O,OFA,O,) ]. S/ L2 H3 J" G! {
e2A,>IDLE! o% R8 B. C2 t, B3 n: u
oFA,<
& \, h0 G* A3 We00,& K" x( T7 f6 Y' |- b! a) q' D
IAA,O55,O,
8 J5 ?- d/ u7 M. _* wIAD,
5 \6 b% _9 {! M+ m6 {& ]ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
( J! n, a9 o0 a8 ^5 S! b% ^I60,O,D65,$ M! a* e5 y5 _2 k! D$ N
I60,D6D,VF5,C,RFA,OFA,K20,
3 P. t4 Q" b3 B/ P" bIAD,
: i" ?' ]# z& K8 S& Y# Z  fIAE,O,VF5,C,RFA,OFA,K20,
/ ]- V* G- N, i7 ], Y: nIAD,: I% P0 J6 m7 Z
IAE,O,& d1 u, Y$ c6 g; Q
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
) P- E8 d9 q8 XI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,7 S( _5 K# J: ]2 E7 Y5 a
IAE,O,3 q0 ]6 H' F1 y/ y8 p$ p
e91,d2F,d00,
- h( h+ C0 v$ X- c# U/ he10,d83,d2F,P3_K#
) W7 m5 R1 R: ]: z& r0 eP3_K#
- h* T5 C( Y: N* F

; s9 J1 \( @& k/ }0 we23,oFA," F* D" c  O! q, h; z
I90,VED,C,RFA,OFA,
- w+ Q9 t5 m# U6 X2 H% T: {* ^IAD,6 G$ U8 P# Y- M) }
IAD,O,
5 y9 A: }% `- g0 M! \IAE,V03,C,RFA,OFA,
% C4 a9 z. N) G5 F( _- F0 I4 t$ LIAD,1 X' V! W' V2 ?7 W4 t  P
IAD,O,
8 D( v; _! F9 w- {( ?  N6 o( M7 ?3 bIAE,
/ r* p, S1 u$ A- y0 o$ j8 b# WI90,VED,C,RFA,OFA,
1 O7 g# d# Z+ C  y2 }9 iIAD,
0 x( e! A4 g5 a+ p& V3 [IAD,O,
# o5 Y; ]4 A; X, q5 }IAE,V05,C,RFA,OFA,
+ n7 B7 ~& _' L. P0 g. x7 PIAD,. a# `" k  s3 }& \0 ]
IAD,O,! U: i+ ]$ |" L- n
IAE,O,
: y5 F1 w5 Z0 se90,d2E,o00,
) ?( {$ D" f) v  ke91,d2F,d00,P3_K#8 R7 _  n6 Q. o; w8 q5 Q
P3_K#
, D2 p$ B4 x& u: Z) x

/ W* q5 d  @! o. b' q# D4 i: KIAD,VF3,C,RFA,OFA,  L3 J  n) S+ I! F+ u0 |3 @
IAD," K8 I: p# Y8 c6 T8 _1 ~' T
IAD,O,
; A; g/ l$ ^9 V9 g% N6 K9 nIAE,VF3,C,RFA,OFA,
$ K  i) B* [( ^6 `. T" Z& s% ~" R: aIAD,- _/ N  J- h( k% C3 `
IAD,O,  y4 l5 w* g' S. M6 y% ~. A4 C$ _
IAE,V20,C,K10,RFE,OFE,K08,) c  A! k* W' z1 o$ Z( S
IAD,
- T& B. W8 O& d8 g! wIAD,O,
1 k" j' Q( n  E" S/ YIAE,V20,C,K10,RFE,OFE,K08,
: A( x& f) p% @7 g4 Q' PIAD,
5 }( F' a6 o+ F) ^2 bIAD,O,1 A# z" Q' a! W  A1 M; u
IAE,V20,C,K10,RFE,OFE,K08,
# r! i: \) L( q: F6 y1 W' TIAD,
6 x( l4 W& r1 XIAD,O,
" z% K7 m6 B! Z* R7 X9 e" A! l3 SIAE,
3 O$ M" ~8 ~5 l3 X* yIAE,VF4,C,RFA,OFA,
6 U$ w9 B  P$ J5 bIAD,1 z3 a  z; Y' I. N4 k& Y% E
IAD,O,
8 @# u. R0 @4 B& V: O) g* \8 ^: aIAE,VF4,C,RFA,OFA,
. m$ G- s; R  R& ~3 UIAD,
* w  m5 y. y/ KIAD,O,
9 ?1 [# T6 n, D$ r( WIAE,VF2,C,RFA,RAB,R41,OFA,
' f( A/ o1 o+ yIAD,
7 \6 U' z% K8 }* l0 TIAE,O,OAB,
! h7 l9 g9 _$ FIAD,
' A* s3 p8 T6 ^* wIAE,O,O41,
" Q) _+ x7 F$ d' I+ q3 o3 N5 iIAD,' Y( D7 W" b1 b2 b8 i
IAE,O,VF2,C,RFA,RAB,R41,OFA,1 l$ A1 M4 }0 W
IAD,, L8 }& K+ z$ q. d7 D: Y8 O, y
IAD,O,OAB,
9 J7 b3 j. l: t1 c; d& ^* qIAE,O,O41,, Y- u) G) c" e- E
IAD,: _4 L- M" ?2 d9 s; M  z5 [
IAD,O,' @. k; ^3 y! `+ J
IAE,VF2,C,RFA,RAB,R41,OFA,0 p8 [4 o& Y/ a. P7 O9 N
IAD,
. C( j' F) V6 o8 o2 nIAD,O,OAB,4 v) d* s; U* V
IAE,O,O41,
6 o8 t2 ^3 C/ }* J4 }1 _/ `4 x1 |( DIAD,1 z5 [) `1 i) C8 _0 l+ c' q! i
IAD,O,2 p$ |2 S, b; N, F. B% m4 _
IAE,
3 S& [6 }5 s& F6 G- V/ U& M( d# jI90,VED,C,RFA,OFA,: ^6 K- L, v# ^* c! }
IAD,
  ^- m  r7 p) w/ s7 i& U1 ?IAD,O,
% s- i0 Z# v- K( GIAE,V00,C,RFA,OFA,
' {, J% |3 k7 C  wIAD,
+ U* T3 i4 ^3 ^IAD,O,
$ x: Y# x# }6 Z5 I" F; o1 y% L4 aIAE,4 Z$ I! ?' [9 N" z# x5 A$ a
ID1,DDD,
# @0 M  g% z3 h* v& I1 ^ID1,DDF,
8 @1 X2 o/ `6 w' F; lID1,DDF,2 _/ G7 A7 G. K
e22,oFA,
4 }' W/ m$ ?; v/ {/ m2 Me83,% [6 o  H2 n" w0 O  w% K3 Z* C
e83,
+ g  x% V2 q* V: U& re83,7 J4 V7 Z5 c/ Y3 L
e83,
1 ~; g; b0 c& R  He83,
; N0 V" \$ t: c2 k6 Q3 ~e83,7 O1 L/ n% k$ a! p: A) x: U1 t
e83,
8 h/ n4 u7 M& y; b& P4 ?' ^) @e83,* c- d7 r% Y; `; j9 ~2 E
e83,9 o$ U1 z; {" G( e; `* Q4 G' [  R! q
IAD,
! W3 Z. H- f) ?/ kIA7,
- c& V* k& K" ?+ K* d0 cIAE,O,' I" Y! m) [* x" X3 C
IA8,! V/ @1 Q2 s, [2 C  g
I60,D44,
+ r5 g, K/ Q5 aIAD,
! c+ y5 [8 @. e2 YIA7,% R' J( h( b( o. u% r
IAE,O,
( r' c) r! z1 W3 V1 L7 xIA8,VFF,C,RFA,OFA,RAA,OAA,2 q1 V4 [; T; X5 F
IAD,O,K20,( ]& V. b; I( o6 R) b
IA7,
+ K. }( _. Z3 [* ?2 I7 u  {IAE,O,
. j0 g' ^: K# b& u$ [( P' X  o. uIA8,5 B( ^& D3 H  ]
I60,D04,: l+ W6 [4 \8 g1 N
IAD,; D6 X+ _, e  r6 Q  F; U
IA7,
7 y- n  p" u' {! f! s% j5 KIAE,O,
( e3 a. ^* c3 K: j5 d! |& lIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA," D5 J8 d6 b8 L3 x
IAD,O,4 }" p+ K* G: h
IA7,
- {9 X0 t3 q* I/ K/ O* |IAE,O,2 k  A0 r! O* b8 M: W/ n
IA8," f0 O& B$ Y1 k
I60,D44,0 W5 a, ~7 u: g- V
IAD,
' [" ^9 N+ V8 s' D! l9 oIA7,
4 p* m& @8 v& F$ u$ [/ p& M1 z0 RIAE,O," I1 y% u# V  ^7 ^
IA8,
2 i  v3 C" [7 WID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,6 |7 M* a6 H% @1 `, a# D
IAE,O,& P. K* Q% N$ L- M! Q5 [3 p# v4 Y
IA8,5 x& ?4 d$ \. \8 E. X, m, j6 [
IAD,
: n5 @1 J7 t) [/ cIA7,
% v% H/ B& ], |IAE,O,
! c$ a% m8 l  }* s% OIA8,& R/ s/ {* `" I* O! U9 x' ?
I60,D47,& F' U8 d* B& R1 ]4 v  C
IAD," i/ t; w% U7 [* a0 I
IA7,
4 S" {% X) @  f. [- H& e2 VIAE,O,
% M# Y/ W9 E& b7 A' q4 J: XIA8,5 j3 c6 v0 j3 v: t# k, Z2 e# ?
ID4,VFF,
2 ]% k: o9 K' O, K; se83,C,RFA,OFA,
5 \6 ]. r0 {9 Be83,O,RAA,R00,OAA,O,O00,( ?, W9 ]7 L) W8 @( b
ID4,VF2,O,C,RFA,R00,OFA,O,O00,& F/ t2 w; d8 Q# j) f& j% S
ID4,VE8,O,C,RFA,OFA,
) Y2 b& L) C8 Q  @, v7 a/ eID4,V00,O,C,RFA,OFA,
  [) _, |: G& L$ `ID4,VE6,O,C,RFA,OFA,
- Q3 M3 Y9 j! i. Q5 {ID4,VE6,O,C,RFA,OFA,
1 L$ ?( a7 ^) l  }4 [8 N: n% kID4,VE6,O,C,RFA,OFA,
9 `- r$ A4 k5 [3 Y0 C( jID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
2 J; @3 i' ^% JID4,VE8,O,C,RFA,OFA,
/ E8 i" _5 g* q- o* _0 q; ~ID4,V03,O,C,RFA,OFA,7 _3 D1 Z, e+ A  B/ U( u7 w5 P
ID4,VF3,O,C,RFA,OFA,* B  o. V$ n' D9 ~8 D9 A: q7 D
ID4,VC8,O,C,RFA,OFA,
6 f- M$ U7 `. J/ {" V9 P4 kID4,VF3,O,C,RFA,OFA,
0 s9 G3 a. F2 y- aID4,V64,O,C,RFA,OFA,
- L: N0 U/ f% l1 L: t3 L# _ID4,VF3,O,C,RFA,OFA,& ]2 I+ q6 q: G( p" S
ID4,V50,O,C,RFA,OFA,
, O: z( D, A' e3 [2 cID4,VF2,O,C,RFA,R03,OFA,O,O03,
9 n% }0 V0 W" L! g4 y# ^ID4,VF3,O,C,RFA,OFA,
0 {5 @7 M$ I7 d& dID4,VC8,O,C,RFA,OFA,+ ]: ?! A' D$ V
ID4,VF3,O,C,RFA,OFA,2 C6 A+ i! n8 I$ x
ID4,VC8,O,C,RFA,OFA,$ z2 ~2 F( |) @( c# c! T
ID4,VF3,O,C,RFA,OFA,$ {- C7 j$ L! ^
ID4,V50,O,C,RFA,OFA,
& ]4 m+ u, _( g# d( ?ID4,VF2,O,C,RFA,R03,OFA,O,O03,* L" \) @! h$ l1 V4 N
ID4,VF3,O,C,RFA,OFA,1 X+ j6 ?! V* s8 g
ID4,V64,O,C,RFA,OFA,
# i. Y! l. G+ e7 L! QID4,VE8,O,C,RFA,OFA,
& n8 C5 [. n- J! Y6 J: |3 O) v8 iID4,V03,O,C,RFA,OFA,
0 {0 K, }& p: i3 }  c. X* QID4,VF4,O,C,RFA,OFA,O,! Y& B- ]* H; g: n/ p- A
e83,5 }+ ?! ]* }: {" C: n( O
e83,) V; Z1 I  t: s# V' C
e83,9 g) b1 x: b: p' ?" u' l3 B6 Z
e83,
7 O; @0 |. ?6 o7 \3 z! b- L" }  f! be83,4 z2 j" M7 r. H4 \
e83,
! a$ L9 l& R! F. ~e83,
- o) ?0 x; @2 K( n! fe83," n* ]0 \! ^: A4 |  ^3 Q  D/ k6 {
e83,& d5 x2 M# k9 H8 ~- _4 Z
e83,00,C8,2E,8 i% }/ Z; Q/ Z' K
e83,00,C8,2E,; y7 U/ V! {$ U
e83,00,C8,2E,  p- F2 y' T7 z4 Y) s# p( M
e83,00,C8,2E,
5 V  g* B3 `" g  n9 Pe83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
" T) E3 X/ ]" b* h' o! ]5 x; Se83,1 \, k6 U+ Y) F" T' c/ J, G0 \

) Q1 A5 S% q6 V8 r' J0 C: a" `
5 t% k. h# ]" g6 b- V% H1 F[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复9 g  Y6 ^" y0 B' Y4 P9 @# m
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。8 E9 i7 c$ X7 r1 o% x- \
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!2 T9 m! K& F; M$ J
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。4 M6 S& e0 r2 {$ `* d2 k
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!4 D. p* R) e6 w' z
BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
  q) L8 F$ w- x/ b. J* V. ^Device(EC0) {# S1 n% D6 W0 a3 K" x$ {
Name(_HID, EISAID("PNP0C09"))9 }9 [1 U: G0 k- n
......" [8 y& w9 m& R
}6 H& b6 O) r- y9 L+ A5 t' [( _' B
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
* y! C5 ]7 v6 ?7 W4 w4 N就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
) h1 ~5 D3 J; f/ P2、   
* ~) S+ Z8 h6 Y4 lName(_CRS,ResourceTemplate(){           6 U9 O" `% x5 ]( ?1 a
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
) H2 O: [" l. K5 G0 z! X' Z3 H            IO(Decode16, 0x66, 0x66, 0, 1)
# F3 L& u9 n0 k+ k        })( K1 e6 Z2 f. \" {" Q9 T0 I* M  E
3、接着就是2 C- j0 x$ C3 k# T& K0 @
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
! l& J$ V/ k) q通过这个声明,OS知道EC和哪个GPE关联起来
- n. d- r; J$ V+ D+ D7 B% p8 Z8 M而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
8 p& E4 Q: Q6 q/ ]3 cEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。, F# f. b4 Z( Q( _& ^. m2 W
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
- v1 `) b/ q: p7 p" G: [; F. m, e3、OK,看看linux是如何处理SCI中断的
. f4 w4 |/ U+ _$ C& _) Z- g0 Qacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute: p+ Y) F$ m2 f; M& P1 p! X  o( a
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)5 K$ \0 t0 ]1 E
4、EC接到0x84查询命令之后,就把Q事件号传给OS5 V+ g- N6 D2 P1 {
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分# @* A* n  e9 t& W+ m; `
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
2 ^4 `- O! k  T7 H( r! B有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。, a5 ?3 x9 w  R- l: Y6 B; P
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm2 ~! L# U) W8 F1 n- z0 d9 s6 ]' A
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
1 H! Y- s9 ]1 X版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 18:02 , Processed in 0.057291 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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