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

[原创]AC In/Out OS Slow Response

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

使用道具 举报

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

找到死机的原理了

感谢版主的回答,1 Y/ W9 O3 _6 l
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。0 `/ A( s2 R& `, ?$ u8 t- u4 ~
我们在操作系统下用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的命令7 j5 u* ^# J; L( S
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
4 F0 f( |+ U4 ]这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析5 X  c; u# P* h/ V$ F5 I6 P
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。; V; I+ t8 T. x% P1 n* J

; p6 p9 \( F- ~. f! T4 f8 D* SVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,6 r! l$ ?8 r/ Y- L$ @3 }5 L8 b7 p* K
e83,, P5 x' `. {9 w/ E2 O; `" c
IFE,
7 t5 D/ d4 G* h! we23,oFA,
, \/ d$ W8 a1 ZID1,DDF,LPC RST
5 W! w( v& M( G( o0 NSwrong LPC RST
$ P* V& f9 R( h% fLPC_Reset_Flag=64
' {% _% ~' U8 ~6 @
& o  V4 y2 F1 \, ~5 I
ID1,DDF,1 k, t! I& {  Y- W7 D
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
. l. r8 [" l8 B% l3 _* P7 M7 bID1,DDF,
4 b* _3 n- q* KI90,VED,C,RFA,OFA,V01,C,RFA,
$ C9 t( A+ i& U2 w7 P; F+ _2 NID1,DDF,O,OFA,O,' \' l# a  Y: ]
e2A,>IDLE" Z+ n! s9 Z: w) v
oFA,<
7 c# X2 o  G  w0 P, T  k" ~( ye00,$ b3 D; k1 n" @$ v
IAA,O55,O,
  n# K0 I' `3 lIAD,
2 {4 ]7 ~" o+ B4 eID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00," ~* ^, [, d# r  N/ b* ]7 S/ F
I60,O,D65,9 ]0 y  `4 w7 E: m1 Z) W
I60,D6D,VF5,C,RFA,OFA,K20,8 l& o6 @  a9 i( P2 t( k
IAD,
6 j# D  t. {: z8 J' qIAE,O,VF5,C,RFA,OFA,K20,
2 X+ B: h+ ]9 j% ]$ VIAD,
; m1 q# i; n4 {. n! d7 U, v3 A+ |IAE,O,
) M4 D' a" e' V# g+ [IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
: K1 v% [( k+ A" R% }" @* z" LI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,* q8 `2 F( R& ?; {% \2 m8 ~4 x, N7 b; G
IAE,O,
; b) e: _& y) w: J; T( Q' @) ue91,d2F,d00,& k' L  H# Z* ^  |# |
e10,d83,d2F,P3_K#
2 e8 o9 J- r2 h3 PP3_K#
. l8 `$ a' ]1 H9 O8 j9 j
2 N& \  G: T5 ^
e23,oFA,, `  ~0 @2 d1 J2 E) c( F' [
I90,VED,C,RFA,OFA,% s6 @) B" ~# s+ y. D$ `
IAD,8 o9 O: V5 ^2 Z* M; J
IAD,O,9 G# ]- v% q" r3 G
IAE,V03,C,RFA,OFA,
0 t; u, M4 y7 @( \" q# sIAD,  f7 m, m: H) `3 G- L
IAD,O,1 b6 M. t8 g; M$ \/ }) f
IAE,
, _) I8 I0 W% O0 D- I9 A1 G8 z1 |I90,VED,C,RFA,OFA,7 E  G6 Z' c; B, V9 H
IAD," A" A. E/ P' f" Y0 m: y; k
IAD,O,
) K9 V$ |$ j5 k+ A* @IAE,V05,C,RFA,OFA,
6 u* W6 p6 T, t0 t: N4 K$ tIAD,
) O) C2 g3 ?! W) O, YIAD,O,
  ]1 b+ e3 o! F1 |* P5 \- I* cIAE,O,
