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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?4 P' W- u) h4 o' a( P6 L- w
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,4 E& C5 T4 G3 h' c5 Q8 y8 q
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
: a* p: k. D1 J7 ]9 d. k我们在操作系统下用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的命令
* }2 d! k5 f% @+ S$ G! tD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
% G+ s; A* x  Q! |6 j这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析! e1 B0 V* d1 x9 _+ X
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
3 g" N. D2 |/ \
' y- J- i# V3 L9 \VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,3 O0 _6 x' F% `4 U8 y
e83,
% R7 S* X0 O: H; fIFE,& F8 F7 Y. U4 w) v: T: T4 {- L
e23,oFA,
1 Z: X) t0 U# ~. h$ e3 w2 JID1,DDF,LPC RST
  o+ y; y) `; YSwrong LPC RST
/ E/ r  @1 ?7 g% \- k3 N4 iLPC_Reset_Flag=64
6 M& D9 |& I' s! `+ g7 g' s

! x" F6 p+ o0 QID1,DDF,
. O8 ^: X8 @1 ?* S$ [+ FIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
+ J& J$ X: t: }5 L' x: b; gID1,DDF,
% ^5 k- m" e7 m: T4 [0 @4 Y2 }I90,VED,C,RFA,OFA,V01,C,RFA,; Q6 P) U& d5 q' b4 E' _
ID1,DDF,O,OFA,O,2 v# M8 [$ {' H' s( O5 Z
e2A,>IDLE
4 I  m+ l4 d( j2 soFA,<6 C+ Q- V$ p  }. K# B$ U1 E+ V
e00,% a6 O3 y1 @8 c. l% J; h
IAA,O55,O,6 }  V  h. T% A5 @7 U
IAD,2 q* v; l; P' u. j% O5 u) z8 a8 {
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
; e7 [' R; g' v" z, rI60,O,D65,9 U: N% A3 }% F& d6 @  E
I60,D6D,VF5,C,RFA,OFA,K20,
7 z: _! |: e6 O' ?8 mIAD,
8 H. d8 r; Y! e. l8 f( qIAE,O,VF5,C,RFA,OFA,K20,/ c/ J' J" V. e
IAD,
) a- _& Z" ~* d& ~" r. a- k! NIAE,O,
( l( x0 }2 S- q8 n; ~IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
: D) {3 }7 ?$ M# [  L! k" I' g' O# II60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,: h) E* @9 c) ^5 g0 W3 }
IAE,O," t* J4 M; \$ M* i* h8 E1 _
e91,d2F,d00,
3 P' }4 U+ X- _( me10,d83,d2F,P3_K#
; L4 @& Q6 {3 h9 q3 {P3_K#
$ |+ {3 E$ d! S: ~7 k8 p, a+ ]2 t% ?
# U2 d: A! u# w
e23,oFA,
& X- A( W! U5 B) u2 ?7 QI90,VED,C,RFA,OFA,; |8 f0 t" F9 v. J0 \
IAD,' \" G* }9 G: `
IAD,O,; O' W7 r) Q' z# J( i
IAE,V03,C,RFA,OFA,' Z3 g% B$ Y7 N; [: {# u& e7 n( b7 E1 r( i
IAD,
  [1 Y, }; F% E4 T/ O& aIAD,O,
: E# t% w) r: F* D& g7 |& ]IAE,
! O. @: v+ e/ c* [, a" l' J: @3 ^I90,VED,C,RFA,OFA,
5 R8 a4 {2 Z6 \% HIAD,
1 z  ^# _: |6 _8 kIAD,O,
- B% s9 d; m: z0 J2 b6 t8 I, kIAE,V05,C,RFA,OFA,4 ]0 T' a) j0 @+ |' X
IAD,
2 |" G% F& B6 k+ mIAD,O,
% B7 ?. J* m# M4 ]7 O8 z& rIAE,O,& j' Z$ V% t. g. h
e90,d2E,o00,& R# v5 O$ |% O  I
e91,d2F,d00,P3_K#
8 Y8 D: ^. C( A  r+ o( zP3_K#
; X: A5 T! B( S; `6 P; l: j" V3 l6 u
% h2 g* O6 B+ {8 Q- t( r6 Y0 \
IAD,VF3,C,RFA,OFA,9 e+ d6 K) u5 W) u
IAD,/ `8 K0 M. Q# x* R/ ~
IAD,O,
' q' ^& F+ F( {IAE,VF3,C,RFA,OFA,2 t+ j" E, G! Y' W/ w
IAD,
/ t# U5 v! {: rIAD,O,
7 C' J) H7 R9 L( P  n6 kIAE,V20,C,K10,RFE,OFE,K08,
4 l3 r0 B9 h; O( j8 sIAD,1 t9 y" g2 l; n
IAD,O,
# R! `" L  z' W) b% [' yIAE,V20,C,K10,RFE,OFE,K08,/ G$ [0 l( {& K/ i
IAD,
2 |5 H! @; c" S0 M. D. u$ ~8 ~% rIAD,O,
; `/ n( k" p7 o# H% hIAE,V20,C,K10,RFE,OFE,K08,( c& w1 b5 R5 \
IAD,
. v1 M0 {  G& F/ lIAD,O,
3 q6 b+ ]" b, G: q) O( `1 OIAE,
  a. u8 }# V% S2 ^0 AIAE,VF4,C,RFA,OFA,$ O3 S0 @! P+ t! ?- B
IAD,* j& S9 w# l! c2 M8 F
IAD,O,
( }3 _; j% r. s0 ^5 q9 u- bIAE,VF4,C,RFA,OFA,
  o# H$ h$ g9 j) c. HIAD,5 U" ?9 {; [1 ~  p3 z7 z
IAD,O,5 s% r2 }1 |! |: G: W+ f
IAE,VF2,C,RFA,RAB,R41,OFA,4 a2 `# x( b# u" }8 ^' C8 m
IAD,, d, {0 b; D; S) \
IAE,O,OAB,$ a0 D" B% E' [: H( n: h* ]
IAD," v7 I* }- N+ p+ Y0 e
IAE,O,O41,
0 b3 s7 U; _" F% z, KIAD,
9 A( T2 Z' [: E& E2 H9 sIAE,O,VF2,C,RFA,RAB,R41,OFA,: G6 g5 h8 ~; b
IAD,# Y; |5 t/ ~3 ]/ K! z9 N3 t
IAD,O,OAB,
" G: E$ T2 y$ `; T! w4 lIAE,O,O41," P" L3 b4 u+ O1 J3 d- X; |
IAD,: j0 m4 M' Q! t# ~
IAD,O,
5 [. m3 o  g5 V: m3 t4 IIAE,VF2,C,RFA,RAB,R41,OFA,/ x7 n$ |: ?/ }" z0 `
IAD,
6 l7 c6 ]9 c4 z( S8 D  DIAD,O,OAB,) h' _/ W# v4 T" w
IAE,O,O41,; E- O: z, ]; d  J6 ^
IAD,
5 k4 M5 l  T7 `7 h5 c/ I1 m: yIAD,O,
( w" T2 B$ d/ l  C8 jIAE,1 D* G7 A$ Y% H  y3 R& G( u! H
I90,VED,C,RFA,OFA,
& n% U# Q5 O' q( v, jIAD,0 j+ G7 j' u" w- e9 g& P
IAD,O,
- J5 t1 A& Q" G) cIAE,V00,C,RFA,OFA,
5 K. p: X' V) @& l1 Q# mIAD,- {; S' f' e( s# P# ~1 z; ~
IAD,O,
/ C( W* r4 ^/ Y3 G# l! B) JIAE,
: }7 k5 G: M' D  t* T8 P& nID1,DDD,
0 g- @* B6 x+ e9 w2 B, E- TID1,DDF,2 p& h' o5 L  o; O0 t6 y$ C
ID1,DDF,
5 i$ `2 |- e' S$ G& F+ Xe22,oFA,
9 J% ?. n$ p1 k: z5 A8 F3 O3 a0 _e83," S. |7 u$ z" y. j. a+ m6 {! M; O  @
e83,8 ~7 W; o) J; I6 }4 \- t9 |- Z
e83," e+ y6 O' W* Y* ]0 Y- j
e83,
3 P, R9 N- j) J. ee83,
# c% k' l+ R$ A3 Ve83,
- N4 i3 G0 y( j2 O" b4 D* je83,
( w2 f+ M. d$ U; e; {e83,
) F4 f6 U$ O* O5 de83,  Y0 S  _6 f* Y4 S* m- h. |
IAD,
4 Y& E& {  C7 T6 [IA7,
' a) U, r$ P% @) }5 k  _4 XIAE,O,
3 ]# V  B2 q' A! g- AIA8," k6 w' c" V8 ^0 Q6 i5 J9 d  I5 e+ Q
I60,D44,$ f* i! l5 [0 o) ?, N! t
IAD,. j) h4 g, ~7 S5 _5 z' M
IA7,
" P( ~- d# E$ `IAE,O,
2 O- N$ D) p; Z- uIA8,VFF,C,RFA,OFA,RAA,OAA,3 n) U% B+ J1 E  @" w4 P+ n( U
IAD,O,K20,  Y, W% D5 T. h
IA7,
/ g$ y' ~: ?% }  K5 Q8 J6 cIAE,O,, c& \) N2 t' c' f5 \2 ~
IA8,& a- P) H* T9 q4 o  F
I60,D04,
, \: m/ r/ u3 TIAD,6 h' H' ]1 J4 S- c( e4 a7 T/ K
IA7,
1 k# |+ M$ f- U& C& h7 EIAE,O,
1 c: ?0 ^! P+ VIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,) |# O* S7 q9 f* w' L
IAD,O,/ V1 \! H) A. I' R! ^) r0 t7 s$ D. B
IA7,2 |2 I4 `4 `) b. \! R0 K, b
IAE,O,# @9 V2 q5 T1 w, K
IA8,8 Q% `9 u0 A: k+ e! i& G/ X
I60,D44,
- M+ P: Q9 I( t3 }" LIAD,
1 c( B( {2 S: }. Y+ mIA7,) h% x( ~( O9 ~9 J8 Y, s; V" [
IAE,O,. Y+ b! G  f. j
IA8,( T! |/ P: A  k3 X( B! B. d
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
7 l# k. E  s5 ^( K, eIAE,O,' v# s' I7 ?( z; f
IA8,
$ e5 d! r- H: ?1 J" O  d" k, bIAD,% {7 P% i7 s0 s3 x. a4 i
IA7,
' {9 V1 v: x7 N3 sIAE,O,
6 q8 m' E% U" M& c9 N2 f9 L+ QIA8,
# v2 r" a. ?8 {2 t4 f! dI60,D47,
& Q" G9 u/ B6 }, n$ r1 FIAD,
* l" z5 o: t# }. N, |. O$ r3 h( F  RIA7,
' s( R4 s# \  v; eIAE,O,
9 [1 e1 P. S' @& j# D4 R1 sIA8,
$ S* J4 U% r, t; }  q1 K" QID4,VFF,
$ ^1 z4 Z2 d  b4 ze83,C,RFA,OFA,4 Q2 W0 A$ t, |' X2 K
e83,O,RAA,R00,OAA,O,O00,
$ b4 U5 D- Y2 q: p5 eID4,VF2,O,C,RFA,R00,OFA,O,O00,. _' m% j; l3 N# E6 D
ID4,VE8,O,C,RFA,OFA,
3 Q9 ]# j' n0 [9 CID4,V00,O,C,RFA,OFA,
6 A5 i, Q$ Y4 e5 n7 r, sID4,VE6,O,C,RFA,OFA,
/ t* \2 x# R7 z9 l* w4 FID4,VE6,O,C,RFA,OFA,
4 I& ?1 N0 o! wID4,VE6,O,C,RFA,OFA,/ e) z8 Q+ t/ Z( B6 y3 h
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
  I$ \3 s$ Q: dID4,VE8,O,C,RFA,OFA,/ ~: E" v7 }3 o" y2 T! w  v
ID4,V03,O,C,RFA,OFA,
3 J2 w' L; m3 ~ID4,VF3,O,C,RFA,OFA,
8 F0 E7 s7 Z+ P9 E; W# S/ `9 _ID4,VC8,O,C,RFA,OFA,# h, t$ G" N6 U) R4 p. A* ^
ID4,VF3,O,C,RFA,OFA,
& U5 n9 }4 ^- nID4,V64,O,C,RFA,OFA,4 c( g! v' b: F& o8 o, J
ID4,VF3,O,C,RFA,OFA,
4 n8 Z  U9 R, Z9 M( U& w0 iID4,V50,O,C,RFA,OFA,
! ^6 R4 K- m0 H1 q* u/ }ID4,VF2,O,C,RFA,R03,OFA,O,O03,5 c1 P" \1 F; n6 e1 P% ?
ID4,VF3,O,C,RFA,OFA,
6 v! x6 @8 d4 ~/ V, p( m/ o( @- L, wID4,VC8,O,C,RFA,OFA,* J5 j1 ?' s1 x/ L
ID4,VF3,O,C,RFA,OFA,
1 O4 J& c3 I3 j! Y, IID4,VC8,O,C,RFA,OFA,
% Z. i7 t7 o) f) z  U' lID4,VF3,O,C,RFA,OFA,
# r- [# J) ]" q& _2 BID4,V50,O,C,RFA,OFA,
, t( r: v. ?1 n4 mID4,VF2,O,C,RFA,R03,OFA,O,O03,/ l' i' N. o% L, U7 g
ID4,VF3,O,C,RFA,OFA,4 p7 z( t# a/ L6 x1 z* X
ID4,V64,O,C,RFA,OFA,
- C$ ~# ]. A4 w: _* s) z7 s4 yID4,VE8,O,C,RFA,OFA,
4 o! E- q  a- n9 c; OID4,V03,O,C,RFA,OFA,/ Y6 S+ |( e4 s2 H7 J
ID4,VF4,O,C,RFA,OFA,O,
4 g. m5 B" N5 U: {/ X/ fe83,0 P# v; P. U0 H# g
e83,7 |. t  K* n4 e! o3 D6 _! j0 C
e83,
" C; Z7 h, h8 Q' u7 S; ie83,( M* g! P) J; O* G1 K) y* m5 Y
e83,7 s; o  {; e8 [) G* v% I
e83,* N7 `9 r) }/ V: C
e83,1 k- n( w, V( @/ Q% v, E
e83,: J; s, v5 l( w7 R0 f0 S1 D4 f1 N
e83,
9 z8 `1 A( N3 |e83,00,C8,2E,
' X' R1 R+ T* n$ }e83,00,C8,2E,
  e% `( [7 r. }& [! v1 me83,00,C8,2E,
) [, f' i+ D' ?9 {& We83,00,C8,2E,7 b8 W$ o5 C2 q/ c1 C
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,  r  V0 [! r2 y7 J( O) Y! ?
e83,
1 G# Y; U* z$ i; D

9 y, r6 d* `0 X' f: L/ g+ n- ^- j
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
. S2 T9 e! ]9 ^* i2 H8 p     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。6 U$ k" O6 M  n3 E) _
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
  _/ G: l: o" n9 h% A* i      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。2 \8 [- j: Q0 c0 o5 m; q
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
* z4 W% K0 _2 T) r7 {BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
8 r$ X. q- N' S6 W9 uDevice(EC0) {, h( U" ?0 n1 _0 \
Name(_HID, EISAID("PNP0C09")); v. d* |  j) @' B; K( T
......
8 g( _3 n9 V: c# d/ D$ B6 k5 L}
. U' f$ b4 |! N1 q3 CPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,5 @. G% ?+ K: v1 n/ E9 ?
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)6 R, W0 H3 F4 N) D2 F$ o, [
2、    0 R  _  y3 W) v1 E# i9 A- A
Name(_CRS,ResourceTemplate(){           : }; }7 \2 i3 N1 |4 H/ G# S+ ^+ R8 W
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84- D! x7 z# G# Q3 C& O
            IO(Decode16, 0x66, 0x66, 0, 1)! I9 O; R, K0 S7 B- d9 l
        })
; v0 _! L6 I# h' S$ ?3、接着就是
7 C* g$ o! o  {) X* Q; CName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7: K6 a, V, e9 G, z/ K8 K# Y  w( d
通过这个声明,OS知道EC和哪个GPE关联起来2 U# Q. c: d7 c7 P. F
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
0 D+ H* Q/ O$ q3 t6 I2 F8 j* _$ z3 fEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
. P' w- E1 ^& g5 R: O; O- f6 V+ ~而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。* }" E4 T  f4 O9 E( F- U
3、OK,看看linux是如何处理SCI中断的
! a* l! g( P* M. q* u2 l. _8 bacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
/ \3 w; P$ w+ ^: w# C& {2 R! Z# D! Tacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)5 P( u- T& ]( M2 V% Q) @4 x
4、EC接到0x84查询命令之后,就把Q事件号传给OS
" t; k, K+ J- r0 tOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
4 _0 F) @* W& M, x你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
' }! e6 t- k1 s/ U' p  N有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。. s8 j. s: i8 A5 H* S: b
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
1 V7 K' n; f: i; j% rbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。% }, V# B, C$ d. d4 p: Y) \
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:26 , Processed in 0.024433 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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