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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?8 T* `, [4 f# ?, Q" Y% p
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,' P$ {$ f: j  I
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。- F/ O/ t; h/ O% 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的命令7 x( u0 X* W+ M; R; W! h  q
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check- p, j; t. D, a, o: Z" [. X3 ]
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析& a% T+ }+ I9 ]
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。; [3 E, C& ], _0 T. ~5 v! R
- S) }( b3 L* L! S# k5 c7 z) D) b' P8 f
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
1 R4 G' p$ ~" s) U, ne83,
$ X" D; N' D1 q  k/ eIFE,2 [! K0 j; H7 y  z7 h
e23,oFA,
& u% e& E% q8 F" Y7 S( xID1,DDF,LPC RST' h0 n3 I- A- M% u2 y
Swrong LPC RST3 m) V) @1 D6 Y/ q8 c. l
LPC_Reset_Flag=64

5 V" s( V4 q1 K- |0 ~4 z$ j$ v" ?: G" n, I8 _8 B
ID1,DDF,3 w6 M) Y' A) c1 Q- o/ A$ _
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
/ i& ^$ _4 C! b' D! x/ \: A2 @" gID1,DDF,
" D% u  A" K* e1 C& S6 P3 KI90,VED,C,RFA,OFA,V01,C,RFA,
3 V+ I# O7 s* AID1,DDF,O,OFA,O," D, l% p; G: h  c6 t- G
e2A,>IDLE
$ v; U4 l6 x7 i- r% q6 ~oFA,<
6 J3 \0 i! @, W; Ee00,7 `/ U, }# ^* o0 e" q4 g; \
IAA,O55,O,
" o2 }) J1 l& x7 S- k! kIAD,9 h6 c' k- e9 Z1 {" N4 ^
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,9 A0 q( b& k. b0 f
I60,O,D65,
/ P$ M" w0 j7 \  }I60,D6D,VF5,C,RFA,OFA,K20,
0 Q4 ?# N' F$ [$ D. ~IAD,
! Z6 i, K# {2 R8 G& N. A( eIAE,O,VF5,C,RFA,OFA,K20,! V+ X  Q1 K4 ~: z5 A% _
IAD,
: j* S* \5 h4 [  E/ V7 t: C& N; ^' }IAE,O,: {3 F; u8 V& N. F6 q/ ^0 G8 P; p
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
& T. x8 \; w6 h. I) uI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,3 F3 H  B" B/ d3 V
IAE,O,
3 L" q  V/ ^5 K: @. v8 We91,d2F,d00,
: Q2 M: W0 t4 _' [( ^e10,d83,d2F,P3_K#0 @/ `. u6 q2 E' |; _) {: Z5 e& P
P3_K#
+ {2 g7 T  M9 Z5 p( `
% L& n6 A/ O( V& X# o! p4 R
e23,oFA,
: }% P, j7 A- j8 `; wI90,VED,C,RFA,OFA,! Q& {( D' U6 |7 ^4 D
IAD,( k8 S: O& k2 _8 r+ ^  F
IAD,O,
. K+ s# u- L% t. W+ V6 U9 C4 ^" MIAE,V03,C,RFA,OFA,
- K! C: b  I6 `, P" E0 sIAD,
' E! J. p+ D  K) h# E6 r( ZIAD,O,
+ O% ^& Z/ u  e  dIAE,
4 @1 G) R! \+ P* q3 ]I90,VED,C,RFA,OFA,
7 ~6 M# J$ s' @4 ]1 d+ WIAD,
0 @9 V2 t2 c$ I4 q" ?2 b; L. nIAD,O,
9 G& T3 K7 J' l+ H' TIAE,V05,C,RFA,OFA,
5 J: p$ x/ @( V. AIAD,- G5 n: d% V9 \8 G( y  D7 v
IAD,O,+ y5 H! u' j4 \
IAE,O,1 E1 N! t5 ~0 j- k
e90,d2E,o00,/ [& q$ Z6 ~* m* I! L
e91,d2F,d00,P3_K#' J: \% q, C# H) G3 D, L8 y8 I, W
P3_K#

$ n3 Y3 L8 X- o! M' t! _+ T/ X; `4 y! E# }
IAD,VF3,C,RFA,OFA,
" a: W' D( u' \  r0 RIAD,
1 v1 W8 `! I9 c+ S! l& jIAD,O,
& J9 [4 j: K8 k' _$ o7 u* PIAE,VF3,C,RFA,OFA,; ?+ U* D6 E, A* U# v1 C
IAD,2 a/ U* [' r7 R) Z
IAD,O,
! l& m$ z/ Z. N; \IAE,V20,C,K10,RFE,OFE,K08,
& m1 o# |% }7 H6 Y) HIAD,
  J( M. [, e4 s" G8 T& E" pIAD,O,) v$ i+ ?- `/ a4 O
IAE,V20,C,K10,RFE,OFE,K08,
- b% k( m* Z2 B5 [& w7 n1 sIAD,
5 C$ Z% `+ s; V5 q7 v( dIAD,O,
2 u. b2 F3 ~) n8 x) V% ]' l& bIAE,V20,C,K10,RFE,OFE,K08,
- K/ f: f; y0 I8 q$ U8 W1 ^5 h0 NIAD,7 X  w, g4 o8 q, Q% _* O
IAD,O,
8 o  s2 e+ Y. z6 {: b! h: z1 `IAE,
. Y  t0 s, X% h7 J& F9 XIAE,VF4,C,RFA,OFA,! {2 ^  G5 u* G7 p
IAD,, ~+ W5 K, N" ?) l- S
IAD,O,
$ z% X- L9 ?! n% O# Y7 P# uIAE,VF4,C,RFA,OFA,1 q, K: S! \) v+ `& `( P
IAD,
1 ]: h1 Z/ ~, p9 W: fIAD,O,# p* ^) P: H1 c/ d
IAE,VF2,C,RFA,RAB,R41,OFA,0 x& {* l3 A" G0 F
IAD,9 p8 c" A% s+ }/ g# {, F2 |
IAE,O,OAB,
, b. P% D8 a1 ?IAD,& ^3 S  t% U7 [& ]. _
IAE,O,O41,* [3 `. Y! O2 X- m
IAD,/ L7 g. Y- Q' v" G3 S# A2 p; \% X
IAE,O,VF2,C,RFA,RAB,R41,OFA,! B6 q% Y" u- Z( S0 t5 {2 f
IAD,2 u2 r& U+ |4 I( {
IAD,O,OAB,
& Y% y  L5 x- b1 [% l& G7 D* C5 NIAE,O,O41,# J/ f' p& ^& G" ~
IAD,( j2 T* p7 a* n
IAD,O,
: ]2 Q1 K3 ~; a7 h" JIAE,VF2,C,RFA,RAB,R41,OFA,
) V5 t9 D6 Y) o( p" hIAD,
8 Y/ I: l1 v; P& c8 [& W; e! I2 BIAD,O,OAB,2 x+ X3 T( y: H9 n; v7 V
IAE,O,O41,1 q# z1 _. ]) s. F+ ?2 w
IAD,$ ?! I0 A& c" C
IAD,O,  B$ k+ }2 i& J( D) _! h' x6 A: ]( n8 R
IAE,: B# f, e: q3 i8 z0 Z. V
I90,VED,C,RFA,OFA,
3 i5 b. A9 N' [IAD,# F) V6 O" P. C2 I; _" K6 D+ }
IAD,O,/ V& G9 }! \4 [0 c7 X# ?
IAE,V00,C,RFA,OFA,
- I  V. c% e) w9 |( T( Y+ KIAD,
4 A9 }& v9 t/ {% V) P5 x+ ZIAD,O,; z" E8 @% n# q9 H0 x3 o! U
IAE,
) i4 ~. V8 G1 l4 {ID1,DDD,% P/ `, M( B+ u
ID1,DDF,+ p7 h. y% m6 ^: U+ g
ID1,DDF,4 p6 f4 R. p( _# q" D  G' C7 |
e22,oFA,; E6 h& p' I& {+ A- E% k2 `0 A
e83,' u7 S" ^4 a" n0 \1 k
e83,: l. o* ]8 F' e
e83,
! ^* ]7 O  Q# W9 o1 W: Ne83,$ m9 j! F. K6 [" u4 T
e83,! k5 T& L6 a1 b
e83,
- k5 ^/ r& i5 ?6 P* Oe83,
0 W8 I0 J/ i" ~8 C7 ^. [6 ae83,/ G1 ?8 O3 s; \1 y! x4 z
e83,
* E. ]' N) m% Q7 ]0 K' U" V8 }. r/ ~IAD,
: ]3 G$ z2 L* }IA7,
5 Y, f' A- t0 G6 r. d  w4 g& zIAE,O,
/ E8 T! Y' B) x# fIA8,
, G/ K* n( h! ?5 R+ g2 S% KI60,D44,' m" E: k* F2 g: O5 D4 b  u
IAD,2 Y1 F# M% Y1 q& K5 Q* t  K
IA7,
3 y* r' i- m1 M6 D3 B- P( z1 PIAE,O,
7 C& k! E" I! F6 i# SIA8,VFF,C,RFA,OFA,RAA,OAA,
  V" r3 m; I, A- a( }6 N. B8 GIAD,O,K20,/ q) z! a: c2 t& J8 j
IA7,
+ |# {3 [7 n5 ^7 p4 G' C% jIAE,O,
7 A0 [1 y1 C5 w4 EIA8,2 W) v) @5 a4 \' o  ]: S: V
I60,D04,
7 p% f  t: l  tIAD,
0 Q- p7 b8 B+ W. G3 a" a0 d; CIA7,
: o3 A% Z7 _1 l2 l2 j$ @0 Y4 rIAE,O,7 l$ K7 P4 t6 ?9 {$ _8 ~
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
$ \/ s" W; e; W- \8 F4 c+ S  sIAD,O,
$ y; g2 j( R3 cIA7,7 [; {" Y+ k- L) s+ ~7 e/ X* X
IAE,O,
! k0 w- _  k2 j/ CIA8,( U& p: [7 @/ p6 i. |5 J
I60,D44,8 S8 Y: Y; _( _) F8 k6 C! x) `# `8 y6 K
IAD,
9 s% z, U8 `, BIA7,
3 i7 n, `: J) H' B( V+ t: r* ]IAE,O,4 @5 c+ E; W. ?7 J9 O# R& g
IA8,
/ F# p$ N5 f5 P1 S! J) G7 s2 X' R* [' oID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
: E  d- h( c7 S9 r( z. z& ~IAE,O,4 k- Z: W/ A& M1 D  l  O
IA8,
9 u  i9 b  Q6 e  hIAD,
; ?( t4 B0 Y& CIA7,6 P9 H1 \2 J/ a! g1 O. e
IAE,O,
  z% ?8 ], M8 E+ p2 A$ c# }' UIA8,
! j8 A! E/ p0 _# H/ o  U! b1 K% iI60,D47,
1 N9 w4 P) U6 [$ Y$ T5 [7 RIAD,1 G3 \  m0 c  }( E4 h( p
IA7,
+ f' q: `8 k! n: x$ }IAE,O,; _0 N- Q  y' Q) k9 \
IA8,4 k2 h$ X1 E4 ~# I) G  @( h9 o
ID4,VFF,
2 x0 g4 i/ i3 R7 u1 p  t- J$ he83,C,RFA,OFA,3 j% G# G! R" p0 y7 L1 n4 `
e83,O,RAA,R00,OAA,O,O00,3 f# S& r/ [5 _; @/ k7 R
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
$ Q& T+ B. q$ K# G( iID4,VE8,O,C,RFA,OFA,' Y5 V& r2 ^) \+ p# k/ m
ID4,V00,O,C,RFA,OFA,& J/ f" M) ~0 L9 V6 J6 ]! m4 K
ID4,VE6,O,C,RFA,OFA,
: M& L" {. W2 G( l, u# ?* a, iID4,VE6,O,C,RFA,OFA,
+ L7 m) I8 {- V( E8 _. \. QID4,VE6,O,C,RFA,OFA,6 x* p+ D! s' c# H
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,2 ~" d1 N1 n2 G. ~
ID4,VE8,O,C,RFA,OFA,
! U7 x' Z' _% ?* w. T1 o- u& LID4,V03,O,C,RFA,OFA,- w  C# p5 R0 ]0 N( ]: c
ID4,VF3,O,C,RFA,OFA,
, n+ M) D' I. @$ Y9 z  kID4,VC8,O,C,RFA,OFA,' k, ^' S0 ]! i- g0 l$ E
ID4,VF3,O,C,RFA,OFA,
* R$ Q% @/ Y; B6 C( wID4,V64,O,C,RFA,OFA,
6 v* }" J7 Q* R9 XID4,VF3,O,C,RFA,OFA,  S+ e/ C$ H- P2 N$ y& ^% ?
ID4,V50,O,C,RFA,OFA,
6 h- ^( Q2 b0 d) E7 oID4,VF2,O,C,RFA,R03,OFA,O,O03,+ a0 V$ U9 Z) L* [. z3 z
ID4,VF3,O,C,RFA,OFA,
# k# o, K$ v7 b  K3 TID4,VC8,O,C,RFA,OFA,; s7 P: J* x/ l; x* A& z$ C
ID4,VF3,O,C,RFA,OFA,
' n* _/ u) r3 Q5 t+ kID4,VC8,O,C,RFA,OFA,
" d+ b. H% j$ A7 X- zID4,VF3,O,C,RFA,OFA,
( B$ [, v7 H; a8 u; r4 l5 D0 hID4,V50,O,C,RFA,OFA,
% w& ?. m$ f9 N1 {+ b& S4 hID4,VF2,O,C,RFA,R03,OFA,O,O03,. h% {$ m) Q# ^; {
ID4,VF3,O,C,RFA,OFA,
0 R2 R' P8 V( B' X; C( BID4,V64,O,C,RFA,OFA,( u: m$ z0 l8 e& R0 M# e# r% J
ID4,VE8,O,C,RFA,OFA,
- s& r+ ?% }& _1 E: VID4,V03,O,C,RFA,OFA,
( Z: W& k: {9 K$ S9 R# ?, u: mID4,VF4,O,C,RFA,OFA,O,
0 C; w6 P8 U9 x" J/ D9 ee83,
- Q: ^6 `0 o: n# t0 ge83,
" l) o; t6 W# J" m9 S$ g+ U, ]e83,
+ m& z" o1 w  M( s( R# I4 b4 Ae83,+ O) |, [" ?; e$ S# E
e83,
  o- h0 \' S, re83,
9 B! F5 a" n4 o# W4 Re83,8 S1 r6 W. V1 K$ L
e83,
  P' Z/ F" Q3 ie83,
3 D7 e! {9 q0 `% A5 We83,00,C8,2E,% S. `4 v+ v8 Q" [% m5 m3 P
e83,00,C8,2E,( E( H4 d3 M6 x+ a3 D. X
e83,00,C8,2E,
$ H* |7 b0 J; n+ C& F* j7 Ke83,00,C8,2E,
7 t2 C- O+ O! {2 Z3 Q5 ke83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
+ P$ P# N+ f$ Q3 Y7 e  fe83,# l8 c) r& ^9 d# D5 ?( q
+ H* @8 ?/ e2 w; k

- d+ r+ `6 o) d7 r, Z0 ?[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
0 c7 O' J% W1 k# X: G) x8 f5 l     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。" h+ W2 n7 \0 b5 E6 R, I0 x# U* p
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!; d! I0 @, i/ m. e: _5 a
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。
5 E1 `. f4 j0 c7 L/ k1 L9 P      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
2 H6 e) z1 i, G( W- w7 |BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
! y% O) Z% m6 o& q: i" L7 ~8 B3 hDevice(EC0) {
% X; C$ P* J; C+ |0 n0 kName(_HID, EISAID("PNP0C09"))% W6 f! b$ T2 E4 \) Q# n
......4 k" s) l6 }! i$ ^
}$ K+ L' o6 o0 u- i$ W( [! b7 d+ j
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,4 ^  b4 }) `6 X' Y5 M& x( V; P
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
; K# T3 f. n" D0 Q4 U1 `2、    9 b6 W. ^7 ^* K* a. ^
Name(_CRS,ResourceTemplate(){           
8 K1 _% }2 c* f/ S. o1 r% ~        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
4 M% L9 \, B" W: }1 D7 t            IO(Decode16, 0x66, 0x66, 0, 1)
: j7 h2 p* s! p! F: u" `; o        })0 o1 S2 j  V- F1 O. J4 [2 i- m
3、接着就是; P9 _; e0 T* \; d
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
/ N  L3 `) t$ P9 A; h: A8 J$ u1 V通过这个声明,OS知道EC和哪个GPE关联起来* X, [$ b: R$ h6 h# O
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来( O2 g2 c/ ^# ~, O  Y
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
  d7 H& R9 f8 P& \而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。5 c0 c+ G6 A6 z; I8 w1 u( H5 A
3、OK,看看linux是如何处理SCI中断的6 H: E( a# V; P  d
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
, r& P1 L; J7 |4 |9 b4 W5 W3 q1 }+ Hacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
( _: E" f; z* U, |, C9 R( a! G4、EC接到0x84查询命令之后,就把Q事件号传给OS, I" s7 L2 }  ]1 ^0 E- @
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
1 M  V2 r8 H" n, b! R你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
. V" k3 s+ Z: @  f有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。  u6 g) i3 d% d
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
# _# n3 h; o  W% x& N! Ubug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。+ b, X7 |2 `7 c; ^* b; @) X! T
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-20 07:37 , Processed in 0.050739 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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