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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?" P) @, ^3 F: _7 F7 f2 x2 i
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
! p7 g$ `/ N8 u& g今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
3 q& e  [9 _6 o1 i; |3 H! y/ f我们在操作系统下用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的命令
& B: _; }, q9 B6 m9 xD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
) X" W- Z) W6 z$ v9 n这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
6 E/ M& t: C4 N+ E4 ~4 L% D其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。$ G9 _! z% f' l

, d7 J+ p3 g% z. @! s5 O3 qVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
# B- {! x) G( We83,
$ @( ?+ ~% S# e/ g0 `IFE,
% X$ O$ J4 ~. J$ y- y. m9 \1 Ve23,oFA,+ X7 p- M8 W- q' X* L+ B
ID1,DDF,LPC RST1 |- M; t) V0 A% }3 S. y
Swrong LPC RST
) ^& d* y$ V& q0 c/ G# vLPC_Reset_Flag=64
( ~5 T% G3 w# F: ?1 C" \4 u

, Z8 e2 k" v: V$ W3 ^5 s; `ID1,DDF,
* D( h! v# `" h- @$ XIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
* [* [1 \$ U. z4 p) ]ID1,DDF,
( N6 N* x$ c& k2 @4 }5 ?8 }' zI90,VED,C,RFA,OFA,V01,C,RFA,
3 ^' n' ]) o: [4 aID1,DDF,O,OFA,O,
- }+ }- t) o1 _+ @. R) V2 @e2A,>IDLE- o+ R9 _1 C' J7 p: _# Y
oFA,<9 {# j! _; j+ I( g  C
e00,
- j5 O0 u7 |6 _5 M, I4 MIAA,O55,O,
% Z2 A( H+ T% Y8 ~: D$ MIAD,
1 c5 L) D2 c! W8 g. XID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
. H, V' n/ I/ C- T; `* rI60,O,D65,# e" w  Q) J! h: i2 E
I60,D6D,VF5,C,RFA,OFA,K20,
: p$ W0 x& [( `$ L$ ]" I9 YIAD,
( A2 c8 G# Q/ \. ]) bIAE,O,VF5,C,RFA,OFA,K20,
3 q. A+ `. g" J8 x) `" }5 rIAD,
$ M, r9 }5 Y0 W$ YIAE,O," e1 n5 M* X; m) S9 V* |
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
$ ^! X; n1 S$ g1 w- v4 W" V8 D6 L- VI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
$ H9 P9 A# \: y# m: Q: X2 }IAE,O,+ I! Y  W  W0 z3 t. m4 \
e91,d2F,d00,  `( T% Z$ E. V  a9 y% X& B" b
e10,d83,d2F,P3_K#
& r- C! W  y6 \  u2 WP3_K#

2 r% r/ E* j- `! R( R4 @( m) @; m9 q! c) i% L* m; _
e23,oFA,
, ?% [; f; n' E: R, L( JI90,VED,C,RFA,OFA,
" @& K1 O; V; p( i0 W  t5 hIAD,
) W" k% `& Y! k" t. ?9 M1 dIAD,O,9 k1 `5 B& D6 L, ]; O
IAE,V03,C,RFA,OFA," r  z/ v8 [; y7 o2 Y2 E' o
IAD,$ _0 e+ b- n; l9 G$ V
IAD,O,
3 l5 K* c$ J9 a* \IAE,' p4 _. x6 M7 m5 g4 w
I90,VED,C,RFA,OFA,
, a3 q' j$ W) `0 G3 e% PIAD,
' B# O% H4 ^& A. O2 X: r! |IAD,O,
% n  F( _4 b0 M# dIAE,V05,C,RFA,OFA,
+ ]1 E& H6 j* J) ~$ VIAD,7 s/ m9 [# L2 w+ ]# D: I0 k0 ^
IAD,O,
) W, m3 {+ m9 S# x5 XIAE,O,
; H- u' L- d, @, w7 @. Ge90,d2E,o00," X2 d( C8 u' Z7 R  [* E
e91,d2F,d00,P3_K#, G9 y$ s3 s& u3 C4 |3 d
P3_K#
* e# Z* i0 z& S/ Y
- s3 M4 l9 j0 q* f7 b9 x6 z3 p
IAD,VF3,C,RFA,OFA,
; ]  Y9 s! d1 S( b8 Q+ AIAD,
# y) v" T( R+ V0 d0 CIAD,O,
5 E% y9 k7 S, E- g# |& \IAE,VF3,C,RFA,OFA,
1 h- G6 h( H' C0 ?+ R7 WIAD,- v. ]. F0 X4 P& Y' p& C( l
IAD,O,
3 s% V& {5 g3 R, q4 YIAE,V20,C,K10,RFE,OFE,K08,
2 B: z' ^% m/ \  }% `- q5 {IAD,% D' r& r2 |+ K
IAD,O,
% I* x: Y% z: m# tIAE,V20,C,K10,RFE,OFE,K08,
! z" V; P. C: Q( a  R. y- r* sIAD,% Y- C; q. }$ a  _- k8 h$ W
IAD,O,
6 o+ f# r( i( m( G: O; |4 m- HIAE,V20,C,K10,RFE,OFE,K08,
; `  P- o" ^6 PIAD,' P# U% _) S* Z0 `9 ~4 M
IAD,O,4 E0 {2 L+ K0 p" v$ O' D+ t
IAE,
# _7 f' I% i$ A* D5 LIAE,VF4,C,RFA,OFA,/ E+ [& `2 r' J& ^2 h2 G
IAD,; p+ c. q0 T0 R% S; k: I) ]
IAD,O,7 s6 Y0 T: H0 H4 ]3 T: S
IAE,VF4,C,RFA,OFA,, y# U) i& @. ?+ _& [6 R( I% `
IAD,& s* k. w$ A) o9 s4 _+ y- [6 B3 ~
IAD,O,
5 H; p5 \5 \4 S+ k6 q* qIAE,VF2,C,RFA,RAB,R41,OFA,7 h- }: k! v+ I6 m" R& X( Q6 C
IAD,  b! V( ^/ U7 U# c' h
IAE,O,OAB,
' {6 \- I1 L  \* eIAD,7 v9 m+ T( j& j6 k0 Y: S3 x* M
IAE,O,O41,
, _3 e: X4 Z3 j; h" `2 t1 bIAD,' n4 Z8 ^6 |. D& S6 c( o9 ^  \
IAE,O,VF2,C,RFA,RAB,R41,OFA,
& A! Z; r+ f* m+ X9 Z. P" M* T3 xIAD,4 h2 c3 D; y! i- v5 M& V2 E
IAD,O,OAB,) O/ o5 Q9 _" M2 x+ d
IAE,O,O41,9 ~. Q( p; h1 z6 h3 R; i
IAD,) ~, \4 _& i6 x4 J
IAD,O,7 c, ]3 |* x' E& Z# ~# z
IAE,VF2,C,RFA,RAB,R41,OFA,) v" K) L" v! L
IAD,
. g8 H" F2 c& f8 S7 N9 `IAD,O,OAB,$ B4 ]) z. b: x/ \9 F- R
IAE,O,O41,2 I# l' K# h, Y
IAD,
" Y. M# Y0 Y7 Y3 p- a8 V$ VIAD,O,( T# b" R5 U2 z5 x% V% G9 o
IAE,
8 O" e. A3 [. m# L( z, T8 ?I90,VED,C,RFA,OFA,: K9 u: b  r! V9 x2 r) k
IAD,
3 s4 o$ n* N5 X1 }& R" CIAD,O,6 I  Z2 a6 ]; B- {) X
IAE,V00,C,RFA,OFA,
! l0 b" n# `: yIAD,
) J- k3 a5 j) @; f% D+ n& E1 sIAD,O,3 z8 f/ q1 D9 l; a/ v4 U- O" R% g
IAE,; B1 V+ X* e* T7 B( J0 t! N
ID1,DDD,
2 `3 G4 Y. {0 b5 AID1,DDF,
% Z' s  q- @' |7 lID1,DDF,
0 e& U+ b5 D. L! e' ve22,oFA,
9 n* e7 j' S5 Q" r  a9 je83,/ b. V" F7 H% @0 H7 X
e83,
! q2 S; {3 q% c4 me83,
9 B9 ^% ?( T3 U3 w0 P4 |e83,
: X# |) f+ g; y. H, Qe83,
4 |4 h% n$ |. T+ X: ~& w! E+ @. N2 He83,& [, E) Q( D" b
e83,
  P& t' E1 Q( f% ye83,6 [0 K/ h, v2 J3 X/ k! W+ a
e83,6 y( |& r+ V( r  z- J4 \
IAD,
4 ^1 e/ H! t9 p6 z6 [IA7,' a/ A% K) }: G
IAE,O,
0 g: b; |5 e3 n. z+ ?8 L+ LIA8,
- z# \* U! ?# SI60,D44,
3 q2 }  d* o- {' s! `  w, J! [IAD,2 o5 F) J7 z; I% ]3 y6 v0 Z9 B, O, X: M
IA7," \: j* `7 U6 y, T0 B9 c" E! u
IAE,O,
* {% k) t  x  bIA8,VFF,C,RFA,OFA,RAA,OAA,
5 k7 m! r2 [+ wIAD,O,K20,
" U. s. d" v, a/ v0 W# Y1 I8 g5 ZIA7,
, a% T! s! Z! N9 n3 bIAE,O,0 [7 b1 [# \: O* P3 l
IA8,! u7 c! z8 o* T% [6 \4 L) d
I60,D04,
0 I1 P7 Q# U5 I; z6 [* ^IAD,0 M# E* b/ f( t0 X/ a* P
IA7,
- v6 H, _6 I4 V$ UIAE,O,$ M& k$ T$ E& n8 U
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,0 e, d1 B/ p% D( g
IAD,O,
# P( K) e* e8 @2 q" cIA7,6 @) i( Q# G; d' B4 H: Q
IAE,O,: c; z  J) ?7 L8 N
IA8,
! V* L% q7 D- [& n' GI60,D44,
8 h, [% L& Z: Y: A. M, }! iIAD,0 r3 X/ y8 g/ ]% u/ n6 O+ w1 }
IA7,
: V8 ?) Z' {) a" HIAE,O,: ^% ~- [" E9 P5 y. x, \; ]! I
IA8,# _2 H( ~6 J+ Q2 _& d
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,' P2 ?- b" a, P3 W0 R: z
IAE,O,
! N' }/ g7 Y7 F( j* }' q/ K$ RIA8,
% Y8 E/ t/ L2 I* J0 jIAD,
6 Z  d# [* A. f! x8 f3 NIA7,1 r! e) `/ b9 e3 s* \: h9 h0 J
IAE,O,5 c" i/ j: Y2 I6 |/ W  [
IA8,$ \& r  Z/ A4 ~
I60,D47,) ?) w! q) X) f) d- g' A5 U/ I
IAD,# i& y; ^" v7 f; W- v+ I' ?
IA7,  {4 D. ^4 [' ^$ A+ E9 X, [9 u
IAE,O,
% N. n3 |* B3 KIA8,
/ \  {$ E9 w8 ?8 O$ H- F7 l5 KID4,VFF,
% j$ F  m/ i/ Ze83,C,RFA,OFA,, Y5 p* X8 |) Q
e83,O,RAA,R00,OAA,O,O00,) Q9 Y! y* J4 z6 ?- P
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
  E, T8 E, h7 d& Y7 gID4,VE8,O,C,RFA,OFA,
+ J& F& a5 m7 ^' ~1 CID4,V00,O,C,RFA,OFA,
( X! U/ l" k+ O9 bID4,VE6,O,C,RFA,OFA,
( v# F7 S" z6 Y8 bID4,VE6,O,C,RFA,OFA,
9 ^. l- O+ ~+ _: _; v  v$ UID4,VE6,O,C,RFA,OFA,
! P- ]8 ?( k2 N  U5 F2 ?ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
1 P1 ~; r3 y  G8 o* `ID4,VE8,O,C,RFA,OFA,! k  u# R3 Z9 L( |. g1 c( Q
ID4,V03,O,C,RFA,OFA,; J2 q% Q# [; Y- v& \- |. i; }
ID4,VF3,O,C,RFA,OFA,/ {% P; A, L9 p  P# }2 Z
ID4,VC8,O,C,RFA,OFA,
$ f" V. `; q6 H! r$ HID4,VF3,O,C,RFA,OFA,7 d" P' c) e" N: x
ID4,V64,O,C,RFA,OFA,
3 e8 U# e7 L) |$ [' lID4,VF3,O,C,RFA,OFA,8 |: n/ h" X  u8 M+ H3 E, H
ID4,V50,O,C,RFA,OFA,3 I* R% a: F1 I" ?1 k1 O3 i
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
1 K6 w" k. C# i3 o! h/ v* EID4,VF3,O,C,RFA,OFA,
" m& k2 M# w3 a/ F& m8 w0 Y" @ID4,VC8,O,C,RFA,OFA,( z% G0 C* L7 E" R
ID4,VF3,O,C,RFA,OFA,
0 D2 k7 L/ r0 R8 Z9 X9 ]ID4,VC8,O,C,RFA,OFA,
+ U$ b5 G/ T' K* iID4,VF3,O,C,RFA,OFA,
# \1 p3 x. l" TID4,V50,O,C,RFA,OFA,# s# a7 r/ D* E* K, k0 A
ID4,VF2,O,C,RFA,R03,OFA,O,O03,: ?( J* l" X/ _, U* J9 F0 V
ID4,VF3,O,C,RFA,OFA,& ~  g- c' f+ g& D
ID4,V64,O,C,RFA,OFA,
( {+ k9 W2 I6 y2 g1 X5 WID4,VE8,O,C,RFA,OFA,
0 T2 L2 ^) v" B2 r  ?ID4,V03,O,C,RFA,OFA,
1 s# `/ \) R' T) h5 z. j' t* d/ [# eID4,VF4,O,C,RFA,OFA,O,8 \& Z) O5 r# m. }# r8 V
e83,
) @' l4 Y* s! n: U" X( Pe83,
2 I/ p! v5 c6 h2 ^: n6 Me83,
/ D0 b- ~  u5 T4 d+ D% w. v; Ce83,
# [  Z" T  P$ x* p7 Y6 Ge83,1 H( P  D( T7 W
e83,: a! c) Y3 J  H/ {7 G0 U8 C
e83,$ l6 W! t5 d# x' S3 p
e83,: H2 c* }& w' k& |/ ?
e83,: c& c$ r% D. p2 j" a
e83,00,C8,2E,% _0 R' C9 l" }. v& |. \
e83,00,C8,2E,4 Q8 O+ U, d' u5 Z- t$ A
e83,00,C8,2E,. H$ p; Y$ @, z
e83,00,C8,2E,0 H2 J3 \) T6 q$ O3 Q1 T9 u
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,+ a8 o6 z6 N$ z# h
e83,) d) }1 @2 g7 y9 J7 t2 l9 v: q
6 N% }/ Q; ?3 u9 i, e  I
# C  f4 T0 v9 T0 k% w
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
, o/ X! r, @* i7 W9 i( B0 ?     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
$ z( J; j  T9 F, g' n) z& V      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!7 C3 r9 R0 m- W3 J& F+ ]9 o- h
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。0 q, a5 t. P: m
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
. j' @) x0 c- s" YBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
5 f+ u, I. W! h: R! ]! y; SDevice(EC0) {" x& Y( C  K+ \, H
Name(_HID, EISAID("PNP0C09"))7 ~$ q- v/ s4 t! s# |
......! B) f8 r/ O7 T- h) B0 s
}
2 f! G' m* k- M/ D% cPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
/ u. X8 n+ f( K, [+ o- i" @' C. M* k" c就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
# y$ {# @' Q' n! o; N2、    ( K: ^& T9 z6 X" E9 U% s
Name(_CRS,ResourceTemplate(){           
& v7 Y- q/ B% [; n1 J        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
) e/ b7 Y/ J0 s. |0 T, o            IO(Decode16, 0x66, 0x66, 0, 1)' g/ Q1 G( D2 S5 Q+ w
        })
5 a& y: v1 B! b8 i; O3、接着就是
) L1 o1 P6 ^& }& BName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7+ ?8 L# u* c$ Y
通过这个声明,OS知道EC和哪个GPE关联起来
5 b! }* k( G* l( D8 b1 |) ]而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
9 V" W8 w7 X7 L8 \2 u, R: ZEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。7 q+ x/ H4 d- `1 |4 s0 T
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
6 d7 f+ [3 h; ^6 x- U- x: ^$ B3、OK,看看linux是如何处理SCI中断的
' \7 }1 q1 T0 gacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
4 g& @+ p2 B+ [2 \" \' _% A! X3 a) I* Nacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)5 M4 A& d8 m; C* d6 I( x8 E
4、EC接到0x84查询命令之后,就把Q事件号传给OS6 k0 j1 |- |2 M6 a
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分% \2 D5 s% v/ x! G7 w. d6 P8 m' ~
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了, q4 _" n9 g- t+ V' |% Q& y9 S
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。) K' W' u- Z: L2 d$ ?1 {3 |; g
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm) Y% R* R6 X1 ]! \4 F
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。7 Z) x  h1 ?; t) T3 h. n8 j! B
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 02:09 , Processed in 0.074010 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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