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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
* y1 O+ m% l9 e" b( @! L看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
8 m6 b/ K) {# m今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
; q% i  K2 V" q# ]& @2 E: U我们在操作系统下用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的命令. i5 t( n; `; ~: o. z) y6 x7 L
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
9 |. O; ]8 k; @3 f/ H; m这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
9 [4 d' @$ t1 |& Y' E* V( ^其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。( b2 w* f: w! B/ i
2 c' Y; \6 m" g! s! c# S
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,3 o# C/ C4 S: O& X
e83,, O4 ]% n$ l, z0 Q- L5 X
IFE,/ S  Z  w; o( D' w$ a, q: `
e23,oFA,
# p* l& L3 j4 B/ {& x1 uID1,DDF,LPC RST; `( D$ v. N& S4 ?! W5 _
Swrong LPC RST7 D# f: Q" i$ k; y$ M+ ?* a
LPC_Reset_Flag=64
. r/ F7 ~8 ]% z; H: K- Y4 N" q

4 _% ^' F( ?4 J3 ~, z6 v6 i8 GID1,DDF,5 `& g0 ]# m& l) U
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
: p: X- e/ j8 Z5 `ID1,DDF,; ^2 K& i1 j; e5 w0 }" S
I90,VED,C,RFA,OFA,V01,C,RFA,$ ^, n4 }( d: G, o1 e1 V* Q  R4 n
ID1,DDF,O,OFA,O,
  _" o& F6 S" b; |e2A,>IDLE
" Y  `9 y4 P5 K# \3 A; z$ OoFA,<
. U! o9 N6 s2 d* Z! ~; ce00,
6 |9 L" F" Y3 Q& o# bIAA,O55,O,
( g; ?+ h. J( z% b3 u% l( g: A! vIAD,
6 \/ S0 L. X+ F; h3 Y3 KID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,+ J. ?# L% M: B( b$ K
I60,O,D65,9 @9 W& @3 E( x" K. N
I60,D6D,VF5,C,RFA,OFA,K20,
( F5 A; k) h; n2 Y( T$ L) LIAD,
: S# b* g; g) n5 VIAE,O,VF5,C,RFA,OFA,K20,
2 ?4 z  e$ h4 |IAD,
* n' X9 i4 z$ U& Z2 G6 ~IAE,O,7 H+ i/ U$ @0 s2 x* u# s. T, @
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
5 F- w+ w5 }4 U7 Y9 |- nI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,* s$ {$ X# t; K; V
IAE,O,4 S8 p* C6 ^9 z  Q3 e. v* y
e91,d2F,d00,
' v7 [9 i0 O7 x4 }2 D! Je10,d83,d2F,P3_K#8 F* g/ D. U# V2 k% a
P3_K#

/ ^! ~4 x8 a  }' }& e6 d  ~3 x  u& Y0 R5 r1 p: i8 c
e23,oFA,
6 u  t. F, \4 r) h) g' P! y( YI90,VED,C,RFA,OFA,8 r2 ?8 Q3 a: f) n8 }
IAD,( O; k1 e  M  }# d4 z3 g3 i
IAD,O,* n& K$ P5 K( c  q; u
IAE,V03,C,RFA,OFA,' e) X" h) [, z+ D7 C" V
IAD,
) d: g, n( U7 u& jIAD,O,2 q: O, p& g1 \6 K. \7 n4 [  \1 h* n* ]
IAE,
; G! O; j! e5 v3 ~: E6 I' qI90,VED,C,RFA,OFA,
5 p' p, G# \% hIAD,
+ z5 n! }6 G7 J7 k" @6 l$ PIAD,O,3 [- E0 \  w3 e' a. s* q2 c1 v8 E
IAE,V05,C,RFA,OFA,
. o3 b# ]) t' r: A8 @  n& l4 TIAD,+ E+ v3 z8 v* B# a) [- t
IAD,O,
. n- V! i0 `" [IAE,O,8 X$ @. T# `( ^$ n/ U
e90,d2E,o00,
* _+ _1 N! B; m# d8 |+ U- a% ?) Le91,d2F,d00,P3_K#1 r1 [3 m( @- S8 X  ]& X
P3_K#

! E/ F( L4 m) H5 `  o
5 G) u) Q7 z3 m5 eIAD,VF3,C,RFA,OFA,
8 ?( ~3 E4 c% W# hIAD,
* z7 |9 G/ l! i7 wIAD,O,
0 ?; H+ m3 l8 e3 F8 u" \( v$ ]. s2 _IAE,VF3,C,RFA,OFA,2 R# Y8 ?+ a  {. e1 Q
IAD,
. }) |( ]+ G  R4 ?$ A7 ]+ KIAD,O,
% d  d% ], ^! m, AIAE,V20,C,K10,RFE,OFE,K08,
) z& ~8 B( P8 V* jIAD,4 J) P. m& ?4 F, x4 r
IAD,O,/ p' m5 E3 f2 G
IAE,V20,C,K10,RFE,OFE,K08,
& g1 E4 R% ~8 Z1 B; qIAD,
; S+ G, e+ m8 h: DIAD,O,
& t4 ?, y# ?1 u  B1 C: j3 |  XIAE,V20,C,K10,RFE,OFE,K08,
+ ~2 l+ `9 p* a7 w2 m- X: ^9 t8 H" iIAD,
, l/ q2 U! y4 q! z( x: ?: qIAD,O,2 R8 ?4 Q2 s' b2 F- y  m
IAE,% o5 W1 N: y, w2 d# ]. ?5 |
IAE,VF4,C,RFA,OFA,: ]# o* ?0 i0 u- ]: S. A" U2 L+ G. I
IAD,
( ?, ~9 S& m& N& A1 T: ^# EIAD,O,
8 i% r2 J  T2 uIAE,VF4,C,RFA,OFA,# ?0 Y. W5 Z! y" W5 A& \( w
IAD,2 R. H2 e% j- V
IAD,O,2 p! R# Q: A# z/ E8 i4 {( B, v0 Y
IAE,VF2,C,RFA,RAB,R41,OFA,
0 @6 V, _$ J* V' y3 hIAD,) h7 q& ~. [' Q+ t
IAE,O,OAB,( @3 q5 {! ^/ b
IAD,
' i0 y. ?6 U1 |7 `IAE,O,O41,
8 e6 o: h: X! n9 v! u+ J1 DIAD,
! D: O' p5 b, k& zIAE,O,VF2,C,RFA,RAB,R41,OFA,+ p) A' N2 w8 h" N0 ]# T) v
IAD,
' {4 l5 B- Z" A& R, o. }' HIAD,O,OAB,/ {, j- c0 m2 u3 @' O1 \0 |. ?6 M# I
IAE,O,O41,  h* k' D1 v, J% Y+ S* b: J
IAD,* X# \2 q; e- [$ l' e( o
IAD,O,) z# B; X* y! n8 A6 C
IAE,VF2,C,RFA,RAB,R41,OFA,
, \7 ]* F! G/ hIAD,+ v4 E. y. q7 A; w% |
IAD,O,OAB,9 N; B6 J9 p- f1 ^, V* r9 h
IAE,O,O41,
) s# ~, Q% v; pIAD,
( L: B' V8 W7 [3 |. wIAD,O,
" L' t7 N2 y( l) L' e, `$ EIAE,
. u- K. Z5 _' U9 u2 o& OI90,VED,C,RFA,OFA,9 M) X2 I. n5 ^; ~7 A$ h
IAD,$ O1 B/ P, T4 x9 d$ S; ?2 g
IAD,O,
# X5 z* X' R! y4 HIAE,V00,C,RFA,OFA,, Z& s4 x! d' i& }* o7 K. i
IAD,
6 O" y; R& m: o& f+ H5 D; @2 hIAD,O,6 |4 y( s. `# Q
IAE,
5 ~9 w% Z/ X" n7 Z) Y" qID1,DDD,
) u; ]8 r# [  ]$ EID1,DDF,
4 O+ j0 [! N3 I- P! b  NID1,DDF,
7 _0 j6 r4 ^' i6 c" d. s4 qe22,oFA,9 E4 _4 X5 I: ]
e83,9 H  q& u5 ]+ _7 }
e83,& t& Z% Y! G, ?  o. l5 t2 B
e83,5 C! |% G" x2 ^) j  M! K" j4 E
e83," ^  N; }$ T6 c' x) A% V
e83,. s  H6 I% x6 x7 K! P3 q
e83,
" p+ Q# C; n3 C+ ~/ Ae83,5 _; D* @) N( Y. y
e83,
& p+ Q2 p7 J0 n  t  V2 ge83,
* h5 C& {0 U3 ]( ^& N1 r5 Z$ VIAD,
5 \9 O2 F/ l4 b$ AIA7,& W# W8 o. t, Z0 Q; i6 u
IAE,O,
; V- D; c; O3 X( dIA8,
* z/ P/ }8 k$ Q2 E+ @# T0 hI60,D44,
+ S. l; S2 j! X: f# PIAD,
! u! Y7 m; N* p# R. ?! [IA7,
1 e: S. ?( [0 d; _2 \IAE,O,
8 E/ X( C" Q0 L5 T8 [IA8,VFF,C,RFA,OFA,RAA,OAA,
( v2 s% }" \6 C# _! k/ Z: dIAD,O,K20,
9 F& ?3 L3 V- e6 n. `* j& v" {" [" |IA7,! m3 V, i$ f4 i4 O  Y' d
IAE,O,
0 Y- \. t+ ^( Q9 [) ^2 CIA8,
7 H  ?; _7 m* G+ D9 E6 hI60,D04,3 F+ I% @2 P: h7 l
IAD,  P2 _0 L0 R' u/ f
IA7,
! {7 `" J: w7 h+ Q$ rIAE,O,
! |. x; L9 N/ p/ |; [4 W5 K1 sIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
7 n/ w) R1 L) _+ ^9 ?IAD,O,
7 S1 `& u2 l& y5 t3 J8 zIA7,, {! I1 H! v. Z+ ~4 c
IAE,O,* `9 m) L, C- p; u, n/ x( a
IA8,% D8 z: \8 N6 P1 J
I60,D44,
/ D2 |$ b' G! r; W0 V" b6 {( KIAD,+ {9 l* W% o" S8 \. M) z- v
IA7,1 l' O  b, i. U' f4 u: B0 X
IAE,O,0 B; ^* Q* N) d# ]
IA8,# v* |- `& y- Z: l' I
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,. f  Z1 f" f; K' n  c* J2 X9 Z, Y/ |
IAE,O,
* L& g% k0 j7 `IA8,; O/ |5 D& y6 m6 n' v
IAD,
: n, W+ `0 m3 \7 Y. `. g: M7 _IA7,
6 R% I6 J. V" `IAE,O,9 r" R, B' @; x/ ~
IA8,) u# z6 k! |# K; w
I60,D47,
  v$ C5 z, _2 z  a1 U! T( fIAD,1 H0 E4 M1 D' D3 D2 S! }
IA7,; _& B# ^& ]% D, L1 [
IAE,O,$ H5 o/ q* o  n
IA8,; C8 N- R0 }+ Q$ g! s
ID4,VFF,
4 e/ n0 b# h: X# t2 Ve83,C,RFA,OFA,' [/ m2 s3 M& ]
e83,O,RAA,R00,OAA,O,O00,
2 z7 Z9 F+ `+ \* x" fID4,VF2,O,C,RFA,R00,OFA,O,O00,( l3 T2 J9 H9 G( G3 _+ U' e5 q/ |# L7 F
ID4,VE8,O,C,RFA,OFA,
% V: ~. ^, ~+ z1 ~/ PID4,V00,O,C,RFA,OFA,
2 P1 J7 a* A+ ]$ M2 D! oID4,VE6,O,C,RFA,OFA,
  ]( \; T, [. C) J0 L. X- F4 ~4 tID4,VE6,O,C,RFA,OFA,
. A3 m) x) a& K5 [4 C1 QID4,VE6,O,C,RFA,OFA,0 N# L7 N3 G7 C4 n* z7 w
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
! Y  d* S6 H$ t! h9 @) }- kID4,VE8,O,C,RFA,OFA,
9 ]& a& V" g0 X% A% FID4,V03,O,C,RFA,OFA,
: p; z% p5 c5 iID4,VF3,O,C,RFA,OFA,
4 T! V; M9 k6 f$ y' l/ m% }ID4,VC8,O,C,RFA,OFA,
8 h* H+ W/ r2 d+ H4 QID4,VF3,O,C,RFA,OFA,* A/ z* S5 U! [$ U! n
ID4,V64,O,C,RFA,OFA,
1 g8 c: u% Q7 L* [+ b0 [$ tID4,VF3,O,C,RFA,OFA,
: W) N6 ~# I& W) hID4,V50,O,C,RFA,OFA,
9 O9 U9 m0 o9 L6 F/ w, b) KID4,VF2,O,C,RFA,R03,OFA,O,O03,- N5 ~3 U: V  B
ID4,VF3,O,C,RFA,OFA,
5 q0 `( y, D) o& y6 r+ SID4,VC8,O,C,RFA,OFA,
* q0 b! v* R) x  S3 A9 I. G2 \" v( P1 eID4,VF3,O,C,RFA,OFA,
* V- W3 E4 S3 s6 |ID4,VC8,O,C,RFA,OFA,; i6 L% f9 k5 T
ID4,VF3,O,C,RFA,OFA,
* R$ a- Y* M  E' @, Y  Z, z$ D& j; MID4,V50,O,C,RFA,OFA,# q  ?/ O8 y8 V- ^& k  _+ n! W
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
" X  V, F7 }: `. c6 N4 f0 j( V& f/ YID4,VF3,O,C,RFA,OFA,$ I5 O2 ^# O8 ?- P9 l8 U1 U8 u( |
ID4,V64,O,C,RFA,OFA,- v* [+ H' @+ \# j3 _* L* i# G
ID4,VE8,O,C,RFA,OFA,0 o1 a: W$ t- C$ B2 c
ID4,V03,O,C,RFA,OFA,7 `6 S0 A4 @' n; O% c7 S3 S/ I
ID4,VF4,O,C,RFA,OFA,O,
0 q6 b; u( Q: pe83,. a& \* _& l' `, R
e83,1 Z; z) j* u$ k
e83,4 M. a% Y/ [3 g' g
e83,
# h+ D% B$ I  O0 `2 P( pe83,# x* ?& g. l( \( p6 f  @
e83,
$ M' K% v3 P$ j, C: r. Le83,0 C; Y8 w( I& L, M( A" v3 C; q
e83,
3 F% K; j7 g5 Y! n) E( P- Q5 ce83,
9 P( G! n6 m) b5 Y/ a1 Ue83,00,C8,2E,9 I: S+ ^5 F1 W
e83,00,C8,2E,
9 g1 U/ D  |- }e83,00,C8,2E,
# I" C; m. Q( W4 U* z8 {e83,00,C8,2E,
# i5 v9 y+ r3 \; q  p' Ne83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,0 M5 l! A/ Z; I# s
e83,
$ _2 F+ ~: d# s. S2 C' u

0 e1 h2 d; K6 d; A" P, P( D) V7 Q$ G, z( q' X
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
$ H& R8 q1 Y7 U  W  gDevice(EC0) {
) }3 {8 E! T( q" V7 @% d' OName(_HID, EISAID("PNP0C09"))
8 T+ O( A! `' \* @2 g1 J( s......' b8 R& N: @6 a$ a  a0 u. j
}
2 U5 W6 h* M. `3 S9 ?% hPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,( t- O6 o! _9 d  v7 f1 ~
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
1 L! j2 L$ @$ c" j% g9 b7 g2、    6 U+ A% X1 V, C  V4 S1 ]/ M
Name(_CRS,ResourceTemplate(){           ' {8 M6 u! ]- A, ?% w0 [
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84! Q+ N" X! V9 B" n! s- U" g: T
            IO(Decode16, 0x66, 0x66, 0, 1)  k# ~: y% {8 X$ m' q, H2 Z, @# n
        })% M. G- O- m5 b
3、接着就是
. N) @7 k: g; Z0 k' JName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
4 Q) A: w- f1 S6 R! P: q1 G通过这个声明,OS知道EC和哪个GPE关联起来
7 `, g% U" J& }1 ^5 M而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
( W8 W: E. @  I( yEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。& g& F: e* Y, [* e
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
2 `2 M! |1 G' c8 H- c" L3、OK,看看linux是如何处理SCI中断的' P/ \! p7 s8 K: K; G# I1 r% G0 u
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute" E" m  [- b4 c$ }8 N- j
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
6 c# X7 [+ w* Z6 |6 ?0 V4、EC接到0x84查询命令之后,就把Q事件号传给OS
, L, f$ `& _  O1 lOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分  P9 S; Q1 [9 Y1 ]
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
2 u5 g! t& P+ {8 _有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。( r$ @* ~9 C4 i
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm* a$ |1 y, H- s
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
2 ]$ u/ Y0 O$ d3 ~' A版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 18:24 , Processed in 0.022046 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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