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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?$ E3 u: l6 L* Z7 j  z' ]1 T3 W# F4 Z
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
+ O! L6 X  B" z1 l6 w. {今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
) N. r  m5 y3 r  V2 W( }" `, |我们在操作系统下用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的命令# P# Q/ U+ K& e3 ^
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check5 V8 c- M! o) y; t4 t9 k
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
& J  ]7 |0 a" k7 Y: O( p) L, ^/ c其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。  C+ L' G' Z/ l$ M; }. J
0 y8 j  @$ s+ p* \
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,0 ^( k- e- v3 s6 Z0 W7 r4 A7 Y3 S9 P
e83,
  S' L% Z+ K- u$ fIFE,
& N! c, ~( G9 `& q4 Ce23,oFA,9 Q" x8 w; V$ }% t6 c
ID1,DDF,LPC RST2 `# |' y+ K& l% h  j5 ^" p! W) m
Swrong LPC RST6 o; v6 k' {# L/ Q4 |4 ^+ \8 d
LPC_Reset_Flag=64

  y  \  Y% o# ?% ?( O1 B! d! s) S5 \" H, a4 s
ID1,DDF,6 l4 a  m' {+ @8 [& ?3 D& K
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
( ?9 t; X) b2 ]ID1,DDF,2 C1 |, R0 C, o/ H
I90,VED,C,RFA,OFA,V01,C,RFA,1 ?+ X8 U: r  {5 a* x  u. c
ID1,DDF,O,OFA,O,
5 h7 H  p  l% T, v0 `e2A,>IDLE: \; A  g+ E2 C$ g3 k# C
oFA,<
2 W9 k. k  l* je00,* j9 J3 R2 T  t+ @% O
IAA,O55,O,
4 i" x# u% d, D1 L' e; H0 G5 IIAD,
& B0 @" K7 Z# BID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
$ D, a# E: [! s3 G+ ^I60,O,D65,
: G4 L- T- A% ~# E, LI60,D6D,VF5,C,RFA,OFA,K20,# _8 w, u& T& C9 s( P
IAD,2 C8 T; T  z9 {* _/ P* O0 i
IAE,O,VF5,C,RFA,OFA,K20,
9 {7 _. i2 B4 J( A/ i4 [IAD,
$ t6 K( Z' P- YIAE,O,
% s6 r2 `7 R) Y% n4 {' ~: @0 QIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,+ p: u; U' u* n- }/ |; h& }; W
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,7 y/ U: n; T/ r, \0 d6 R4 y
IAE,O,2 v) z  C4 ]! \" c
e91,d2F,d00,7 i# v9 _- W. C+ v5 T) J% M
e10,d83,d2F,P3_K#
- E  {! ?' Z: {& ~! C; _$ iP3_K#

6 \6 B- ?: p# e, t* K( f; t8 g3 x& j) i' ~- h4 T2 {! H/ Q0 R
e23,oFA,( z, t; t8 ~3 C6 m
I90,VED,C,RFA,OFA,3 U6 \& A/ v' Z% C* s4 F, m- A
IAD,
7 F, J3 T$ G2 z1 ~4 r' ]& @IAD,O,
) V0 C& V2 H* ~' }3 zIAE,V03,C,RFA,OFA,
$ ^9 `- `9 Q5 L: L1 oIAD,$ M$ f- T. y3 V0 t! p
IAD,O,
( p2 H3 w' I: ~* sIAE,5 x7 K/ c) a7 K8 ?
I90,VED,C,RFA,OFA,( y8 {+ s- K. Z) ], A$ {
IAD,
. N7 t' ]5 ^3 p+ V3 u: L7 VIAD,O,
% f6 ~0 T& W# d* e/ a8 C2 WIAE,V05,C,RFA,OFA,7 s' P" v8 Q' t/ h
IAD,0 g8 P/ v& i# H9 N' m
IAD,O,3 `+ C9 g" ?" z* U5 @- T
IAE,O," @7 N* J% ?) d7 k+ S- b6 g
e90,d2E,o00,
4 G2 C+ u+ l- J& K4 E& \6 He91,d2F,d00,P3_K#
* J1 [3 Z) A- LP3_K#

5 M" o" F4 m) ]9 ]: @
. P" j! I1 |0 f5 Y# E- s# jIAD,VF3,C,RFA,OFA,0 E" g6 e9 E  r4 x7 R" b, k
IAD,2 n( m# F; @$ X6 P- x
IAD,O,
, y  W& O7 j1 v3 P, ?* u. O) E: ]IAE,VF3,C,RFA,OFA,4 J6 G" O& @8 x+ \/ @& q* a3 g
IAD,
( j% @' }: v. B/ iIAD,O,
5 E8 W5 \7 Y9 P9 g2 CIAE,V20,C,K10,RFE,OFE,K08,; W4 n7 {8 s7 U) @; X
IAD,
, M  ]4 W2 K' i( ~; B( [IAD,O,: H0 V1 H& g% B( a! ^7 k- x0 v
IAE,V20,C,K10,RFE,OFE,K08,: t2 y* I0 f" t3 K! R8 E
IAD,
: s3 W$ H& j5 YIAD,O,; C5 e, I+ |# Z0 B% ]& t' C
IAE,V20,C,K10,RFE,OFE,K08,
; _; z/ u9 p* @. VIAD,$ \( t1 t; P& F1 N2 Q
IAD,O,
, D! ^# H7 B, u! PIAE,( h9 {1 f) P  @
IAE,VF4,C,RFA,OFA,
0 i- I# w0 Q; yIAD,- _+ R5 c: f0 f+ s2 Y; X$ K5 R
IAD,O,
$ u! Z( {6 d2 Q( @" N8 a: uIAE,VF4,C,RFA,OFA,2 W; \) \8 S8 l0 t$ x
IAD,
6 r& L5 l% k1 b: r; a0 |( ~( vIAD,O,, Y$ K- w9 o& a
IAE,VF2,C,RFA,RAB,R41,OFA,' }  @2 ^. r. A) X# o' F
IAD,- A& _3 i( q( d
IAE,O,OAB,
9 [' A6 t! v! |9 F1 x3 |( i. i' sIAD,8 e% a7 |5 ]2 B1 ?
IAE,O,O41,- W4 M& A+ x" ?
IAD,3 h( E# Z  ^& O3 D" J
IAE,O,VF2,C,RFA,RAB,R41,OFA,
" R  l4 e7 p# T' HIAD,$ b$ O7 }( @2 K5 @; |: r
IAD,O,OAB,
. d* z1 n% [/ b8 l% LIAE,O,O41,( @+ b7 C3 T7 y3 q( k
IAD,
0 H+ }/ D1 N! c0 n% uIAD,O,
. K& V% ~8 h; T% `IAE,VF2,C,RFA,RAB,R41,OFA,
! S- M7 ]6 h0 Q) w1 N- f9 ]IAD,
* i/ s  ]* C/ }! |" Q4 bIAD,O,OAB,
5 Y' z" p, J# w! `& M3 TIAE,O,O41,
2 \+ \5 l  F/ h9 b' o8 ?IAD,
1 K# G9 I4 K4 u$ B. fIAD,O,6 R& U3 ?) `9 b7 s3 n$ H
IAE,1 o3 _. r( A7 b
I90,VED,C,RFA,OFA,7 v7 B) \! F! K; k! m+ g/ B3 t. ^
IAD,6 t" M; P+ o% d+ F
IAD,O,2 a) r& T( P. A1 }3 ~. A4 V
IAE,V00,C,RFA,OFA,
, M' R9 m( @& b" _8 NIAD,
+ l" ?5 b: F' oIAD,O,
- g- ?. J5 Z0 }# g9 a6 ?( \IAE,
8 G. J& S2 n# C9 u( L) Q! JID1,DDD,
1 ]! X5 t- p, {0 p4 j! X& kID1,DDF,6 L* i: z) e$ M6 l9 N! g; K" ]
ID1,DDF,' H+ C4 w  ^( g4 M/ y; B! b
e22,oFA,
' F1 z: a* ~: n; Je83,# J  q6 ^+ d* E& k6 Q1 o
e83,- N/ t# w+ C, M% x, T- Q2 U
e83,
7 M- h, N% H1 p/ ?+ ]0 R* Q4 {e83,
0 P8 F: M3 H: o; J2 Ve83,0 k1 c# E' E9 L- N: A& t
e83,
' t' ~* }5 `8 _$ _e83,
6 Z) ], _1 B% G8 {5 U! A: Qe83,
$ o! r4 R; q( K# f7 Te83,. `$ E0 X$ n4 Z7 H1 _+ W/ e
IAD,6 M! R# j3 L/ F) F  B
IA7,- Q8 b: t/ Z; {3 d$ T
IAE,O,5 }+ o* R) {, Z  I+ h( v( C0 V
IA8,
( J9 K# z; H, e0 TI60,D44,
) x8 ~: D- _- P  mIAD,0 f) Q; ?& e& }5 W: H( x- p
IA7,  S& k( \% i0 L4 Q9 \4 S& ]) ^
IAE,O,: `! P& D6 \( A( d* k
IA8,VFF,C,RFA,OFA,RAA,OAA,
; D2 @& g9 B% N3 q4 u  F/ U6 `IAD,O,K20,
- J- H1 Q+ M" Y/ `) X6 \IA7,7 O8 t/ h4 x/ @8 Q. I
IAE,O,
% d% {6 J0 n. x) ~7 JIA8,
* Q1 O+ N+ J8 O1 T0 e5 n  II60,D04,
6 N1 F. ]& q9 |) w3 z3 E( |IAD,2 x$ g4 y0 {0 T2 {) O! h5 j
IA7,. \& m* J4 Z% ]- q
IAE,O,
3 N, K# N% }, s1 n( bIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,: [# c. n& g$ ^5 M2 y
IAD,O,
9 z- Q$ R, j) V3 BIA7,% J9 z0 y( x9 p, Y6 \2 T
IAE,O,
7 Q& n& v3 A# h4 q( y! lIA8,+ u  s. W* h# ^' M. h+ k
I60,D44,
0 V7 r+ s1 c3 K5 U$ r  L' F" @IAD,# n% S0 K! E" g% ]
IA7,
& H# n) @7 G* Z6 S8 ?IAE,O,5 B2 q# u4 L- m  \" E" G# j
IA8,3 k1 I- L* e0 w
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
9 e  v# X  I, y- |% C. H7 _0 }IAE,O,
  N& K2 x0 Y  FIA8,% Z- C# T6 k$ d9 S( q
IAD,
$ D2 A+ h0 n8 P9 E3 U/ V7 I. nIA7,. o+ R) n& O  [' N) ?1 K* Y
IAE,O,- @6 u" Z7 W* V) a
IA8,- C1 C3 E7 \# y- w- W! P  D; f
I60,D47,# a% q0 k0 |" X  [) V% U
IAD,
  I" W/ J4 [* oIA7," @$ |; g# Q' s( d0 n; o
IAE,O,& S1 q! ^8 j" r& N
IA8,, f7 g& i& P+ H+ L
ID4,VFF,4 f: S* e1 E* b" v6 T
e83,C,RFA,OFA,
5 z. ?7 u( w. O4 p7 w5 b! ]e83,O,RAA,R00,OAA,O,O00,
) I& e. F( J5 t4 rID4,VF2,O,C,RFA,R00,OFA,O,O00,3 R5 K# d9 ~% l( a: _
ID4,VE8,O,C,RFA,OFA,
, M& ?, \$ B- y6 p" m  FID4,V00,O,C,RFA,OFA,
$ N; i& i7 a8 Y+ g3 ?% @% [ID4,VE6,O,C,RFA,OFA,
: ^3 f* x3 e; G: WID4,VE6,O,C,RFA,OFA,- H! X5 F: ?9 X# g2 y' Z
ID4,VE6,O,C,RFA,OFA,
8 O) U. C3 Y$ Y3 |9 C( y  u7 zID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,5 E9 f6 M. {/ h! Z. v
ID4,VE8,O,C,RFA,OFA,- j  N0 E3 T/ t; S! [2 ~* N. y# D
ID4,V03,O,C,RFA,OFA,% _0 v/ M3 F! ^; ?9 e' F
ID4,VF3,O,C,RFA,OFA,+ C) _% S, o! N% r0 Z% Q( t
ID4,VC8,O,C,RFA,OFA,8 V: F, m9 L9 B( K
ID4,VF3,O,C,RFA,OFA,4 B( s% L/ @, L3 l2 D
ID4,V64,O,C,RFA,OFA,
' B/ E5 |6 x) y+ I6 ?ID4,VF3,O,C,RFA,OFA,
: M7 \$ s1 E& lID4,V50,O,C,RFA,OFA,
1 [4 A( H4 J; B9 v) z" aID4,VF2,O,C,RFA,R03,OFA,O,O03,* F: g: c- u" p: o
ID4,VF3,O,C,RFA,OFA,' n0 K; D# G! |# I
ID4,VC8,O,C,RFA,OFA,
" Y- ?# }9 m! D7 `6 E. U0 t; J. Z* FID4,VF3,O,C,RFA,OFA,+ [8 k8 Z+ v9 |. q; U
ID4,VC8,O,C,RFA,OFA,* l9 ^+ R) \: f/ z: y
ID4,VF3,O,C,RFA,OFA,
3 B! i7 G/ l0 B, w0 y1 }ID4,V50,O,C,RFA,OFA,8 u2 I4 |5 [) e. b% L: A9 }! Y$ p
ID4,VF2,O,C,RFA,R03,OFA,O,O03," t9 T, S7 U" ^, ^
ID4,VF3,O,C,RFA,OFA,
& j& J  @* E' BID4,V64,O,C,RFA,OFA,9 z" [3 c" c+ Q) V. R6 h4 s
ID4,VE8,O,C,RFA,OFA,
* V8 X) T0 f0 C3 U- w6 e. Y* sID4,V03,O,C,RFA,OFA,
" \! Q% v" n2 J9 r6 @1 c  [4 lID4,VF4,O,C,RFA,OFA,O," [1 g7 F" q4 P7 a. k; r7 {) L2 b
e83,# I' ]- z. y, }8 p8 I! m7 v
e83,6 C. u4 y, @; B5 N! E4 y* i: h
e83,
. g7 I) l( p6 P/ v. ]e83,3 b  o4 h! I) y; F' r0 y
e83,9 z& w& o$ S; N% \/ ]/ L% F+ M( s
e83,! ~: G0 x# \+ _4 t7 n
e83,
! Q" J  r$ q! q5 ]  Ae83,
/ u  H1 t9 x  n2 M; me83,* Y$ g8 R9 a3 r' ~
e83,00,C8,2E," e, o# Z: j$ R. ^, _  j
e83,00,C8,2E,
7 n$ p5 S( ], `  x" `: ve83,00,C8,2E,; X, j7 ^& x, ^, u/ m4 X) j
e83,00,C8,2E,
5 ^* ^  W& g0 \( t' D, oe83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
: r1 _3 M7 b0 o1 J" Z2 y( t) ?e83,2 _( n( [4 v# @& D+ B

- }, R4 Z% }; X, w: p( J( R
, u+ |! W4 ?- e8 o+ K( E' P[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
! t4 l7 z* V0 W& [5 B9 h     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。, u3 N; _0 k# G( F" r! N
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
/ ^* t, U! g3 h" n9 w      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。
5 _5 K9 h4 N! @5 `      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
: |: E2 @2 k6 n" m2 _* qBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
5 x7 T$ K/ W9 F3 m5 y! MDevice(EC0) {' P# r2 p9 C1 e& V$ T
Name(_HID, EISAID("PNP0C09"))
7 a# J  G% D8 C6 o) ]......
& S" k1 n3 t2 R4 ~0 ~/ R}0 J( v" U' p* _
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
  l$ B1 D6 t" q3 K就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
$ U& ?; S. p6 R8 c- I% i4 q2、    4 F9 f$ a# Z! x* r
Name(_CRS,ResourceTemplate(){           & M. J! l- N5 o: z6 D! D0 y8 \( m1 `
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
: ~+ Q% `* W2 ?8 C! A1 J  C4 _            IO(Decode16, 0x66, 0x66, 0, 1)
% z2 y5 R2 o/ V, [) y# i0 @2 P        })& Y; ]4 q! K; P
3、接着就是
. ?, H5 q- @3 c( c; _, i, k3 FName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO77 q, R- j) Q, Q
通过这个声明,OS知道EC和哪个GPE关联起来: g0 F% X1 l' Q0 ]3 @
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
# Z, _* L4 D) V6 ]EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
  X+ r- Z3 e& `; n而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
& X. [; x! I9 O4 U3、OK,看看linux是如何处理SCI中断的5 `3 g% E/ q" d7 ?8 A- F. i# N9 F
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
, P4 q* p% `4 ^& Aacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令). R* R9 M( j! y* ?8 z. [) d
4、EC接到0x84查询命令之后,就把Q事件号传给OS0 y2 x* K0 X+ a6 K6 ^/ e. h" [
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分3 I- s& z. c% j
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了- I5 b6 _6 L4 @! R" [
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。+ D3 w/ a8 Z( r
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm2 |8 x9 L; S! {. Z
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
0 C" c: N* ?4 c# p; M" m9 C版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-19 21:51 , Processed in 1.152898 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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