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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?/ k* v, r' T7 t/ \* ~4 o
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,$ Q* R, _- ~7 J& o0 X
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。( P" j) _* d+ u: v5 f9 M" j7 C( j
我们在操作系统下用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的命令
# w5 c1 Q7 p& G6 Y' K* m5 H  bD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
$ r' u- ?0 N5 i0 c) g0 V这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
2 U/ J0 O, Q% u' h5 j; L其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。/ V2 t; ?6 X% C, e! N. C

% ~4 `/ h/ m' o, p# B- B. g% \VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,0 z% |4 n# u6 ~! d/ ?
e83,. I0 f0 u. R& q3 D+ ?2 s. V
IFE,' \. \% Q' F3 e; u! N, ]
e23,oFA,
) W) ]6 h' W3 O# y9 k8 o; E4 kID1,DDF,LPC RST1 y' I6 {  L( _% V
Swrong LPC RST4 g' f* s! i! f7 L3 O( K4 h( C1 B
LPC_Reset_Flag=64

! @4 Z: N% y; e
7 {, T2 G" P2 h/ ^5 o9 jID1,DDF,
% T* [' c. M$ L! eIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,% P0 B4 V# d6 Z0 |* K3 T
ID1,DDF,, r7 L' m' g  C8 j; S
I90,VED,C,RFA,OFA,V01,C,RFA,& P3 ?( J" E! R* _% A
ID1,DDF,O,OFA,O,
# U7 A! Z. d. U! [e2A,>IDLE4 O% v$ R: b; l5 ^' R% ?. v
oFA,<
- J& b# H" p) R, O4 ne00,  ?" A4 V. A" J4 C4 G  `6 E
IAA,O55,O,+ F2 o' \9 A4 e* `3 ?
IAD,
5 r2 ~( `, `; [  WID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
2 B+ h3 M# V. W  R# \' [" GI60,O,D65,  c) Z, ^/ w! t$ {/ l- _9 F7 @
I60,D6D,VF5,C,RFA,OFA,K20,
$ Z) R' D; ?9 U4 p0 ^6 gIAD,
+ k2 |6 _2 u: ]" B* t1 \IAE,O,VF5,C,RFA,OFA,K20,/ W( N- N' c  W: P9 i
IAD,
9 T5 F( s4 m% x0 KIAE,O,0 F, y1 _7 Q! a# |4 I( p
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,% c, @9 d- l" J6 k' U% ~6 a
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
6 x# Y/ q0 q  MIAE,O,- O5 k' M) q* I/ R0 u& n
e91,d2F,d00,
8 O# I/ H& [4 ge10,d83,d2F,P3_K#
+ `1 d" n% h5 }1 Z: j/ wP3_K#

$ C" v- N8 C+ T! f4 e# F6 A! L' ?: Y: p  b. U
e23,oFA,
0 I1 ~/ n8 j+ l. q0 yI90,VED,C,RFA,OFA,
1 o; M- r! n7 PIAD," {2 \9 L! S* E. A% V; y8 g
IAD,O,$ q! H# I+ ~  q$ |
IAE,V03,C,RFA,OFA,
, p" Q- U: z1 W* K/ ~5 p) s* qIAD,
  b! k6 ?8 ~; d7 p  k) F5 ~IAD,O,
1 o/ I9 k1 H+ z7 |( YIAE,. z. ]9 M, I+ C1 z. U
I90,VED,C,RFA,OFA,2 Y) `/ j9 ^) \' j* l; E! C
IAD,5 c9 z- r! ?5 M- i7 i7 ], p- S& {
IAD,O,
# f: i: a& {; n: l' D8 r; xIAE,V05,C,RFA,OFA,
9 e" x, @% _: \7 TIAD,
/ B1 f; v9 {8 tIAD,O,
, {7 }' X" F3 ZIAE,O," e; J! H3 i5 X0 w& R
e90,d2E,o00,
7 [  w) c& n/ y8 u# i+ @1 |e91,d2F,d00,P3_K#+ ~2 U' b8 H4 @5 p0 e+ N
P3_K#
# k+ J9 h2 c* C' I+ ^, i9 I0 `
% X6 a  T+ X* W6 D. G3 R4 J
IAD,VF3,C,RFA,OFA,
/ E# r4 O. H" J4 Q+ d) N( FIAD,- v# d, U. R2 Z/ u. X: w* {4 D. i4 l
IAD,O,
1 n+ t& _( q9 s  q% B* O6 iIAE,VF3,C,RFA,OFA,
  p! g; S. n, A8 f; Y: pIAD,
7 q: ^. S0 H1 s' ]# u) Q1 y7 }IAD,O,% a. a2 N$ W! {4 v
IAE,V20,C,K10,RFE,OFE,K08,- }. c. ]* a; P0 D0 T
IAD,- b, @: g; f0 m+ L. p, U
IAD,O,
' v$ w: E- W* v* c7 I9 o9 t; B5 TIAE,V20,C,K10,RFE,OFE,K08,; }, n8 E- g. f) Z$ q" t
IAD,
+ n; M5 H2 ]3 A3 H% NIAD,O,0 ^# J0 i2 v  ^9 S: O
IAE,V20,C,K10,RFE,OFE,K08,
3 w* Q! k4 \5 V) B& Q" C5 f( n4 ]IAD,
+ h" M; |) P. [: fIAD,O,# e2 |2 [: \* {; a0 ^
IAE," d. D0 V3 ^, Q6 a' S
IAE,VF4,C,RFA,OFA,; w3 S4 P8 |3 Z2 q
IAD,
3 M6 Z. w! z7 r# O- _9 xIAD,O,8 p6 ?; {* v& t. m" M
IAE,VF4,C,RFA,OFA,
2 C. b7 O0 d" }& v$ eIAD,
8 d& l* A5 e2 W, K! mIAD,O,
3 S& x1 b' C8 tIAE,VF2,C,RFA,RAB,R41,OFA,% r0 {2 s# F$ V5 y6 k2 b& C& E  p# m
IAD,
' q' F! b: Z' [1 |( [" CIAE,O,OAB,- K" E8 b+ o  B
IAD,; w" b: b% H. T* B7 s
IAE,O,O41,
9 [& Y; b* k) l* q0 k2 ?IAD,
, @4 s5 l# [. Y! d6 `" f# yIAE,O,VF2,C,RFA,RAB,R41,OFA,4 S5 x; W! ~' P
IAD,' L7 c* l0 f  P
IAD,O,OAB,3 F( ~0 |. [) C/ p- \! s% S  d
IAE,O,O41,
; r% X) `6 F' Q! fIAD,5 S" K" N  `: G# V( l1 y9 ]
IAD,O," L1 `2 D+ E8 P
IAE,VF2,C,RFA,RAB,R41,OFA,
8 w$ N& o; y9 o# e0 [! F' x. NIAD,
2 ?2 M$ ^3 C' e) VIAD,O,OAB,
+ X: q$ M7 W' _2 D$ DIAE,O,O41,0 H/ B& k" ^) O
IAD,8 z8 D/ s7 Z9 q8 `% q
IAD,O,: P$ E  u4 t+ l7 G. K$ U" ^
IAE,( G/ Z; z+ R# o0 [8 K; C$ ?$ }
I90,VED,C,RFA,OFA,2 G- G) ]" o0 Z* `
IAD,
% A! _( D$ o2 I8 }' w3 L$ [IAD,O,3 u) E+ f; [; M/ o
IAE,V00,C,RFA,OFA,: d. ^1 a8 k* `# c% p
IAD,
+ A& {/ j3 ?; ~1 F8 r! T) E9 g& XIAD,O,/ B  L9 T" @1 x% W; ^1 `: I
IAE,( t  W$ U1 _6 j$ e) o* E
ID1,DDD,
  r5 [* n5 v' c/ j: I! H' nID1,DDF,
; g) |1 P/ n8 [" Z2 g) ?ID1,DDF,4 ?, D9 V; S4 p- I
e22,oFA,
0 d' d4 @  [$ |e83,
" [8 D, X( ^3 s3 oe83,
5 _. n4 v8 k. ge83,8 @/ j: L( A- \. r. |/ g" E
e83,5 {# `; d: @  d0 v( E* h
e83,
, w2 Z* R! y1 s- I! ]" m0 re83,
1 s9 x1 f2 ^, j9 R" de83,
$ R# X% K8 X) @) ee83,
7 B( J6 u# U/ j" E) [+ De83,) u6 T: R8 w  r& ^6 O$ b& p0 i2 h
IAD,
- g" W1 S: I9 y8 i8 A% aIA7,1 J: }- Z$ D& V0 O
IAE,O,
1 F- T9 D- ^1 l4 pIA8,
( R6 |8 b. U9 e8 r* X' e, b0 cI60,D44,- @7 Y; o6 q" d! M/ q% g6 p
IAD,  a, @! s% O2 j
IA7,3 E% e! V; r1 e6 ?" |
IAE,O,) f- B1 Q9 d& b2 p! D8 }7 w
IA8,VFF,C,RFA,OFA,RAA,OAA,
! S, S6 @, {1 T; q' L* Z  ~IAD,O,K20,
' d1 S: E% F6 dIA7,+ p5 t. r! w6 {5 C
IAE,O,+ Z; O" Q% S; l
IA8,( O- h6 j: c% M& m' G# ]
I60,D04,0 V3 g* o- l5 l& }
IAD,
, W4 A5 j1 H( GIA7,
: b1 J7 C9 b1 {IAE,O,
7 J5 J* T, ?. Q. g1 QIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
% B( C$ w7 L2 @6 t/ ]7 n( VIAD,O,- {2 p6 \& B( ~5 Y9 Y
IA7,
) _3 D7 ?% K; }3 S  ~6 kIAE,O,( M% R3 `4 d1 @- z9 E
IA8,
7 Z1 _. |: G* L3 V1 Z8 W2 h# B: JI60,D44,
. x' M! {; \' q1 n2 ~" nIAD,3 O! O& b( t$ I; m) P( L
IA7,. v% Z* G( C2 L
IAE,O,6 j0 t1 X6 E6 y8 O: ~, x% X/ L
IA8,2 |% \0 u, j2 Y' s  l8 `
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
& ^# \2 T6 }+ P0 a, A0 @0 @& TIAE,O,
. B: R* w% u9 C, l' g0 }9 x! a; PIA8," x* J; T% x* Z. _2 |
IAD,
( [4 `2 e" p5 \IA7,
( u0 z1 j' e! L% KIAE,O,
% E, c5 M4 G# _IA8,
* j' A: o8 L( U' }I60,D47,. C+ K  K# j* M4 W7 y. R; n
IAD,
% k' t8 n  r" c" D4 H4 w6 x. mIA7,/ z" p( T1 H5 t  n% N8 I, ^
IAE,O,
0 o1 u2 l1 D( u' H' sIA8,
+ c$ l$ |# Z- K9 k3 ?ID4,VFF,: g! h0 t+ _- d. \: ]
e83,C,RFA,OFA,# c& x- m) n% _$ Q
e83,O,RAA,R00,OAA,O,O00,( L$ }6 J# v6 T: P" _; U
ID4,VF2,O,C,RFA,R00,OFA,O,O00,' F& A4 a0 S2 f3 r
ID4,VE8,O,C,RFA,OFA,
+ g9 i8 W0 Z" m9 k0 j- w. H) dID4,V00,O,C,RFA,OFA,1 I' x" y" a3 u$ V
ID4,VE6,O,C,RFA,OFA,9 \6 n  n' u9 B0 N
ID4,VE6,O,C,RFA,OFA,
' p% ^; ^! ^3 cID4,VE6,O,C,RFA,OFA,6 u& m" X% U( _6 O9 k/ W0 {1 v
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,! K4 ]! `$ \3 ^& z! a; L$ b; s2 t  m
ID4,VE8,O,C,RFA,OFA,7 ^+ }  T, B: o" d$ p
ID4,V03,O,C,RFA,OFA,
- R4 H. O& [8 m# [ID4,VF3,O,C,RFA,OFA,
0 A+ Y& k! Q" y# H& EID4,VC8,O,C,RFA,OFA,
: J" X$ a, y8 d- g: [ID4,VF3,O,C,RFA,OFA,
. S: v. E4 g7 e% I5 AID4,V64,O,C,RFA,OFA,
( y: p2 p& t( UID4,VF3,O,C,RFA,OFA,
( V8 T& ]& a" NID4,V50,O,C,RFA,OFA,
( M) F5 i, Z/ E+ n6 E' ?ID4,VF2,O,C,RFA,R03,OFA,O,O03,- {7 C, `- C: Y: p7 H0 Y
ID4,VF3,O,C,RFA,OFA,1 K' j5 H  J) T& ~% O
ID4,VC8,O,C,RFA,OFA,3 ~& v) g3 n6 C0 S
ID4,VF3,O,C,RFA,OFA,% n; F6 Q& V+ o+ n6 [4 c
ID4,VC8,O,C,RFA,OFA,9 _; v1 r1 V# Y2 F( G) e
ID4,VF3,O,C,RFA,OFA,2 s5 x+ k# Z5 ^; e4 a
ID4,V50,O,C,RFA,OFA,5 d8 R3 e9 t9 v
ID4,VF2,O,C,RFA,R03,OFA,O,O03,/ e: \+ x7 P' C
ID4,VF3,O,C,RFA,OFA,
8 x  F" H. R5 n% g+ l& qID4,V64,O,C,RFA,OFA,
( V! w/ M: `4 o3 ~9 jID4,VE8,O,C,RFA,OFA,
$ s2 e4 x) w4 P1 V) T3 gID4,V03,O,C,RFA,OFA,
3 Y$ ]1 [) C7 R# c  _ID4,VF4,O,C,RFA,OFA,O,  d  p$ B4 \% H2 j( I$ H
e83,
4 @& V  A3 m- G9 D/ Je83,
% u( q3 Z- Q  c# H2 ~; {8 ne83,9 o- f$ B. D% P; \
e83,
7 J% Z- U4 l; c  n7 c6 L$ he83,' L: ]- d5 W( _1 ^" V" u) t/ R' ^  X
e83,
* g! v" C; G6 \' \( g1 P& Ge83,
; x! H) r0 g1 f9 ?; }0 r; Ce83,0 U( v8 P' @& Y0 D) ~
e83,- p. m8 X; T" u; _: o3 T' d. E
e83,00,C8,2E,$ a  R9 N% p& @: m; Y
e83,00,C8,2E,! u$ b- C% ^+ @8 t" G
e83,00,C8,2E,& `% s) i; v3 P/ n+ m
e83,00,C8,2E,- \! b& `% d+ m7 ~1 u6 M0 x
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,& t: k: W" q1 Z- Q4 `2 c
e83,
: I5 i& R0 x" y' H
* H% G' n- S1 B( E! e9 l

) a% G% `$ x$ p3 \$ H, P[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。& `9 @1 @2 g- f7 C
Device(EC0) {
4 h( b" \# f" ^3 s% W( uName(_HID, EISAID("PNP0C09")): h) n6 e1 ]2 i
......
, l4 N# ?, D* R8 b* O}
$ o9 C0 M% d8 H% n; M( e0 W# DPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
4 v+ G3 |  e2 ^6 g7 F. i就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等); ^- T; ]2 Y) ~" @
2、   
% ?# G! W8 ^4 V/ O+ m4 i& GName(_CRS,ResourceTemplate(){           
2 V% l8 r6 G: R; M) R& u        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
, t' c: Z7 L& v  L! U4 ^- T9 m0 G            IO(Decode16, 0x66, 0x66, 0, 1)
& c, Z6 O: w2 k  g) e' ^0 S( B1 L        })3 V. A1 N$ l1 b) D9 Q
3、接着就是
; }$ P3 x4 L# m. j) L( W9 M) PName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7, i+ j0 c' A& w$ T
通过这个声明,OS知道EC和哪个GPE关联起来
- b$ {$ J/ s0 Y0 I7 y8 W而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来) P% V# Y; K. N7 [1 c$ D3 m
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。& |$ a( z# y& Z0 W* p0 v2 ~
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
6 A: z3 N- q$ I1 C4 n' u7 @( m3、OK,看看linux是如何处理SCI中断的# O4 ?0 ^. ~2 O5 y; v: ~9 M. p7 p
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute# T1 w! E6 A6 g) B
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
; o% K& ^2 d0 X7 A4、EC接到0x84查询命令之后,就把Q事件号传给OS
0 W5 \& F& }( p  jOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
" k0 u9 u" }% x你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了, g8 m6 q5 P) h& K
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
8 Q* w) p' s; d, `. J$ qqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm7 l& {8 h8 m, _& u
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。* s) f: Z4 L$ L, V& v
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 05:56 , Processed in 0.094558 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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