8 t& z$ p5 e  Q, f8 ae90,d2E,o00,6 t1 j- F- B# L% H# _, L( b
e91,d2F,d00,P3_K#
( g" C- Z' p  T; ZP3_K#
* s( y& t& {# i: x& G
  ?/ }& I8 U4 W3 d- f# L
IAD,VF3,C,RFA,OFA,3 f$ c; a/ h! ]/ w( Z; ^! o& b
IAD,, v5 W* M9 V' h, P
IAD,O,. U' q# T( {+ }1 t4 Q9 z6 ?
IAE,VF3,C,RFA,OFA,) s" j3 D6 l- B1 f3 b: p1 l. ~
IAD,+ K; t! Z$ x; ?$ ?
IAD,O,+ B! H, f# [* [- \+ p
IAE,V20,C,K10,RFE,OFE,K08,' ?" }2 v4 V/ @8 d, h: e
IAD,
! P$ @& G. a- N5 {3 Y6 RIAD,O,
' t. f0 e/ u7 g& m5 ?IAE,V20,C,K10,RFE,OFE,K08,
; w( L( S: f% F4 x9 |* QIAD,5 ~6 w' \$ }7 P6 M
IAD,O,3 r- V& j+ u1 u
IAE,V20,C,K10,RFE,OFE,K08,' q. r$ [1 q) F/ B1 C# z* e
IAD,- c' ]3 v8 \2 ]% E- E/ R2 ^
IAD,O,2 |6 F1 v# S  }& G: a! z6 h& d
IAE,
/ [9 y! `' x2 L8 W4 K& e: aIAE,VF4,C,RFA,OFA,
* v& z# [% s% ]" Q- `# }IAD,
9 o2 l) u. d: ^! k' R# ?IAD,O,3 X$ L" A  L5 i- o3 v
IAE,VF4,C,RFA,OFA,
( C4 ~  i2 Y" q9 [IAD,- @+ S8 ~9 c9 T
IAD,O,
  K2 r1 H3 }+ R6 VIAE,VF2,C,RFA,RAB,R41,OFA,3 x. Q1 T2 }# j: d, q& a8 q
IAD,
! _, S5 l# K8 X8 s& SIAE,O,OAB,
/ |$ @. q4 w6 ~6 P4 A0 vIAD,
( m# r7 a7 \$ N: m' aIAE,O,O41,0 r, C8 K3 R) n1 o# }
IAD,+ w$ U2 D: w. _: E$ z, |
IAE,O,VF2,C,RFA,RAB,R41,OFA,
/ m! F) d2 M8 z. e1 w+ OIAD,
2 M) e. _- \: i  ]( pIAD,O,OAB,
, K3 @$ P8 R, C  t6 N* o  [6 eIAE,O,O41,
- A6 `2 x0 O0 U2 ~5 u5 T& fIAD,
3 m8 G( b& r: x  V, VIAD,O,
# c! `. I( C# t0 zIAE,VF2,C,RFA,RAB,R41,OFA,# B+ ?2 {$ R5 Q% I
IAD,
1 W9 Y: b4 a( |& b3 z2 @, YIAD,O,OAB,1 j' z  H, J, {( W- X
IAE,O,O41,
; r/ f* ]8 ~: ]5 l0 XIAD,
# z2 ?. v( s) X/ n9 L" K* c6 RIAD,O,. f8 P4 }- A& ]0 e8 r3 [
IAE,
; j2 i( G6 s2 H& XI90,VED,C,RFA,OFA,8 K4 F( U- C& {. c3 Z" E- Q
IAD,
. ~' W' u; h0 v. D- ?$ FIAD,O,
9 F) o( B$ ~7 n; j- \, e, x4 G7 {IAE,V00,C,RFA,OFA,- e- U- L2 t& t. L
IAD,  u1 l& c5 s5 X7 d& V+ t4 J2 }
IAD,O,
' d+ p# ]& M0 VIAE,; S3 M* o- w) E+ m
ID1,DDD,
9 Q2 v: r8 A5 kID1,DDF,' V) _8 h9 y' h/ D& C; Y' D
ID1,DDF,
" y( x$ q9 Q% R6 H; m* _9 he22,oFA,& v6 Q& q9 T" |8 j
e83,
( A, Q) U7 C  I9 ?) Y' Ge83,
3 b4 {2 A: ~" J  }  Be83,
$ u2 R- {1 k7 o2 Se83,- [( G3 M7 s- h
e83,
% r9 t( L; p: t3 Y1 be83,
& R2 @% O7 x: Q6 ^5 R: de83,5 K9 J1 p) ^  h* ]' }) K! M
e83,
2 ^$ q4 s5 l" u9 l- _) y% Ae83,
/ x8 i2 N# J. u. cIAD,. S: I/ `$ N0 F- ]2 O$ x" Q) Y
IA7,+ x, M; t8 e9 ~2 j2 E
IAE,O,) h) Z6 I  T- _
IA8,8 w6 W  x1 Z5 I
I60,D44,) f& z/ _. |$ g! V4 M1 v/ _
IAD,; r5 E6 X" x: X4 ?7 K* @" w, }
IA7,. Q; D" R1 T, N' ~
IAE,O,2 P7 R' p; }# R& J# a* s
IA8,VFF,C,RFA,OFA,RAA,OAA,$ ?) B" X' o. S8 d- v  d7 P* t' y
IAD,O,K20,+ t9 [* f6 F( n; g( ]# N  c
IA7,
* G3 S9 V3 A5 `: ^IAE,O,, E# o+ q! [/ v2 |
IA8,
( J$ E1 [) R2 N6 v1 t6 nI60,D04,2 N& `; E) c. e; @5 }; n/ S/ W
IAD,
; ]% W$ Z. d4 NIA7,: G. F. N7 W5 U3 W2 ~; _& z
IAE,O,
6 |) Q# u) y, w. _! Z* Z7 m3 W& ^IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,7 Q5 ?% o+ n# f
IAD,O,
! U. Q. L% ~- i9 `IA7,
, A/ @6 }; q  W# a. r5 {3 {$ jIAE,O,
: z1 G) u& p$ g% p9 IIA8,) G. Y; ~2 l% S1 y
I60,D44,; F% f: \! L$ E+ I$ A+ @6 ?: Q
IAD,) f/ [. g" u3 x8 V
IA7,( z- s3 \3 a; {/ ]" m% l. e; Y$ f
IAE,O,
. Q* |5 n0 {" `% |IA8,, ~8 [. R1 J. x6 \& }
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
0 t2 F! T3 Z( |9 |/ zIAE,O,) x4 w8 \3 a+ Z# \, ?% X2 @
IA8,( K* Q0 ?: V7 N5 C2 V* x0 p
IAD,, S$ P$ F, H7 x( X$ A. M4 @9 H
IA7,/ _* h* h) j: {: y1 H
IAE,O,
# G( P2 B! o, ^, cIA8,0 j6 y3 u9 C6 g" n. J
I60,D47,
  B" \5 ]6 H% E% v5 J3 tIAD,& X/ m/ g; e) A) L+ G: c
IA7,
# k7 [$ ^/ W0 z8 yIAE,O,: ^) w4 h6 u! p
IA8,
: u6 q6 }/ G' E8 P; R  kID4,VFF,
* S# r, [  H0 X# Ne83,C,RFA,OFA,
' d0 B' K7 q! a6 ce83,O,RAA,R00,OAA,O,O00,
/ m) `: C+ I$ `& p* i" D1 J3 PID4,VF2,O,C,RFA,R00,OFA,O,O00,
6 {) Q  O9 j& F2 |+ j- T9 kID4,VE8,O,C,RFA,OFA,; d9 ]: b# h! Z! B
ID4,V00,O,C,RFA,OFA,+ k* z7 {$ A& d9 m1 o/ _* P
ID4,VE6,O,C,RFA,OFA,
! ?7 y" I1 D5 q) ^5 {$ ZID4,VE6,O,C,RFA,OFA," o. ]" B$ {  R0 ^7 f5 W
ID4,VE6,O,C,RFA,OFA,5 |& b. @8 N/ E/ P+ y+ z7 }& j
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,/ w$ a! j; D, a* T, x
ID4,VE8,O,C,RFA,OFA,
) ~  _5 W* u- a) w1 V! e+ {! I# MID4,V03,O,C,RFA,OFA,4 A" q( T* j7 K) s# I
ID4,VF3,O,C,RFA,OFA,
+ l6 g% c6 e0 J- r9 oID4,VC8,O,C,RFA,OFA,8 X% p! J3 N% T, m9 I
ID4,VF3,O,C,RFA,OFA,
" o% h4 n# W8 c. k: Z1 W6 xID4,V64,O,C,RFA,OFA,5 a% Z( i+ j, o  O$ a3 H; L; h
ID4,VF3,O,C,RFA,OFA,
% Q. r: R4 l* b0 G0 @+ QID4,V50,O,C,RFA,OFA,' t  `7 V* t+ p$ z) r- X8 c( B
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
( N- }& S$ T4 x7 V; i$ UID4,VF3,O,C,RFA,OFA,
' E$ F9 }6 ?% j5 q8 m3 NID4,VC8,O,C,RFA,OFA,, ]0 F3 d2 T1 x
ID4,VF3,O,C,RFA,OFA,% e& y& f( X3 ]0 X6 W/ m
ID4,VC8,O,C,RFA,OFA,
5 h. w( ?) x5 C/ r& KID4,VF3,O,C,RFA,OFA,
6 c9 W; X/ L$ ]2 _! z4 g$ @ID4,V50,O,C,RFA,OFA,; ?/ O8 W% p- M: a: u  e/ V
ID4,VF2,O,C,RFA,R03,OFA,O,O03,5 k: p! y/ |) }3 V) B9 L
ID4,VF3,O,C,RFA,OFA,
$ b3 C/ n! G# F% z8 \. z5 xID4,V64,O,C,RFA,OFA,7 e" W1 J! w' K2 v# `) [# ]
ID4,VE8,O,C,RFA,OFA,. ^/ F5 R# _2 O% I4 m; {8 v
ID4,V03,O,C,RFA,OFA,
6 e5 U  ~  k( j1 f& i; U5 |ID4,VF4,O,C,RFA,OFA,O,
7 U* S4 _5 N' ^: f6 H* `' P( j5 u( [e83,
  J# ^7 Q; ~: l# fe83,
! ^3 Y7 H+ S' W. L* f* ~+ L, we83,
6 i/ F8 e% y/ f; G) n& g6 ee83,/ e/ }# O2 t3 k) S2 r- X* y
e83,
1 G: m2 O$ r9 [1 s5 we83,- Z( t+ X1 V7 g8 J% q' }
e83,
6 S# {+ H. n9 v2 Ne83,; m# Z$ m2 Q% K4 |! T
e83,
+ g8 b2 e+ ^9 f" ~8 R$ K! Me83,00,C8,2E,
2 G+ _/ y+ [# D# S: Ve83,00,C8,2E,
3 D. |, H% C0 g) K" i1 ke83,00,C8,2E,
$ v: ^* l3 f. I1 xe83,00,C8,2E,
# \# T5 k2 t7 K/ \e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
* t& u2 J$ ^0 k) p+ te83,
: p  Y  L- h* y9 d( G8 ^# l

2 ~1 x) v% g) S
2 t* N0 r# |3 f0 G% q[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
! @9 H) q% W# q5 ^+ J! V2 A     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。6 v$ `2 p% e& g* |. k4 i& S
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!  Y. {8 U2 ]0 v2 {: R' _9 _
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。
$ O1 b& M+ L/ ?8 }/ N      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
! B7 q( ^- C3 H+ ]BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
0 V/ L6 Z: z  I2 |Device(EC0) {/ ~5 n# E; C3 o  B' d
Name(_HID, EISAID("PNP0C09"))
3 N% v$ E1 w9 h0 v* }1 ~, X......9 t2 H3 R+ t8 z& ?3 O3 p/ O
}1 y) W6 o# O4 {6 l+ |& n
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,8 d+ G) e- f& e' l
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
3 C. M, A& |" h8 S6 x2、    * X! z# V9 y- A
Name(_CRS,ResourceTemplate(){           
2 {& o6 _) p6 m- o, ?9 u        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
# e  B. ~! s3 n! P+ [7 G            IO(Decode16, 0x66, 0x66, 0, 1)
8 P7 z& l3 B2 R" q! k& t        })
0 a1 J  s/ V7 x: u3、接着就是
2 x0 K9 }/ A7 {  c  f* mName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
+ q& W3 _" h3 y/ F# f: p! [, l通过这个声明,OS知道EC和哪个GPE关联起来
* |& s+ ?- A5 A# Q0 b; ~而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
5 p( z- o  i( D) \! \# D2 N' jEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
4 a5 ^8 x: ]7 f而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
* g6 R* ~& N! a3、OK,看看linux是如何处理SCI中断的
, i9 f) u$ ^( C& F+ W. oacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute7 T3 m# Y' w7 s9 N+ |
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)2 f% Z5 t  _% G; c! M; Z) Z
4、EC接到0x84查询命令之后,就把Q事件号传给OS; n" M) |% j0 k; c  o0 q
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分- b& r+ D, i# Z
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了8 @' t2 ?, V, [$ h
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
+ I/ F3 A" V, O: c7 J  o/ Iqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm0 Z3 p  \5 d2 O7 Z% `* ]
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。6 d" f0 f" Y# Q* ?- a
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-25 16:17 , Processed in 2.076762 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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