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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?4 p( B- h, {) I$ O' x7 H( I, V8 R0 B
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,! Q3 e9 Y( N/ Y# o, X
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。4 G6 w8 p$ i% W9 \3 w& V! c- Z- x
我们在操作系统下用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的命令
( X3 [. y( K: p- U1 T+ k5 s  R: a) N$ hD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check+ p8 e$ L5 N- o* I1 g
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
4 w' b2 W  ~# c! _1 ?, H0 A! V其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
1 @8 k6 Q/ Q9 D4 v8 x. s) p+ c  q
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,. }* N6 `3 o& g* T/ V9 C5 a
e83,
$ A) e; B$ t: i5 z) PIFE,# y* D( [5 e8 m, Z
e23,oFA,8 S+ \' J2 {. n
ID1,DDF,LPC RST
$ i: I/ G7 ^# ]: B5 @' {* \; tSwrong LPC RST
2 x" z) l! O; j  w6 E* jLPC_Reset_Flag=64
' l" \( t# j* \6 P3 t6 l! \, q
7 q* Z7 I& ^+ b2 L# _- O0 O
ID1,DDF,
! g1 |8 d0 ^% r& D# z) dIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
9 e& e6 D5 r- ~$ p, ?8 XID1,DDF,7 B  D6 x# z9 Y* P) ^
I90,VED,C,RFA,OFA,V01,C,RFA,% A1 J. \; A  `# ^5 Z/ C
ID1,DDF,O,OFA,O,
9 N/ F7 h: a- `6 n$ w- T1 d0 Re2A,>IDLE( l" |; d$ ?% i! g
oFA,<' d( R% K, C  D6 V' y2 D
e00,
, `, Q/ q3 O+ v5 I# |IAA,O55,O,
( v$ e% e1 o; l( e: kIAD,: F/ c  U4 a- Q" m9 y% }3 U  {8 Q
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,) Y; r  ^. z* i6 {$ ^- g& b' f. J- b
I60,O,D65,
' h" q7 b# ^1 K% e4 E& k! GI60,D6D,VF5,C,RFA,OFA,K20,
3 F$ O6 B) E3 h7 oIAD,% |$ E& D0 G: i% v
IAE,O,VF5,C,RFA,OFA,K20,4 ?6 o4 r& R, r# `1 v  z/ E' d3 e
IAD,- a( H: x: u* B) y# g. _
IAE,O,
& H2 X* B# f: mIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
: f2 s+ ~0 v2 h. D# B7 ^3 E% w9 k+ l2 dI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
; P9 i' j- z+ J0 v8 e/ X4 I5 jIAE,O,
* G3 O7 K) v" Q* O+ Y, Ze91,d2F,d00,' T5 T( k! Q  l  R; O4 m: W9 c
e10,d83,d2F,P3_K#% [% m9 ?# u* G+ M( G4 Q
P3_K#
) l! [) M8 Q) l' ?$ v

