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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?3 D; j% i( S" Q8 r% _, y; S
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答," i& V0 W2 m4 h, y( |8 x
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
" @1 s( w6 Q2 _$ n1 |3 G2 P我们在操作系统下用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 b0 ~" Y  z- pD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check+ ]3 K1 ^( @7 {  _
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
9 d& T' o, W7 _1 o1 Y6 F其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。) x, V3 G: F: C, V( {  X& f! m

7 i- N; y( y4 b& EVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O," t, ]9 |) k( B) `; s
e83,/ t0 d' g( e8 ~$ Q3 @( W1 ^6 G/ a- E
IFE,8 C" d. Q9 ]- g  |. j! f; w
e23,oFA,
, r: X& z4 K* \6 hID1,DDF,LPC RST
6 w; G4 Z* N. N6 U1 \8 TSwrong LPC RST  h+ e0 i# x( g0 L* |. Q
LPC_Reset_Flag=64

1 L% x5 \9 g9 a! s4 Z; {
: V& x9 `) a& iID1,DDF,; o  P1 F, r  o8 ?9 u7 d, ~, @
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
9 r. M& ~0 t0 O! hID1,DDF,
/ f2 E: ^4 L5 J6 {2 fI90,VED,C,RFA,OFA,V01,C,RFA,
( H# s4 `) G" |( J7 KID1,DDF,O,OFA,O,5 v& p5 t0 a# k0 t* V# i; _3 N
e2A,>IDLE
5 Z6 {  F- v+ W6 HoFA,<
; \' y6 ~% f3 z8 _4 u6 _e00,
, u' q7 Q0 Q* Y5 s. [: R+ lIAA,O55,O,
5 n+ O5 \3 L1 ^IAD,
9 w" {1 L! D, m! ^3 cID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
2 A  u. q6 u) Y. TI60,O,D65,1 z& C- }1 X( q5 E7 U/ u5 ~
I60,D6D,VF5,C,RFA,OFA,K20,
, e% N# L, C4 H: r, Y+ R4 Q  |IAD,0 z6 d) T( v- [4 u# C  U
IAE,O,VF5,C,RFA,OFA,K20,
% @$ S, J& w8 M5 i" N, ]IAD,7 m$ Q" ^4 `0 d3 e1 R
IAE,O,: E$ e" ~9 I  u, O; \; c
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,6 @' z6 e$ J6 ?
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
* l; f8 }, v+ }IAE,O,0 _& R" H6 B: G0 @/ T
e91,d2F,d00,! \; d6 C, n- ]8 m: {
e10,d83,d2F,P3_K#
) ?  }" l; _. X( u9 UP3_K#

! B+ v$ o' x. l- c, L4 U
0 i, s" h2 `( ^5 y- b6 ^e23,oFA,- S9 c6 {0 f0 K6 C" `% Y: |3 C
I90,VED,C,RFA,OFA,9 P( u) w1 w1 g3 Y3 M/ _/ H- ]
IAD," y% I8 p+ g( n# `
IAD,O,
9 a; y$ N" H  `" `) x1 |IAE,V03,C,RFA,OFA," t! m) T0 F$ Y3 ?: A% H' ]
IAD,! h1 W) q/ n0 i1 n
IAD,O,
! T' V$ @* K# K  C8 `. t4 tIAE,
: l5 x5 \" U! Z5 b5 _I90,VED,C,RFA,OFA,2 E$ i6 a. E4 n3 |( S, o% i' L9 b( V
IAD,
, {# O, F/ R! c3 G" n- ]IAD,O,) n" y3 n# g5 x8 q0 d. X0 G3 |# x/ O
IAE,V05,C,RFA,OFA,6 f1 Q7 T- d" C3 n3 v
IAD,
6 L) H% q. c2 I7 }1 ~IAD,O,
& b) N5 t& d: u( Z+ }# @* ^3 }IAE,O,& _. t6 [: `, n5 q& N# S
e90,d2E,o00,
4 q8 B, U6 Y/ F+ N- A$ Oe91,d2F,d00,P3_K#! E3 s# v. W$ S# d
P3_K#
$ k% D, h  G$ f$ r
/ n( j: U3 U+ t1 E5 y0 o
IAD,VF3,C,RFA,OFA,
6 i6 p, {! j/ V4 r3 z7 `IAD,
! G: k$ c+ m3 p' |IAD,O,) X0 |6 R) s6 o
IAE,VF3,C,RFA,OFA,
5 K4 ~9 M* ~# f/ t6 eIAD,
' H' s' R! u1 J! s! t$ yIAD,O,
' y  D- E. S4 \7 i8 _7 e: g% F; yIAE,V20,C,K10,RFE,OFE,K08,; f' J; _) f+ i  G% S' `) T$ A: s9 O- J
IAD,
& \2 [' y- c9 Q9 g- q+ hIAD,O,
5 ^5 h  w- V: }0 f4 uIAE,V20,C,K10,RFE,OFE,K08,' A/ T) l9 d: }/ @# _
IAD,& H- q: q% ?$ b
IAD,O,
8 s1 C; `4 Z( E4 l4 a& w$ Q1 nIAE,V20,C,K10,RFE,OFE,K08,3 G4 I- Z+ A$ x& v- W) {6 w  `% L  Y
IAD,4 F8 @* r- W' n
IAD,O,& f3 Y. O" E! u
IAE,
4 ?2 X9 ~8 n. }* E* s9 k3 H7 LIAE,VF4,C,RFA,OFA,
, Y( p  p1 W" _. W8 K2 I* RIAD,. e2 E+ ]( D' \
IAD,O,- Y# s  v9 d2 K8 Q
IAE,VF4,C,RFA,OFA,# b! z# \; u# w" \9 g
IAD,, j2 `0 M* ~) Z  U9 |8 }: v" T4 J
IAD,O,6 z6 D8 l! W$ }* |
IAE,VF2,C,RFA,RAB,R41,OFA,, c9 q8 y6 E- n# L9 X' b
IAD,
& V5 b# k# @# eIAE,O,OAB,3 x) t, O/ d% I5 n
IAD,4 w) X% w8 D1 b
IAE,O,O41," R. O( g6 {4 b9 E& [6 h6 e0 U  S
IAD,. H4 Q& c; o0 s4 E7 O
IAE,O,VF2,C,RFA,RAB,R41,OFA,
4 j; f9 a( V% Z& z. sIAD,
- y: ^" k" l* g# ]/ l$ V  g2 xIAD,O,OAB,
2 p1 q4 x) L4 s; x" I+ I$ @: mIAE,O,O41,& S# k; l7 q5 }3 _% K0 L
IAD,/ N% m- c7 Q; p& A, Z
IAD,O,) w6 b3 _" W; Q# O( N" J& _
IAE,VF2,C,RFA,RAB,R41,OFA,8 H$ Q' k2 y  z0 P
IAD,6 ?7 |) g% g2 j, i( S9 k2 x) o8 v) `
IAD,O,OAB,
; x8 k5 J$ f- s3 c4 HIAE,O,O41,( O0 n" Z6 j' g$ a! t" Q
IAD,
, I$ U2 w* i# c+ dIAD,O,
' Z! K* S: z# K/ k% NIAE,
- ^6 _! |" O2 l: D$ @6 x9 U* rI90,VED,C,RFA,OFA,1 C* t4 Y" M# Q! H7 p
IAD,
' C( E9 b8 Z' tIAD,O,
3 [- n0 {! Z% a+ s7 ?IAE,V00,C,RFA,OFA,
. w0 ^7 D) q" Z% O! T- W, E0 kIAD,
3 s6 S5 z1 f7 Z4 |# t& n4 _IAD,O,
+ f! {% Y: v5 `# YIAE,
! a! x6 m+ P1 Z# Y+ b. O) KID1,DDD,
% q" r) C/ k! V& s- f; X1 H* [ID1,DDF,6 _" A$ k9 \$ f2 ~: i/ W# c
ID1,DDF,/ t  \5 c+ I& }
e22,oFA,
( U* d8 |0 Y- b6 Pe83,  @3 F* ^- Q. U# S, G# {
e83,, B9 r' b8 o. M; |& u: j( p! r
e83,
  a9 A! I( |% f0 C9 ~e83,
3 \: H) C) P- U& c' Se83,
& w1 M7 e4 A9 G: n/ ee83,1 @! O- n8 ~+ q- H% i/ H* w% V) M
e83,4 E' c- i$ ?0 N( H1 L' r
e83,  u% u" J6 o* e, {. W
e83,4 S$ X6 Z3 F" `9 E7 j# S: n
IAD,
5 S3 H! S5 |5 @8 YIA7,+ D; O' `3 r- G. p7 [
IAE,O,
0 ]. h: o- X) b2 x# ~  MIA8,
  ?0 C3 ^! L! ~$ O: A: v5 e9 q/ xI60,D44,/ B0 `4 ^  e- H! _+ f1 h9 d: z
IAD,  U: [) F2 T3 [: `0 s6 u
IA7,
3 r' p9 }; m, L( E8 B4 \/ E& cIAE,O,0 D$ F0 M3 N: _+ b. a* z/ s
IA8,VFF,C,RFA,OFA,RAA,OAA," v( x' E7 M7 u/ E
IAD,O,K20,' [' J  I% l: ^: ~( F4 T" D
IA7,* l! a, f% D' d# U5 w8 c
IAE,O,
5 n: W" O3 @& `+ b- k0 MIA8,  f$ t0 T. m: a
I60,D04,
  ~! D0 L% `% Z' x3 T6 `1 H( e# NIAD,
. z  w% Y4 n( |; |# ~IA7,
% B! f( O2 L% ^- L  ~) LIAE,O,
: T0 K% J" Z3 v3 N7 b  a% c' U, ~IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,* J- C# Y4 X" V3 f/ s# W
IAD,O,. o0 x; M. S9 |6 H7 a6 d+ D
IA7,
6 R$ o7 N: I" t  _  A: cIAE,O,
7 o  T8 j! s3 g. ~IA8,
5 \+ m0 z1 ?7 L7 FI60,D44,
1 w5 O) \4 o7 l5 e: CIAD,) q7 B  R( T$ u& G( {
IA7,
8 C. Y1 I, M, o5 m9 x9 cIAE,O,
$ `' d1 x8 R5 A4 ^2 [+ P4 Z+ GIA8,
+ r0 ^, k3 w- [; K& x. D, T( ^ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
4 O. Y7 A( Y( d" K( |& K3 IIAE,O,- T" ~) i  I/ J& k; }
IA8,
5 x5 T, }5 r* C& N2 s; x% NIAD,
  o$ z% y# E" WIA7,
0 ]+ Q; K% C% P: F/ bIAE,O,
2 b' P- [- m) D& I, NIA8,: I6 V( q- P& O
I60,D47,
/ S# d) M- j! x% r. I% L* t$ V& yIAD,
  ^+ J' q/ f4 gIA7,
7 ~/ v' g5 Z5 A; @IAE,O,
. N5 S9 l6 `9 z  ~1 I/ d7 T0 V. }IA8,/ E6 p4 k& _( D- P" t2 I, i
ID4,VFF,8 a1 N) N9 I  P) J8 o9 W* T$ D" n
e83,C,RFA,OFA,
9 `+ @; o7 d% v+ P3 s3 qe83,O,RAA,R00,OAA,O,O00,: \! \+ T. N$ j/ X2 d. O1 J( R
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
2 q9 O9 {) ^% ~! ]" eID4,VE8,O,C,RFA,OFA,
- A0 d7 z& h6 T* CID4,V00,O,C,RFA,OFA,1 ?* x+ N; E+ K$ J
ID4,VE6,O,C,RFA,OFA,
8 y5 ^, Y! \8 g% ?3 W0 Y# wID4,VE6,O,C,RFA,OFA,
8 M1 z' S' U  }3 W  r* M0 IID4,VE6,O,C,RFA,OFA,2 w* }1 s" Q2 Q! T
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,% s# g& G5 R# p& M! j
ID4,VE8,O,C,RFA,OFA,* h7 a/ e- N& Z) N! B! ]
ID4,V03,O,C,RFA,OFA,
. _5 N) l* ?! X, a7 i) w6 K! EID4,VF3,O,C,RFA,OFA,/ q3 A  a5 M5 q# H
ID4,VC8,O,C,RFA,OFA,: x$ x* J9 S0 e9 |* L( T2 d* n0 c( B
ID4,VF3,O,C,RFA,OFA,6 {( f$ y7 {6 R% b
ID4,V64,O,C,RFA,OFA,4 s, F$ Z1 u- @3 K5 W" U
ID4,VF3,O,C,RFA,OFA,8 o! ~/ @( I2 e1 b5 n' R3 x
ID4,V50,O,C,RFA,OFA,
' e, G/ M  Q! b3 W$ w8 z& ?' S2 o( kID4,VF2,O,C,RFA,R03,OFA,O,O03,4 d8 U7 K" J1 Y8 b
ID4,VF3,O,C,RFA,OFA,; I8 S  K) J; u4 ^2 q5 u
ID4,VC8,O,C,RFA,OFA,0 w  D% o2 H6 ?' [! A. I
ID4,VF3,O,C,RFA,OFA,- N4 m0 l' i5 J/ o, s0 {
ID4,VC8,O,C,RFA,OFA,! `% b8 M7 i$ O& l# z* G9 U
ID4,VF3,O,C,RFA,OFA,1 Q# i- @6 r1 L8 C; E; D. }! w
ID4,V50,O,C,RFA,OFA,4 W6 d1 Y1 \2 z  n8 {
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
0 k0 \4 S$ n8 A5 L$ @0 f2 O# K9 }ID4,VF3,O,C,RFA,OFA,7 y. p! \. ?* p* o! U2 r/ F
ID4,V64,O,C,RFA,OFA,0 t$ E8 n# M4 N: q' M
ID4,VE8,O,C,RFA,OFA,1 i) m% `( d$ Z5 w
ID4,V03,O,C,RFA,OFA,! I8 v# E$ c7 v6 o5 i
ID4,VF4,O,C,RFA,OFA,O,( G  z2 m% b& \  I2 E: i) n
e83,
: U2 K8 G  m  I% @9 b0 [! Ke83,  b3 n2 n/ _: w
e83,
; M( C! W1 V. O# G( b- ^* _e83,
: S& l7 z! p0 be83,
' l1 u) @: b+ n( \e83,
; h* S* K, [& e" @% i8 me83,
1 f& e4 [" C$ ~0 Z, R$ T9 ie83,: F; g: a4 d2 u9 U5 e
e83,
6 d/ Y. k$ ]. l6 Ee83,00,C8,2E,
0 L8 ]# L# s& U2 j: Y; ^; Z4 v# ye83,00,C8,2E,: |! w( Y, I( |+ C+ V9 I
e83,00,C8,2E,& H1 i/ U3 T! R8 G1 Z' U; [
e83,00,C8,2E,, A; V8 U9 K/ N  i4 u5 Z
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
+ \" N/ B# D8 O0 x7 A& D$ Le83,) Y5 s# ]0 m( b: ?2 i1 o" U- e. X

. u" R& z, @1 Y/ R! N* L. ]
! J6 Y0 f+ v( L4 ~: h5 z" c[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复0 X+ g* y; R; J4 G2 R" N& P: |
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
( C5 u5 ~( F" Q5 ]/ p) O      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!, v1 D$ F; O. G4 [: @+ \
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。' F# F; _" p2 B1 \/ ^6 D
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
4 G9 {- B& M" H( gBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
3 S" U" X; G) F2 X5 i, ]Device(EC0) {: i2 V3 a, ]4 _4 C9 b- b
Name(_HID, EISAID("PNP0C09"))
7 w, \/ X* D$ a9 T4 o7 N......9 k8 p& |# A6 }2 A
}% H, d( R& v  k$ z
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,) i( z8 T( b7 F- B& m
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)1 r, U6 H8 `, f6 L, t' c( U- K
2、    ) i- @9 y( M0 F' P4 u
Name(_CRS,ResourceTemplate(){           , ]2 x. Y2 Y5 j) R5 t
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84/ q! a( s0 t$ ]8 q. L" J
            IO(Decode16, 0x66, 0x66, 0, 1)
+ ]/ t7 A/ T% n+ H# D. v. L        })( C3 a$ p$ L9 y3 ~  i) u( m
3、接着就是! ~4 E" \$ r- h/ [
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7  B% I% |0 u% M) S& B7 g$ V+ N8 K
通过这个声明,OS知道EC和哪个GPE关联起来
, |8 L0 B0 o! ]- ~: p而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
6 s( d/ ?3 ]9 `- d2 v1 S( {EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
- c5 k( _6 g# K- b+ E- O而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
, m7 t/ L5 [( I' _  P9 P: u3、OK,看看linux是如何处理SCI中断的
* w( d0 c! q$ B( h& Gacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
. g, I) p& n6 Q! K  t" g  Bacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令); ]' O% s6 I) K6 @$ R
4、EC接到0x84查询命令之后,就把Q事件号传给OS4 e7 K* {6 ]- R9 r) e  ?0 y9 }
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
& J. M* U" w& W) p* g( V& S1 S你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
& Y  T; G) R3 r1 Q5 P有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。( ~3 e8 F4 J" z
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
* t/ T, C/ s$ _; kbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。+ f: u% X" h, f- q4 i
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 00:18 , Processed in 0.086111 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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