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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?) E4 E4 N- |( ?5 M  h4 w3 _3 V3 K
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
2 ?& _& a+ {5 ^) z0 I( j0 \今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
. i) G: T! P; i" z我们在操作系统下用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的命令8 j1 U7 M5 y: B7 K( q& c
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check, r8 ?0 w2 O% m2 W) `- v6 h) o( o# P
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析5 n' q5 E; w; p& X
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
" P4 E/ O. E! w* t4 }+ Y2 g8 z0 m
9 \( e" V8 |( i9 X8 e  Y& W# zVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
( _8 v( p0 [4 E" ve83,0 l& {' p" a; i$ u% |8 S0 y' r3 D9 T
IFE,
* `1 P4 V, Y( A/ i- w- c! Z9 ]: xe23,oFA,
( R( n9 S3 b9 f% I/ k! U9 ^ID1,DDF,LPC RST
' T+ U6 m& `- GSwrong LPC RST
, A. _; F! _& S% G* Y3 fLPC_Reset_Flag=64
; O- ]5 k4 x2 Y" ~2 t
2 D4 z9 d) E" B" k6 g
ID1,DDF,
5 ~+ {2 c7 b: I6 m8 h. \% fIAA,O55,V65,O,C,K10,RFE,OFE,K08,O," x% E3 A/ ~* Q: w" `6 i
ID1,DDF,) j( c$ F# J! q
I90,VED,C,RFA,OFA,V01,C,RFA,) O  r. [# c1 U: Z
ID1,DDF,O,OFA,O,
4 J, ~% H1 J+ @9 o" Ce2A,>IDLE
$ w0 y+ J" J# ioFA,<- n8 e, T- _9 T3 n9 u7 x
e00,
7 d* m6 x5 N+ J, v% C. H, |+ R$ zIAA,O55,O,/ ^/ F7 h& D5 e# y8 }  {
IAD,
8 ^! f# `* u" r" F4 y+ RID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
3 M) m2 ]5 S6 B  a; zI60,O,D65,6 Z7 i# N7 e1 ?
I60,D6D,VF5,C,RFA,OFA,K20,
! \6 B  O  i. @) ZIAD,
' ?) M$ y# U' JIAE,O,VF5,C,RFA,OFA,K20,
8 T( K0 C2 q. SIAD,
7 A6 L1 g( M% D; n: tIAE,O,
% F5 r, k) {6 L( c; d0 s- |IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,* q5 Y* N* K. q8 C9 @1 K
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,2 x6 V1 B' X1 W, q3 k7 e
IAE,O,
: h" x+ I( V1 X% V* Ge91,d2F,d00,# a/ n; t& A7 x+ O
e10,d83,d2F,P3_K#
1 E$ n# H4 S# U9 p2 P: fP3_K#

0 o1 o3 K; [" _$ D% n! M- g; O4 ^  M- X2 r6 G
e23,oFA,
) o" _1 x2 M9 L' `3 yI90,VED,C,RFA,OFA,
( {/ `  {! g) I- w5 @" O* G+ x3 zIAD,
& ~, _  Z2 O( j  T1 |3 x( s8 yIAD,O,
9 a! \' i7 o: ^4 x& t1 C0 xIAE,V03,C,RFA,OFA,
% _$ E- a$ r3 j; @0 Y& F" O* ~$ }IAD,# L1 ~: Y. Y! H+ h! d
IAD,O,& Y' M5 [8 f7 V7 q
IAE,5 ?% _( B/ D& X" f
I90,VED,C,RFA,OFA,
! ?  @+ y  d! l1 o" ~IAD,& Q  f& |1 p3 E1 X
IAD,O,, J; i6 }0 w* h" Z: E
IAE,V05,C,RFA,OFA,
  E, A9 a$ h& M) U( y( k9 ~; V: |; NIAD,
, C8 |7 }6 y; T6 }6 b6 A: HIAD,O,8 u2 C6 Z& Z( J! T4 `( P1 S
IAE,O,
$ w5 k  E' V& r; K/ i$ A9 }e90,d2E,o00,
( z  ~0 @& q0 V1 ]+ xe91,d2F,d00,P3_K#4 G5 ~2 @" x3 Z. }7 X+ k8 N
P3_K#
0 k4 p7 V6 d9 w% a0 M( o
7 l! s5 c+ l2 u+ p
IAD,VF3,C,RFA,OFA,5 {1 U% D% ]4 a( g* R+ o
IAD,& g+ B5 e0 j5 Z5 a4 C( d
IAD,O,3 t3 Y* Y4 j. X8 O0 M, Z7 t
IAE,VF3,C,RFA,OFA,
; g( ^* v& E. oIAD,7 v# A; c6 W7 N, C* j* v, Z
IAD,O,$ y& V# u& @1 U9 h
IAE,V20,C,K10,RFE,OFE,K08,/ r0 P8 |; \# d0 X; ~
IAD,
8 s3 U/ Q4 l8 Z# F9 o1 rIAD,O,
5 t9 Q5 |  v  V. O3 @IAE,V20,C,K10,RFE,OFE,K08,7 W, r: N- z$ }8 `, z
IAD,* E) g7 D3 Q: V0 |
IAD,O,/ n& T. y  ^( N- b
IAE,V20,C,K10,RFE,OFE,K08,4 {  {# K3 c( y) |* o+ l3 f/ I
IAD,& a+ B- G4 k! G( V. `- R
IAD,O,
& d! R' v( F/ A; e; ]IAE,2 j5 n' d' l; B2 ]" _2 p( \, U
IAE,VF4,C,RFA,OFA,
  V0 J5 T$ @( l3 q: y3 q) z" KIAD,
: p2 R$ @  E/ c6 n2 S) l5 k& IIAD,O,
$ _( V% B) a2 w8 V$ |IAE,VF4,C,RFA,OFA,* ]; h1 ^" ?: P% N' d
IAD,
# ]% Y7 d5 K, v4 J8 nIAD,O,
) B8 g5 n- \/ D+ J: @: a# hIAE,VF2,C,RFA,RAB,R41,OFA,; x) B( T+ d$ ?4 |" Y* _
IAD,* ?7 \- @9 q5 B. i
IAE,O,OAB,2 f( b, W4 e; q0 X  }
IAD,6 {+ d: r0 j) m5 w/ f8 C
IAE,O,O41,6 ?) I9 A' d. ~* z2 b/ V4 e
IAD,
7 u+ }' w$ Z/ {5 oIAE,O,VF2,C,RFA,RAB,R41,OFA,. G9 j! v9 d( w4 X  l$ ~& Z  H
IAD,
& T8 t8 M' G9 o) c1 Z  t+ LIAD,O,OAB,3 d% y) N6 H: ^8 ]5 n
IAE,O,O41,
8 O2 v& v# @1 K( z4 DIAD,8 g2 M2 @3 B/ B' s
IAD,O,  s$ s$ b6 G) g6 U" K0 q4 s
IAE,VF2,C,RFA,RAB,R41,OFA,
) {* v! s6 n$ t8 H: ^# GIAD,  n. x- w+ Y) W  D
IAD,O,OAB,( A4 f8 C+ s. E# L$ S) `7 ?
IAE,O,O41,; W6 a9 d! M; L) u2 C
IAD,
  z. x' z6 k9 n! w! D# `1 GIAD,O,# A2 Q5 Q# E! f, S+ x$ Z- X4 i5 g( X
IAE,
& i5 P# g1 L3 c* UI90,VED,C,RFA,OFA,) A0 Y6 Z2 _3 W
IAD,& _1 Q- n  x) u' u
IAD,O,3 K0 ?3 ~* y8 X9 A' F" Q0 |
IAE,V00,C,RFA,OFA,
4 I' Z5 b5 `& E# s5 _) PIAD,
2 q/ [+ ^" t: Z% fIAD,O,
# r/ o" Z, u0 V$ X. W/ _9 OIAE,. X, x) Q9 O$ s# I! i3 p
ID1,DDD,
  X7 W" g. Z5 z' ~2 ~ID1,DDF,
( M! @, m5 w- R! x- b! z* IID1,DDF,5 r6 u" k' [& @  {
e22,oFA,1 V' Q7 Y+ q& }) Z
e83,
, T$ d- _  H, M7 O5 }8 W- ^e83,
9 o) A7 t6 z3 N; Ae83,
3 Q  S3 W- \7 @" X0 ]$ \e83,
7 R: |7 ^& I3 g7 z& F2 me83,+ W# P% a$ m% M! t' a, b3 ]5 I6 d
e83,
' t/ p9 G, o  Y/ Z- f  ?$ A  we83,+ I+ t+ o5 {' ~/ {% o3 F6 p  E
e83,
+ N) n4 H; h0 c* E# j4 X" He83,# y( J7 S0 S6 V& z$ Z
IAD,) X; T3 U5 c' `  S( d3 w4 }3 W+ {) O
IA7,7 q0 q, p* u7 p" A- N2 n
IAE,O,6 Y3 T2 ?1 [7 Q0 \0 F4 e
IA8,% y3 m3 b  e$ o3 C: t- H
I60,D44,
# v$ P1 f* A6 `# W/ e; kIAD,+ Z3 q! c; G2 m+ s, g* b
IA7,
" Q' o. U- R  M7 A4 ?, r% tIAE,O,
. I: L# k/ J& r' P! s$ u5 LIA8,VFF,C,RFA,OFA,RAA,OAA,
/ x! [# Q3 X  S3 }IAD,O,K20,( k# t! q1 @9 S& j/ D
IA7,# P4 b/ ~+ C- N; W5 u! w' n" y- C
IAE,O,
( R+ E: q( D4 r1 {6 bIA8,
# r( ^) A2 h, d! a$ iI60,D04,, F; ?0 }' S+ m: {5 T) `
IAD,4 L3 T/ ]$ V0 d. P# A
IA7,
% |2 o$ Q( ^. ^IAE,O,
6 x3 k$ _. o1 }  c9 rIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
" {7 {* j5 }  l' ~, JIAD,O,
- A( a6 c7 N  {# @3 z) ~3 zIA7,' i8 v$ j) k5 @8 P+ s: j1 }) }* r
IAE,O,
: e) n, \& L# S; DIA8,5 m. \( ?+ O! x$ t( A/ z( K7 ^3 [
I60,D44,1 c9 Y3 O/ g: z3 a; B% I
IAD,0 F- q0 n# L+ G- J5 A) I, H& {
IA7,
: ~/ T5 u0 s. qIAE,O,3 l9 a# G3 A+ K- P& }+ J
IA8,
( X( J# Q# Q0 S* X2 p4 IID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,3 l4 f# B3 L7 G  f& b  W
IAE,O,
2 [6 b  e. @: q  wIA8,
  C, p/ ?% u# O  h/ K$ yIAD,
& v3 v( L4 g: a/ zIA7,% t8 b3 @0 }* p1 y
IAE,O,, [; p* c: u9 b4 }
IA8,, q7 x# Y0 t' z7 s5 D& v6 O
I60,D47,- D, M6 ?' I1 C. h' M  r
IAD,( q& j3 F  a; C  ^4 S3 I- l3 [# M
IA7,
' r& D! i- o# O& b) kIAE,O,
' U7 w& ^, q1 o: e  T& NIA8,
2 h8 t/ R3 C# l4 j7 q2 P+ YID4,VFF,
5 D% V4 ]. g/ Ue83,C,RFA,OFA,
8 m3 U9 v: u) f! b" T- |" Ze83,O,RAA,R00,OAA,O,O00,
1 N1 m: f* ~9 r+ D9 vID4,VF2,O,C,RFA,R00,OFA,O,O00,
4 t8 B7 K0 G& |1 l, h1 D- V: lID4,VE8,O,C,RFA,OFA,4 C. X7 i: B1 R
ID4,V00,O,C,RFA,OFA,
1 ]) y$ }( k+ q& c+ y8 R' bID4,VE6,O,C,RFA,OFA,
( x% a" p* _2 \; W( v7 j  ~6 B9 ]ID4,VE6,O,C,RFA,OFA,9 v7 _' ^) H. r8 c# L- r) ~( A
ID4,VE6,O,C,RFA,OFA,9 Y; f9 n' f9 p' Q9 Q4 r' Y( S
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
3 \% O$ b4 l. F- q8 S6 ZID4,VE8,O,C,RFA,OFA,
0 ?+ j4 D6 u' I) ^8 uID4,V03,O,C,RFA,OFA,
# Z- F6 @$ u# z; ~% n( NID4,VF3,O,C,RFA,OFA,
: [; L; J: r% G* ]. s" sID4,VC8,O,C,RFA,OFA,% X) d/ K% {4 G! r& C+ d1 {" @
ID4,VF3,O,C,RFA,OFA,
& r" g1 Q& ]: JID4,V64,O,C,RFA,OFA,
/ P. C; U6 V# h- J4 mID4,VF3,O,C,RFA,OFA,: `; i5 z0 U. O* A
ID4,V50,O,C,RFA,OFA,
0 a3 g/ d( p! V6 G2 JID4,VF2,O,C,RFA,R03,OFA,O,O03,, T  E) I4 l" N9 d7 C4 w& ?" {+ ?+ ]
ID4,VF3,O,C,RFA,OFA,
$ X$ \0 i, E1 A2 @2 V- [9 GID4,VC8,O,C,RFA,OFA," L1 c6 Z$ F/ ?2 z
ID4,VF3,O,C,RFA,OFA,
+ x  w9 T+ s) u, C/ U' _  j" }ID4,VC8,O,C,RFA,OFA,% L: E5 H& R) O
ID4,VF3,O,C,RFA,OFA,
6 e% t+ o2 _6 u' \% M. iID4,V50,O,C,RFA,OFA,# P+ ~8 h* t$ T, v, k
ID4,VF2,O,C,RFA,R03,OFA,O,O03,. Z$ S& w, f$ H/ [! \2 O
ID4,VF3,O,C,RFA,OFA,
8 N: ?* O1 F) J, [2 C% ^2 iID4,V64,O,C,RFA,OFA,
! F5 D% J; y% @3 lID4,VE8,O,C,RFA,OFA,
4 G- @9 w! ?3 k3 nID4,V03,O,C,RFA,OFA,
  j8 L+ C7 y6 t' G; sID4,VF4,O,C,RFA,OFA,O,
  F& X. P- j$ m8 ^$ p/ s' J+ N4 re83," r/ Q1 @( A) |4 {6 u+ U
e83,, S! c& N6 a: E" R7 V
e83,
  ^* E+ l" u: {& L: L2 qe83,& N) Y+ }% |% n) S$ f5 r5 ^
e83,( N+ n9 m- I; P6 E, v. g' X; M9 G4 u
e83,/ s% A. c  X8 j: d
e83,  m$ E$ \0 S3 r$ _! G
e83,+ O' r0 N. S+ R$ I2 X' w
e83,' \3 X8 T# w3 K5 f  h
e83,00,C8,2E,, E( W6 p8 u- u, g
e83,00,C8,2E,
) N3 c1 y, G- B! z8 @e83,00,C8,2E,* [1 Y8 F, D# A3 _) r% l
e83,00,C8,2E,( J' N8 f! s7 E& @% U4 Y5 O
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
8 O8 l% q) ~$ E6 B9 se83,9 U# i* ]. v/ ^% Y. w( [
9 I- m1 S# v$ C6 c2 i: j
* g$ V+ O  Z5 ?: Y* d
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
0 Y) {) K( X8 j* ?: P2 c- d     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。" N0 i' x( v4 l4 M4 C
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!# N( T$ _* [! X
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。" u. S" Y6 j2 g
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
  R0 J6 D* S: i" Z% aBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
+ ^2 i. Q( F; Q- i0 E3 `Device(EC0) {
( r; |2 u3 r% W' kName(_HID, EISAID("PNP0C09"))
2 R2 v! e  X' [$ F5 @3 ~0 d......: a# I% n/ e+ k2 \' N
}& ]0 t. K- y) `7 O" T+ ~1 o% C/ Y
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
# Y# a) Z9 f* _8 ?& {& s9 b就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)* P8 C- S7 [# l* h& j. Z1 ?
2、   
; \: D8 h! W: f4 i$ {4 E( WName(_CRS,ResourceTemplate(){           
3 z6 s3 U8 d3 a6 k$ v! A7 i# T/ Q# g        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x847 Q7 j3 a+ ^" W0 s2 W3 r
            IO(Decode16, 0x66, 0x66, 0, 1). R2 |( f; E6 L) `! M
        })! r) l0 c* {8 J3 J
3、接着就是
6 O0 x! n1 S# [( l( v" [0 ~; LName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
; F) A- }" `7 t! I通过这个声明,OS知道EC和哪个GPE关联起来  j+ W8 e/ V+ b+ V
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来8 s5 _5 J4 y; {0 T0 L
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。# M. t6 s4 @; t5 L0 X8 R
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
) Q# o' k( e* A3 |3、OK,看看linux是如何处理SCI中断的: W+ J1 I8 t$ g  I
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute6 ~+ Z, @$ f7 o5 }7 f
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
0 U! M. p' G. R9 E, Q# G! v4、EC接到0x84查询命令之后,就把Q事件号传给OS% }$ ?$ T& l" g$ n8 K. b
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
3 D' W- Q( Z7 z* W你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
' ~# h8 z9 v: V有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
8 R7 F: Y& @" x' kqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm# I7 ~  q: X  K4 t7 M7 ^( O! W. S5 H
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
3 E8 F& `! y/ C% i9 @7 H版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:48 , Processed in 0.017174 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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