/ W% E, }; a% `( Q! ge23,oFA,# q; H5 G" ^8 n* x1 A
I90,VED,C,RFA,OFA,
, P$ U; Z8 d* m- ~" Q# H1 L- mIAD,4 Y0 ]! `: K3 c" V5 ^+ c: R1 F! @
IAD,O,
' W4 R. A6 |  n1 R, zIAE,V03,C,RFA,OFA,6 d$ i1 y5 C/ a
IAD,1 B! c1 y: v5 c# L3 i% v, y( C
IAD,O,
6 _7 s0 n0 }! I; z/ ~8 M; D( Z3 xIAE,
6 o. [7 w/ \3 U- P2 M* QI90,VED,C,RFA,OFA," q3 J; A+ ?/ l
IAD,
" \0 L8 H# ?: _& RIAD,O,9 W4 r, w' q+ O& F3 C# w- d) P
IAE,V05,C,RFA,OFA,! n* w' ^; {7 v$ u+ a" k! K
IAD,9 E% f. p8 z9 R( \9 I4 N, S& [
IAD,O,8 N6 Y: v8 m( ], V
IAE,O,9 g; v3 |3 D6 y- q4 s+ p
e90,d2E,o00,% W8 T% Y$ u2 N
e91,d2F,d00,P3_K#$ x7 H/ Q1 v% l0 I8 W) P
P3_K#
( K+ i& u) I$ B! |# V: j
1 i" X: r8 z  m' F
IAD,VF3,C,RFA,OFA,
& Q  Q  u3 Z% K; dIAD,7 c9 a9 G  |5 |% _& W; ^
IAD,O,0 t! e" B  b' s: b4 K
IAE,VF3,C,RFA,OFA,
: D1 r- }" q* u0 ^  J& ZIAD,% m5 r  R1 o# k$ f( h+ \
IAD,O,
6 G+ _7 F& Y8 e& [# W+ E5 s2 vIAE,V20,C,K10,RFE,OFE,K08,
3 u. J* y$ M8 H7 H/ B% FIAD,0 s# c# s3 G( a& w& d3 ^
IAD,O,2 p4 q6 I8 t1 c. J. Z* S
IAE,V20,C,K10,RFE,OFE,K08,* i4 F! ?, A# C9 `" q* _
IAD,, _. M# L* O- H/ B
IAD,O,3 m# E2 I5 \0 p2 D. ^$ I% c
IAE,V20,C,K10,RFE,OFE,K08,
, l5 W4 i& M, _  RIAD,
$ b6 W! p4 {* @  X! @# U! S* o& A/ lIAD,O,
1 U5 F! T$ c0 S0 X& V5 P! HIAE,
# `6 r, h: |3 \7 B  ?IAE,VF4,C,RFA,OFA,, r6 r0 `* ]( d& [
IAD,7 ^( {1 Y- Q* O: u' U: e4 K
IAD,O,, J+ R; j9 w1 E4 ?& b, K1 a+ j
IAE,VF4,C,RFA,OFA,6 d7 i$ h+ q) H8 f; T! P# q
IAD,. A" ]( f/ ?. m- ?5 h. y+ z
IAD,O,0 ^! j! v: O1 G% c9 e
IAE,VF2,C,RFA,RAB,R41,OFA,  [$ l1 g: g% M
IAD,
9 u3 X! W5 ^" {- xIAE,O,OAB,
: B  M5 o0 c0 c% C5 XIAD,
& V2 k1 `, d2 `& BIAE,O,O41,& [1 `% K& Z. w# T" V
IAD,
& N7 I  S3 ~2 GIAE,O,VF2,C,RFA,RAB,R41,OFA,
! b# J% v9 Q% z  o9 T8 `IAD,# y* T" U6 Q+ H! k1 h- e
IAD,O,OAB,
5 W- G/ H; X8 w1 TIAE,O,O41,& Y/ e9 w; F- }0 |2 [, l
IAD,2 p6 n" o. E* w/ J5 R* `( y, P
IAD,O,5 o" c6 A" D7 C7 l
IAE,VF2,C,RFA,RAB,R41,OFA,
2 h2 s/ T0 H) R0 g. GIAD,. R) w9 n1 I# o5 T9 g% }6 k" b8 R, n
IAD,O,OAB,3 u7 b, ?5 ]& c
IAE,O,O41,
9 ^4 E, T4 U1 G6 |# L7 WIAD,
7 F  i& X; a1 ^& X% `IAD,O,
/ |" L) k' J- EIAE,
2 Y; p3 x/ o5 M7 e- [I90,VED,C,RFA,OFA,3 D) K7 H/ N# h' k" @' b6 s8 _
IAD,6 n  ?4 @5 }- j, d
IAD,O,
/ C4 N  @# ^9 ]$ R0 M( gIAE,V00,C,RFA,OFA,! O( C: R! |0 \* b. L( x
IAD,- E8 C# ]3 o: o1 y* h
IAD,O,
% c( l; G: a4 k) t* e. LIAE,
* \+ ~4 a& u+ Z; Z5 h/ jID1,DDD,. Z  o! G8 m5 t
ID1,DDF,
9 K! P3 P, _4 N, _ID1,DDF,
7 A# g* H* r; }4 z" ke22,oFA,
+ B" U8 K& k5 D, ^e83,
! k5 q/ Y& S1 W2 b0 C( ]e83,
+ {( c( J$ J- A/ Ke83,+ D4 C1 y' w$ ?9 L5 F, n. h8 ]
e83,( J8 b# U  ~7 G% T4 h# \( c" p
e83,3 \5 G* q1 x2 ~4 X. k
e83," A, p" k8 f/ ~: E" V+ N. M
e83,: _1 i3 a0 N9 ?- n6 z/ Y
e83,! |& Q6 J  h4 C$ s
e83,
% d( u$ t4 p+ UIAD,5 w( w" {2 |8 I8 M6 F
IA7,/ z; |! a  F1 v/ s
IAE,O,
, T! @- i( P' h- [3 e4 e& r3 BIA8,
9 P6 \8 E. K) G/ Q! c7 SI60,D44,8 F4 J; U: S4 ]# v
IAD,# R: d9 l  A; n, Y: U2 m- K
IA7,
5 r! C1 O/ ^& ?! aIAE,O,
! X4 [0 k# D" sIA8,VFF,C,RFA,OFA,RAA,OAA,7 L2 ^. J" [7 |4 w
IAD,O,K20,# O& g- Z4 Q: O6 i  A/ n( w8 P# L- I
IA7,
  O0 _5 S/ M, yIAE,O,5 ]% R6 ~7 o: I$ n; P4 }
IA8,
" q+ @7 T, S2 ]1 ~# `% W6 ~# sI60,D04,0 T8 ~: I- q! Y0 z
IAD,
8 `6 z' T! |/ L% \: i9 n# rIA7,' _7 b1 k- M0 F. d
IAE,O,; }: o' ^( E' D
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
3 ?: p! G8 h: P4 Z# E5 z5 QIAD,O,0 X$ G! M8 j6 L, P! F5 t2 j
IA7,6 `5 s% a0 \: F+ j
IAE,O,0 r, _$ F$ K8 q% x7 Y
IA8,
* o1 P7 o) J* ?5 X6 ~I60,D44,7 L6 y. I% f2 F) K& W6 B
IAD,
7 H0 ~  r" _2 w! Q. bIA7,4 Y( P. W# A/ Y0 x% j: L. [9 j
IAE,O,
1 Z% Y3 I6 `- m/ d! Q. ]5 @IA8,
) q; T: R! C1 u" G9 ^7 |) }ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
  Z2 x- ?1 O0 R2 W+ vIAE,O,
$ e; U8 I. l+ R) U: BIA8,2 a/ y4 M, d! a. U% j) e; ]% z3 b# |
IAD,% l- L$ @  i0 E2 D
IA7,0 J/ {- M. H% V+ e
IAE,O,
. k7 z/ F- j5 x$ ^3 F) h/ CIA8,6 z' O0 c. b* {+ x
I60,D47,# {; O7 k& g, E/ L
IAD,
# \' ]8 O: p7 MIA7,; |, j( ^, c( B
IAE,O,0 c* s; g, i; R
IA8,
+ J! {5 S& w4 T: f) KID4,VFF,
% @* y) B0 D0 o8 Ke83,C,RFA,OFA,
$ Q. {+ I1 ]. [% Ee83,O,RAA,R00,OAA,O,O00,3 I, q4 r; |2 O0 O! C1 i
ID4,VF2,O,C,RFA,R00,OFA,O,O00,8 z- U6 A+ o6 o) D5 E% T
ID4,VE8,O,C,RFA,OFA,
5 ]1 V' g4 Q9 g" o! H' d6 pID4,V00,O,C,RFA,OFA,
( }& `6 n. d, r% G$ o8 F, MID4,VE6,O,C,RFA,OFA,
+ F- {# a7 O; R# Y7 L" u2 z* }  ]ID4,VE6,O,C,RFA,OFA,
* T+ y# a! L7 j, }+ ?* `( h: ~+ P# QID4,VE6,O,C,RFA,OFA,
* N2 w8 H% k6 D/ R/ S4 k/ XID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,$ Y5 k" N6 R; s; T7 F' L
ID4,VE8,O,C,RFA,OFA,
; F+ ]- s% w2 }5 {7 w( dID4,V03,O,C,RFA,OFA,
- p4 P0 a* @+ d( Z1 W% r* TID4,VF3,O,C,RFA,OFA,# T* r/ D% y: o* y9 A) r
ID4,VC8,O,C,RFA,OFA,. j/ d% s' d" j3 H3 o; p" \
ID4,VF3,O,C,RFA,OFA,
" L0 j( x3 f  L8 J- Q7 m. z( ^ID4,V64,O,C,RFA,OFA,' i" o. G. @3 t5 K4 _8 i/ U
ID4,VF3,O,C,RFA,OFA,$ a- B  M2 @6 V; Q. B- V2 \1 [
ID4,V50,O,C,RFA,OFA,' u+ l) R, r$ {9 h8 L
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
9 ]$ L! t! a) m0 f. pID4,VF3,O,C,RFA,OFA,# r7 l% `- J" Q
ID4,VC8,O,C,RFA,OFA,
# ?4 l' g4 \% T9 \5 n) W4 uID4,VF3,O,C,RFA,OFA,
6 [! g1 N$ J* Y, @ID4,VC8,O,C,RFA,OFA,9 l4 @. e6 w7 N  N: }! ]
ID4,VF3,O,C,RFA,OFA,
4 Y4 ~# k  T+ w' tID4,V50,O,C,RFA,OFA,
7 K7 H/ `: d! PID4,VF2,O,C,RFA,R03,OFA,O,O03,) j$ m# q# `6 Q; S
ID4,VF3,O,C,RFA,OFA,7 K0 H% |; k+ \, z8 i) [  G( J
ID4,V64,O,C,RFA,OFA,
' D1 R+ }( [: J( t: BID4,VE8,O,C,RFA,OFA,  X7 E7 D4 Z) ~3 A" Q+ D' H# m
ID4,V03,O,C,RFA,OFA,
' I. b- P7 {2 A1 Q) z# k/ n& jID4,VF4,O,C,RFA,OFA,O,% @* k& H: w  a; g, v- g( H
e83,% J1 x: x7 e' k6 w9 X# @
e83,
# F- o  C# I, U- q- [7 [e83,
1 b" J! p: V) N2 a7 E7 me83,  I+ j, i2 \# O( ^; z& n) d
e83,3 l1 r# u- p0 f% c* V' A8 e
e83,
1 G4 N# g& L! ^5 De83,: v: Q8 G% T, Y/ }
e83,2 h9 L/ V8 [0 t* y6 c
e83,6 ^( v' ]) B2 u: h# }+ w% O- m
e83,00,C8,2E,
7 B1 S2 ~6 R/ p7 s" Xe83,00,C8,2E,
9 q' X. a# Y$ n/ V+ c2 Me83,00,C8,2E,; a0 R8 |! y0 Z3 L5 l0 }7 m
e83,00,C8,2E,
: |; [* P* K( S: t; o: Ue83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,' |- C, ?% m# m1 w: s& I
e83,. F1 C5 L8 u8 [& l6 @% K- M

8 W! }# u% F9 `1 ]! W
1 H% o1 \& m3 w, W, k: d: u[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
5 M$ W$ |& z- j0 Z9 ]8 W     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。8 A- O+ }" C0 B6 w/ _0 [" e
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!; U% R2 q( W. g% P; g* ^8 L
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。5 I$ ?& H/ K, N1 \8 o/ W2 `
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
3 c. h8 K  V* e- _/ B! x- xBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
. E! F+ k5 d- U2 R  B  UDevice(EC0) {' {/ L9 B  S' _/ K% R! d- p
Name(_HID, EISAID("PNP0C09"))' S5 I" e1 V# |( Z1 \7 u8 R
......( V# B- G, m3 L" |; I  W
}2 L- [. d5 i+ \. ?# g% k! ^& |7 Y
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
% V; J3 I0 U5 t) s就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)' ?" @) C. s$ R; a& U
2、    ) M5 h1 d5 ?0 Q% u
Name(_CRS,ResourceTemplate(){           7 Z' q- _# Y( q- L
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
7 m% C/ R3 U  u/ @. V+ n2 ~: Y            IO(Decode16, 0x66, 0x66, 0, 1)4 L- n( K) W8 r2 ^: p5 T# Q& f7 @5 P% H
        })& I0 `. Y( k+ A# ?/ ^4 k0 ~6 z
3、接着就是3 Z' u9 ^3 C8 a' D% r
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
+ F" O3 n! g- O* Q" l通过这个声明,OS知道EC和哪个GPE关联起来
" j) N" @) Y/ {+ N6 x5 U; q' w2 H而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
( W2 O$ {$ ^: Z7 Y9 a1 J6 PEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
6 `, O  W9 ~4 m7 d而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
( |2 L0 r- a. |% u+ t' F3、OK,看看linux是如何处理SCI中断的
) w. o3 P: }) G; q1 e+ h0 Uacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
+ I. w6 j/ q# Z2 V! zacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
2 C) p$ O% l* D7 y. s4、EC接到0x84查询命令之后,就把Q事件号传给OS
) U( C5 D8 N6 a$ w* e! z2 |& aOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分! r! W$ K6 e3 p( P
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
8 P3 G. [6 s, [有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
' {$ I( {# u1 `/ Eqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
8 U% b1 ~2 y/ e, p8 Q. _bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。  W$ M( X' r; S: e' C! ]
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 13:39 , Processed in 0.043787 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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