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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
% ~9 A3 P1 w$ a+ \5 y看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,( C( r& ^! z" Q" c
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
. X% ^: P. Y6 P4 M+ s$ W; N我们在操作系统下用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的命令
# n" `7 v/ P" a" i. I. aD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check' L! h2 S3 y" x8 ?8 ~4 a
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
5 L0 A4 `8 t9 W: W  R其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。% @8 }, v5 K. t' b$ x
* H" n7 P7 N  m0 T8 W, a& l
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,( L! L: ?1 r" Z! w, r
e83,; \& s8 k; X% J; |$ P2 p
IFE,
2 y! K- A4 w8 ge23,oFA,
8 ~8 C4 \( m( ?ID1,DDF,LPC RST
4 Z2 p% Q, S" n* c0 I" o5 B0 X7 W; W' QSwrong LPC RST! k0 x# m0 l7 W( n1 S( `! x
LPC_Reset_Flag=64
) v4 l: z( d, K) b+ T! o5 q
; n* |; \2 S$ b9 H
ID1,DDF,
& c/ g2 o3 m) L8 U: ~4 E5 H/ }IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,6 o2 l2 e6 M4 k% X
ID1,DDF,' i! k) V4 A8 ]7 m2 s. o
I90,VED,C,RFA,OFA,V01,C,RFA,; q- `3 q2 M% v0 Q
ID1,DDF,O,OFA,O,
, A& D4 V- @0 K# d2 U1 |2 j$ le2A,>IDLE
! Y4 k& ^: H$ l6 [% goFA,<
& g4 g4 X$ w2 M9 re00,
$ |) }, e- _1 J/ d/ {& h+ U. tIAA,O55,O,
, m1 \2 V* o: r- d) f  tIAD,9 E3 N/ m/ ^, V3 D
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,1 Q. @/ o( B/ _' B
I60,O,D65,
1 T, g& z6 E. Y0 UI60,D6D,VF5,C,RFA,OFA,K20,  _, ]/ b4 {, B) \1 k+ Q
IAD,
- S& a! Y7 j, e, o# R# yIAE,O,VF5,C,RFA,OFA,K20,( l; W0 }4 f5 r8 a4 T- W
IAD,
. s' a0 Y" u1 iIAE,O,+ ~$ |7 E* w; P3 F5 Y
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,4 S, U. V7 ?* Z
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
* [2 _' C3 p; `7 P/ L. BIAE,O,
6 L, h9 t6 x4 r. b) @- q8 l& S6 oe91,d2F,d00,+ J* c; j  Q4 d/ H* ~
e10,d83,d2F,P3_K#
1 U; _  {% H( S& `9 n! RP3_K#
# c# k: t) {% a' o5 g& X; F* y' ^

4 k& b* o6 ^# D" X6 n9 re23,oFA,# m' G. ]5 N: ?9 }4 ?+ J% ]& i2 I7 a
I90,VED,C,RFA,OFA,
5 ~& d) C+ h' T' v2 L$ AIAD,/ ]. |* p: Y3 h$ O7 O  z
IAD,O,
9 q% T" b+ f: n  R2 B) {) C" hIAE,V03,C,RFA,OFA,
  x  ^$ f+ r0 j) Q6 [9 h" o  ^IAD,# P  o6 Y: ^# H5 R) l
IAD,O,
0 b; D: x9 {2 U0 Y" DIAE," [! ?3 V& ]  L; a' Q& Y: K
I90,VED,C,RFA,OFA,! x5 E; K4 W) O
IAD,
" \2 W! Y  s! Y* Q, s( _. {5 UIAD,O," F  d5 ^0 L3 _% r% R( Y
IAE,V05,C,RFA,OFA,8 |$ g' A" V; d5 c- Q& n' f
IAD,* d- A: n$ N/ \! U
IAD,O,
# z- H% j8 G2 DIAE,O,
; x4 k% F; l: be90,d2E,o00," M; B" v) ?- v9 h( c
e91,d2F,d00,P3_K#
' i% i0 N! n$ a) {P3_K#
- V( \* c; z  D
  @' d  T! z6 e$ G0 y# S* q- [) L; l
IAD,VF3,C,RFA,OFA,$ s4 w% P3 y5 E
IAD,
2 a! e' m9 ?; T" r! KIAD,O,
0 }( z$ x0 v: R" [# HIAE,VF3,C,RFA,OFA,
+ o- n$ f0 [5 P9 R8 G/ E/ `IAD,5 s& l  p" _3 n" R* {
IAD,O,& [1 W3 e5 N: D8 ~+ z/ |
IAE,V20,C,K10,RFE,OFE,K08,) k0 S# g' x3 U5 W" V, y
IAD,
6 J4 |1 x5 q5 [$ tIAD,O,3 h' R( H3 o8 A, n' _
IAE,V20,C,K10,RFE,OFE,K08,5 n3 j7 }/ }+ }% }8 ?& G
IAD,
6 P1 j( q6 w; MIAD,O," u) R; C9 v" J# _3 @$ C
IAE,V20,C,K10,RFE,OFE,K08,
/ p- I* x5 F/ G  ]5 OIAD,% x5 s$ p1 A' W# O
IAD,O,
3 [9 k; A" H. M( |* l; p" NIAE,8 A+ i* h* q1 f3 P
IAE,VF4,C,RFA,OFA,
4 b. D9 Z& ]2 m1 y6 LIAD,; p$ |+ z1 @# V* C: \! A& Z# H$ q
IAD,O,
5 y/ U! g6 I3 c$ qIAE,VF4,C,RFA,OFA,
: J7 G8 m! b3 i* r  ~/ JIAD,
9 W9 A9 p1 v" U8 L0 v* ]IAD,O,- U" \( j0 F; v9 D7 d: x
IAE,VF2,C,RFA,RAB,R41,OFA,
1 Y: y" y4 o4 DIAD,
* V; C; n( o/ V# i$ PIAE,O,OAB,
$ B1 \/ Y% Z- c, eIAD,
, f1 s' O. F: O: C  @8 n  iIAE,O,O41,# Z- @: R' s+ ]# ]/ J5 D" W* Z+ f% ^9 y
IAD,3 k3 ]$ q: ?: g
IAE,O,VF2,C,RFA,RAB,R41,OFA,: ]+ X8 T8 G4 O1 }
IAD,; M+ m$ |) w$ w
IAD,O,OAB,
5 I; J' I# d9 }; wIAE,O,O41,
2 R& O' J1 u- c1 t; x$ eIAD,, _: ~3 m# h4 E# o) ?  X
IAD,O,
0 v! z! I2 i; l( e7 qIAE,VF2,C,RFA,RAB,R41,OFA,
; m- _& Y- w5 b0 O! q. aIAD," ?$ v3 v6 g( D, @4 O
IAD,O,OAB,
/ v, S! ]$ ]" Z5 D: G" E1 fIAE,O,O41,
" @2 v' }" k3 k% `IAD,6 o& K) q  @% x, t( X
IAD,O,
# D6 H' k' p1 m/ N( H: X- g  HIAE,0 d8 T' ~* J9 J
I90,VED,C,RFA,OFA,
. J" f& d* O9 m+ W' C" iIAD,  f  C- I$ Q! X
IAD,O,+ w5 S, e* f: k) U
IAE,V00,C,RFA,OFA,1 s& A: c5 D( G
IAD,
- M- c% G% p- oIAD,O,8 V$ ~: j% }) Q9 `6 X
IAE,+ E3 q/ _0 i# @9 I6 a& u
ID1,DDD,% i& I) Z0 S6 G; y1 b' p/ y
ID1,DDF,
) n3 g, e, b+ h& r/ p& M% Y% W& zID1,DDF,) m% F4 b8 d$ M% a6 h& B: N9 M
e22,oFA,1 k7 W: \) B- c" C
e83,
6 z! Q1 w' n' x$ We83,8 C# p9 P, @% N+ Y$ C1 f/ v* J
e83,
* h. m5 l5 }3 B/ {e83,6 O5 X9 \2 p' Y& _$ Z
e83,
+ q8 ?0 [% u6 L0 le83,
( o8 m( C6 Z2 U5 m9 se83,
* M  O7 l9 }9 q0 q: @e83,
, F  g2 B3 P7 C: Re83,* m6 m3 q& G6 T1 c4 B
IAD,
( ?  R5 ^& Z5 [: CIA7," E- q% V, K" G+ N+ E) a
IAE,O,
% H5 {2 \, n$ i+ e9 s: |  ?7 h& sIA8,
0 e- |! T9 ~) e- i1 v' n2 v5 H; UI60,D44,$ A" v4 [) m7 Z3 C
IAD,3 K# d8 z6 }) b& v+ ^# P/ P
IA7,: u' s8 R9 L2 u* Y  `; H/ W- C8 Q
IAE,O,) m7 Z( A! O6 {
IA8,VFF,C,RFA,OFA,RAA,OAA,0 \! b/ ^- m* a8 ]& V! j8 T
IAD,O,K20,2 ?$ F9 `( t9 G2 c# J
IA7,
- F: v7 U# a* a/ m) N  IIAE,O,+ R. i. g' ]/ ]8 t' p4 f
IA8,
7 f3 e% }5 y/ m. @# p% i% rI60,D04,7 A4 S, D& i0 V- y8 [! R  O
IAD,$ `# p  v! r3 L2 n: J
IA7,
+ w! o/ q% x  S0 P3 qIAE,O,0 ^7 G: R: R1 v# k% i& J+ G
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,' ^( Q7 |) D6 |/ J) A2 L
IAD,O,
% r9 i. N# |' T2 k) HIA7,5 H5 ^# {2 H7 \  R7 G% x# u; D
IAE,O,& a2 w7 i0 M, s9 H0 }
IA8,8 Y$ O! e3 n- f  ?0 \
I60,D44,$ s! c1 p" C! U" |
IAD,
' X, e6 x0 k% T0 fIA7,# I! s) ?% ~4 w' t' G+ V! q
IAE,O,
# M/ z2 \# o% y- I; o  `/ d2 Y1 |IA8,& c) C/ ]1 I$ N4 D8 a$ k! E: e
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,! T9 W6 k* b% K: z& E+ p5 D" W
IAE,O,, i8 o/ _  O' Z. {! f
IA8,6 \3 U' ^/ V( g" {( e+ x
IAD,
. |* r1 p' F' @2 j) X5 MIA7,
; n; X+ C; V  ]5 l0 I& fIAE,O,
/ T! U9 r, p% ~( BIA8,
; [1 U, r' S& {& ]) h& j0 O' G7 ]I60,D47,. {2 y* M9 k" V6 }* _/ E
IAD,
' p8 d1 |, d" qIA7,
1 [8 \4 T; @1 m9 i% l. gIAE,O,
4 I/ l, U! l! a5 v& \9 Y0 i1 rIA8,2 R* H' S4 u* U/ n. B
ID4,VFF,
& \$ X% ~4 l& B5 N7 C7 qe83,C,RFA,OFA,# B1 M; `4 s+ t, W6 I
e83,O,RAA,R00,OAA,O,O00,( V$ H% v7 }2 |2 j+ |
ID4,VF2,O,C,RFA,R00,OFA,O,O00,( G6 S: I' S" v+ J
ID4,VE8,O,C,RFA,OFA,
+ b4 G' a3 `, B" M( o* H+ S/ a9 m( IID4,V00,O,C,RFA,OFA,
8 N' T2 U& C, z  e* y6 \ID4,VE6,O,C,RFA,OFA,
8 m! B8 M, I8 z$ k$ g* @ID4,VE6,O,C,RFA,OFA,
% k3 y6 J0 s6 Q1 g0 }1 y/ `# nID4,VE6,O,C,RFA,OFA,& p" m5 C- J  Q" _0 V. r: h
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64," ]" d( Z% `) y8 h
ID4,VE8,O,C,RFA,OFA,, E1 ~: {( }5 \+ m2 z
ID4,V03,O,C,RFA,OFA,
9 m) K; b# Q4 N$ U0 Y1 V' \ID4,VF3,O,C,RFA,OFA,
# \3 Z4 m1 T2 ^3 J* m2 BID4,VC8,O,C,RFA,OFA,0 i3 h' q* W' {2 J
ID4,VF3,O,C,RFA,OFA,
& g( O+ d4 S7 ~; AID4,V64,O,C,RFA,OFA,5 }( k' g' R! p+ |
ID4,VF3,O,C,RFA,OFA,
) j& W6 w9 v8 @# xID4,V50,O,C,RFA,OFA,
7 _6 V+ Y1 V& E2 HID4,VF2,O,C,RFA,R03,OFA,O,O03,; Q3 y" P# U$ [  k9 g+ N) J
ID4,VF3,O,C,RFA,OFA,8 @5 u( {' g" m! H2 p$ }; N
ID4,VC8,O,C,RFA,OFA,) Y8 O) Z! j" B/ r5 _0 ?) c, |
ID4,VF3,O,C,RFA,OFA,
0 a, Z* G4 d& i1 l7 [ID4,VC8,O,C,RFA,OFA,' c, q& D/ T) @7 ?
ID4,VF3,O,C,RFA,OFA,
$ h* p9 M8 j( }' T& `: bID4,V50,O,C,RFA,OFA,# X' a7 q2 \# M* N9 m. l
ID4,VF2,O,C,RFA,R03,OFA,O,O03,3 {4 E9 K/ S( t$ [( b! c! B" J
ID4,VF3,O,C,RFA,OFA,
2 I$ K. G: n: PID4,V64,O,C,RFA,OFA,& J4 c) K0 {% x
ID4,VE8,O,C,RFA,OFA,( w+ B. Y0 P( ?" p
ID4,V03,O,C,RFA,OFA,- V  ^) B+ O% s; g2 ]# Y) ?
ID4,VF4,O,C,RFA,OFA,O,, j: o/ `( o7 {. `! D& {
e83,
- q2 z, e4 n: J( t2 e4 N# g3 w* Xe83,# w  x- U9 _& t
e83,# J1 j$ j& C+ J
e83,
' P! I9 D. |/ ~2 n5 ^e83,# C  N: \. u' P4 i4 y1 B4 C0 ]
e83,
7 d  ?. k( y! re83,+ \/ Q! J( F# I0 S/ I0 @- C
e83,6 k1 O2 f+ k# w, Q" C9 ]1 F
e83,
3 w$ T; A% M% \4 _/ Re83,00,C8,2E," H) R% x& ?/ f. P  ^) R
e83,00,C8,2E,& K2 Y3 P; h0 B  X9 G
e83,00,C8,2E,
1 o0 B# l. s8 B/ l) [e83,00,C8,2E,
4 S; Y) t7 G# o- A; r9 H; [2 Ue83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
: f. F( K3 j, H% ^# R8 Ue83,
0 L+ @& ^7 V' z7 V" r% j7 [5 m

9 C( k, C. t" B* }+ l$ M* C/ U0 H4 d3 Q& `
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复! v8 {4 n8 D7 l* w# |! ~
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
8 c, G6 R7 q% z( \9 h% H: v9 W      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
  n5 }- Z. N6 h" a) B" A2 p5 l      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。
6 e$ Z, H7 i3 S( I      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!1 g0 [. D; j* W/ e/ \' F6 z
BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
) X8 p* h9 ?! S! g$ Z& e7 nDevice(EC0) {% p" w: W/ O3 T" I) o: J( X
Name(_HID, EISAID("PNP0C09"))
: t* B' B+ X, k% C5 t6 x......
# d3 D0 o8 j$ t6 w6 W) K}3 M5 ^2 P+ \6 u4 L1 I8 T2 |
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,# E4 q5 F9 F8 i! v8 Q7 Z" w# b9 A
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)9 n: Y0 N# \# S
2、   
6 e; P9 p$ D" X5 \) c! AName(_CRS,ResourceTemplate(){           
; i8 W6 ]4 Z5 m; `7 W2 a1 _        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84' q- ?7 {4 x7 J) y
            IO(Decode16, 0x66, 0x66, 0, 1)
  o, n; J' h- Q5 ]1 l& q        })6 j6 e4 d' ]) j5 ]" w: Z+ D0 d' T
3、接着就是: s; Z- d, ]8 [# m9 |: S' p8 [' W
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
. S) {& c1 w( W. R2 s4 u通过这个声明,OS知道EC和哪个GPE关联起来
( I+ V# D' _: E, D" ^7 X而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来! G* W/ F" v) Q. O: e
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。8 C; j& S0 m2 I8 _" C7 r- d7 z* D
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
" b) G$ i; ?0 z; n( @3、OK,看看linux是如何处理SCI中断的. C, D$ m7 p9 N& `7 \5 ^0 \3 f
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
' o8 y3 K4 m) Z2 Z& A+ G3 Tacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)% e- f3 [5 I7 o! d
4、EC接到0x84查询命令之后,就把Q事件号传给OS, c" n" [. q+ @# O
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分+ q, P0 {$ I% H4 `
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
, X8 v$ R: D( [* j2 I, o有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。: R8 e5 ~6 M6 T" @# U
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm2 Q/ q+ X" P7 p% [, ^. v
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
: X3 M9 J1 C9 V版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 18:21 , Processed in 0.066919 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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