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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
, M3 B8 h1 w- _+ z) K' r看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,6 u" ^/ x: l1 E! q% b
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。; |+ N( n! T; i7 A1 D0 v+ M
我们在操作系统下用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的命令& v/ x8 E* k: Y0 B
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check, O- _! z! G4 K! S6 Y
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析9 O5 h6 P! D2 ]& `5 ^( x- N
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
; I+ B6 Z0 o3 |+ _" e6 d
/ p, f- ]& f: K3 I- XVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
' M0 r3 P8 @7 N8 h* ce83,- B4 Y/ S! i. j$ P* X8 {
IFE,2 H/ N2 Z  s, {# N6 E1 X- A$ c/ |- x
e23,oFA,
1 ?: [3 f+ e/ v4 a0 z5 L4 l3 ^ID1,DDF,LPC RST! \. X. ~( v7 H1 Q3 l- o( \* C
Swrong LPC RST; _; \, Z) v2 r1 x
LPC_Reset_Flag=64

% u3 T/ ]2 o1 s4 K9 X- H4 o- N7 [& }  z, ?
ID1,DDF,& E% \6 V5 O2 g7 y
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
  `3 F' B% N* p2 p' }% \# JID1,DDF,
' h7 M. E9 I8 i! l$ f+ uI90,VED,C,RFA,OFA,V01,C,RFA,- Q& H9 [3 {4 A+ V
ID1,DDF,O,OFA,O,
/ Y6 x! B3 h  W  d8 t2 ve2A,>IDLE
; g& n0 J# W9 DoFA,<
  Z( \/ x' q/ W% r' De00,
1 ]1 V* ?+ S( t7 e7 v# HIAA,O55,O," e, D0 Q' L7 m/ V, U
IAD,0 p  N1 Z4 t4 w9 s& F
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,! `  u! }5 V9 u+ M4 b/ E2 W8 ^/ a
I60,O,D65,1 k3 ?- u/ K0 I: {& M) u" K6 l
I60,D6D,VF5,C,RFA,OFA,K20,; I- }4 y0 u% p8 R4 Y$ w
IAD,  l) K3 j. V2 q% x5 I
IAE,O,VF5,C,RFA,OFA,K20," i' {& J7 v0 a3 b. F
IAD,
. V* T) o; U& J) m0 IIAE,O,( w5 z0 j% L( J* n3 |* g
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
8 h& g$ |9 q3 m; ?7 y" \0 Z: ~I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
. D, g; q/ v: J1 A) g$ UIAE,O,
% }6 b' |: U; v$ T( A) pe91,d2F,d00,9 Y1 y+ E; B4 E; T# ]. x
e10,d83,d2F,P3_K#
6 a! T" L. W/ ^P3_K#
* ~8 M2 l( ^2 a
3 j% l! @- m6 i$ Z. o
e23,oFA," ^; [' r9 }2 n- [7 C
I90,VED,C,RFA,OFA,/ I% R7 j3 Y9 v( C; C2 x7 ]$ f
IAD,+ M* w& k& B1 ~9 h0 W. k  N
IAD,O,
$ e7 N- ]- j% E$ t( m" t  B: U- }IAE,V03,C,RFA,OFA,9 l* x2 c8 u+ K2 Z4 g
IAD,
# Z, D0 L9 }! j; ?+ a  fIAD,O,7 K' a$ b" ~" P/ T3 I! X- C2 u( ]
IAE,
, G2 f. ~$ N: }8 {" q) X9 m9 z% {* kI90,VED,C,RFA,OFA,* Q, [; X5 v- a" V% m
IAD,
2 s) x. a6 \5 l- l' mIAD,O,1 w' G0 Q0 x$ ^: \6 j
IAE,V05,C,RFA,OFA,
0 v  W# T8 L5 s2 \1 X5 l9 GIAD,
# p& R+ z8 v8 ^- O6 i* v; e! i1 p$ M( |IAD,O,
  t2 I7 G) `# p  q( `4 T: kIAE,O,
3 u1 G0 S& G. _1 B) _3 ^e90,d2E,o00,) p  X. \3 C; z$ r6 y' ?
e91,d2F,d00,P3_K#
" |; P) n! l9 B( i/ jP3_K#
5 r* q8 F0 U. z' G- b- D9 z6 D

  O+ L) y1 t, Z; {+ |1 _IAD,VF3,C,RFA,OFA,2 {" K" z2 m% E6 W( J& W2 e
IAD,4 c4 m. U, _4 H; I! \
IAD,O,+ U' |% G& ?' z8 A( G- D
IAE,VF3,C,RFA,OFA,
* a9 M9 \; N3 J- m+ i! n1 a: YIAD,& q% [  H( _7 Z
IAD,O,/ z/ a1 n( W, J/ ?
IAE,V20,C,K10,RFE,OFE,K08," j( W! {( ^9 K
IAD,* k8 r* i) R% O1 ^% X4 f8 T* K# L! ]% A
IAD,O,+ _3 S5 B) r( G* T0 X/ a$ z: f
IAE,V20,C,K10,RFE,OFE,K08,
4 }/ e4 C0 l4 |, C4 a  l2 I3 ]0 wIAD,
2 M# B' d* P. }7 `5 xIAD,O,/ E  v3 t; L  v/ ]4 G2 @3 {
IAE,V20,C,K10,RFE,OFE,K08,
5 u6 Y5 B0 W$ Y" `; JIAD," h% t  S9 w3 ?+ Z' W8 y
IAD,O,
: u3 ?$ ]4 U8 O4 V* bIAE,
' N1 l( P$ G' N, V% S; L0 Y# KIAE,VF4,C,RFA,OFA,
2 F: K9 M3 h- @$ Y, i* zIAD,
! Q5 C3 W0 f: [4 Q# S4 dIAD,O,9 L$ m; H7 _0 ?  P( H$ Z' i3 U/ x
IAE,VF4,C,RFA,OFA,9 j9 V7 u5 u' v. u: r* \' b6 f
IAD,) P6 N# ~4 B# X. E/ w1 M
IAD,O,% }; q5 v- p7 R: x+ [- j
IAE,VF2,C,RFA,RAB,R41,OFA,
" P" m6 m6 o( ]' U$ cIAD,
1 i; ~7 u4 n' `4 m4 B. J$ ~' z% U* s! qIAE,O,OAB,8 ~' r. x  ?! i! e
IAD,0 [$ A% S/ J" @3 ]+ o- [$ Y1 d
IAE,O,O41,( J1 A: h9 I; ]' \! p* W6 m0 K
IAD,
$ V# G9 y" H/ b  mIAE,O,VF2,C,RFA,RAB,R41,OFA,- E, q  a- \6 n! p; H
IAD,  y2 U8 x9 f) |7 E. t- Y
IAD,O,OAB,
% W- h% u' {8 p) L( vIAE,O,O41,
# w/ G1 U$ r0 d& U  \/ d, C) cIAD,
6 [; u" G$ A/ s* U6 @IAD,O,9 C. G' F" l# W( A& y: w; |% W
IAE,VF2,C,RFA,RAB,R41,OFA,
1 I1 X  o! O8 z/ h6 d! TIAD,
8 Z8 v/ x7 h( c; @. CIAD,O,OAB,
! D4 t( u( J- GIAE,O,O41,
# `( F0 u& k% d: x" ~$ A) h( dIAD,
7 Y" o6 P0 D& x/ W$ h! h( u1 P  {* ~# s, NIAD,O,
" i1 u! U4 M/ A% Q2 @, QIAE,$ Z& Y  F# N5 V) B& K
I90,VED,C,RFA,OFA,
* F) {9 X0 }% e+ ]* ]IAD,
: \$ M3 d' r$ WIAD,O,8 K) ?  ^' P4 v7 X
IAE,V00,C,RFA,OFA,
& U) z* B2 r) \IAD,5 V# _' F) C& m; y! W
IAD,O,: X4 u( V& L, g+ w
IAE,9 ]9 v! i  |/ g& h8 k' D1 L
ID1,DDD,
! E$ T, I( M9 k' z; \0 h4 m* `ID1,DDF,
1 @; u( ~( ?/ [% @3 ~% N/ WID1,DDF,0 B8 b1 s) L& o1 ~
e22,oFA,( H$ H0 |/ u- S, }* `2 J
e83,5 t( S$ ^' J3 W, e: N3 x" S/ w) B
e83,
8 ]- u) S9 g8 f1 Y3 _e83,( R) n) i, j* e. Z! @# `
e83,
: Q: G. E# A/ ?: we83,/ w4 H& J- l! S4 j8 u
e83,
( x* D) n0 A) s; q$ F6 m$ \e83,! ^1 R4 a; n/ `2 X* C' p- u4 e
e83,
: D% c. ~( W/ l; N1 D( A: G6 N3 Ge83,
% {( {( g9 v- `7 e) |. A1 Q* y! ~4 rIAD,* {% U' a9 w! K
IA7,
3 A! C# G) q2 s/ ?$ NIAE,O,# `' m* o; X& |- P3 n& G
IA8,8 S$ w. E2 o# x% m7 E
I60,D44,
2 Z1 ]9 c8 e2 q0 DIAD,: p8 K* P- P. R, J. U1 f
IA7,
0 W$ A! |/ F% K, n3 z1 f% {IAE,O,
  Z3 w3 U& o1 N8 q) \- Z5 [6 d$ pIA8,VFF,C,RFA,OFA,RAA,OAA,
. A. K& ~5 b" OIAD,O,K20,6 n2 U  G* @  ]$ R  h  x! B: W# e
IA7,
: z- U' t! ~3 b1 L5 v" c& HIAE,O,
( }, V% ~; g( V) f7 B& O, SIA8,
8 P* O( }0 Q6 N3 c+ W  Y+ `; d3 nI60,D04,
3 W/ p& c: i4 M0 V6 }8 |IAD,
5 M$ r- o, K, P- c; ~7 ]IA7,. m6 e/ \9 O# |7 w, H2 q
IAE,O,
4 i8 B- x4 \; M$ `IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
- ^7 v1 `9 |7 M. U/ iIAD,O,+ _2 z' E% P6 h4 x8 ^' S" y
IA7,
9 i- Z9 q! r9 l  k% WIAE,O,/ ?9 V5 T3 m  w1 Y1 u& E) _6 c
IA8,
& _1 i* O) y* ]7 e0 a+ rI60,D44,
7 E# c! s% B) F5 F" i. SIAD,7 ]+ J7 {, g( V+ Q4 j2 B" z4 r
IA7,+ V" U! K6 {. Z4 |/ s+ h) G
IAE,O,
! Q# g& C/ F% ?/ C( ]4 X3 V& ~IA8,6 `9 }+ q3 }; O
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,- w3 N& |0 H2 T7 K! Z: Q( D
IAE,O,
7 V& D4 y! t# l+ OIA8,: L: ^; n* P: l9 E% z' ^- |  b
IAD,
. U& O+ j0 ]$ Q' \" \# @& MIA7,
. }( K: |) E7 p6 Q) @8 pIAE,O,  [7 j3 H0 y% R; h
IA8,- `$ C! x4 e1 X
I60,D47,% R) n( i. x( B+ h6 ~( x; b- H0 d
IAD,
* P) h- R; d2 Q: Z; @+ v8 y7 x- rIA7,* t4 Z, A- D; E! }
IAE,O,/ S/ ^# }9 f  i; |
IA8,- u6 u1 h+ ^+ K) @* d
ID4,VFF,
, W! y! w9 t& Ne83,C,RFA,OFA,
) A( K, y4 }+ B: H$ p" t. Xe83,O,RAA,R00,OAA,O,O00,' M! e5 e8 ~$ F, J, p$ B& p! J, _
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
. R* n+ W3 _( }5 VID4,VE8,O,C,RFA,OFA,
, [1 \4 P  b& FID4,V00,O,C,RFA,OFA,
- n" L. @& B/ O2 h2 q' ZID4,VE6,O,C,RFA,OFA,3 r# n  w; Z) f9 n, M; p
ID4,VE6,O,C,RFA,OFA,0 @! @9 f. o5 ^
ID4,VE6,O,C,RFA,OFA,
3 L1 W2 z0 n9 }( @ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,  ]* r! N4 t& Q/ i. \
ID4,VE8,O,C,RFA,OFA,
# t8 x' p( {) j& WID4,V03,O,C,RFA,OFA,
9 u/ D( p, A- u9 Y& }/ C, bID4,VF3,O,C,RFA,OFA,9 m5 U0 [1 F7 \7 N
ID4,VC8,O,C,RFA,OFA,
9 m2 q, h; y* F6 F' h, d6 lID4,VF3,O,C,RFA,OFA,& P# `- K) O4 C; p  W% G  J' V
ID4,V64,O,C,RFA,OFA,
4 ~$ ^+ K6 O3 R! r% ]ID4,VF3,O,C,RFA,OFA,
0 _$ a# e1 q  M7 z) c$ @ID4,V50,O,C,RFA,OFA,+ v$ M2 w7 u( J0 P9 j& B
ID4,VF2,O,C,RFA,R03,OFA,O,O03,5 Q' o/ e/ N/ O7 I: f( A" s
ID4,VF3,O,C,RFA,OFA,
" a  F3 m, F- U% `% ~; e- `ID4,VC8,O,C,RFA,OFA,
4 z/ J3 G6 G1 ]ID4,VF3,O,C,RFA,OFA,  m7 K: h* m) Q: u! {7 t
ID4,VC8,O,C,RFA,OFA,
' Z% t3 E4 E* Z- ]0 hID4,VF3,O,C,RFA,OFA,
, V4 f( j* y- y% XID4,V50,O,C,RFA,OFA,
+ r! n4 J" t0 qID4,VF2,O,C,RFA,R03,OFA,O,O03,5 t) F& j8 y$ n$ ?3 `, o* y% B
ID4,VF3,O,C,RFA,OFA,2 B# l  B( S/ S1 A: [
ID4,V64,O,C,RFA,OFA,
% j/ X/ _6 q2 T( n0 e2 p; IID4,VE8,O,C,RFA,OFA,! T0 o7 i- {# I" t: I  |, M/ [4 x
ID4,V03,O,C,RFA,OFA,
+ x7 R7 l/ i; rID4,VF4,O,C,RFA,OFA,O,7 m9 g9 I) J; [+ E9 V
e83,& H- s0 t2 Y- Z/ D  O4 W! n7 C
e83,
# N1 ~( n: _6 t+ v4 @9 z% ]e83,
2 ?8 p& |4 y7 b) F6 z% O$ R: @e83,8 q! |, l4 u& D4 T# h8 K% o
e83,) a$ k6 S, N  |6 k
e83,
- ?/ v2 w+ w8 o- O5 He83,) R! x7 x5 F) P& ^1 y8 ]
e83,
/ P% T; N' M: ne83,
; S8 k; D# \# b$ u- I; K! P8 L$ `e83,00,C8,2E,( M; g* _" X9 \
e83,00,C8,2E,
/ V, G9 g# l& K+ g; j  }e83,00,C8,2E,
% F0 q8 Z+ f: me83,00,C8,2E,) E; Y  K5 _" D$ i
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,3 M( N9 g1 e! _! B6 ^
e83,
+ G4 u, e9 U& h; n
' \: x( x: P6 Z2 I) o% x+ V
2 o8 o( }9 g3 v1 \
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。7 Y1 F. B2 Q  K( L/ T7 m# q9 ?4 K
Device(EC0) {
" X8 L' j3 ~% M( NName(_HID, EISAID("PNP0C09"))
1 O$ Y, X5 i! |. H+ N- \% {! Q......% i! z" b1 i) |: [- t2 z: L
}
2 k" e0 J$ J( jPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,5 }2 f  w" V/ N7 u: I4 V
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
- i! G: A& I6 G% G% l# [2、   
& o1 @0 J8 [. K( ^& Q' i7 @# O. @Name(_CRS,ResourceTemplate(){           
( X9 [3 X, \) T! l0 C% h        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
. V) m4 U( P( u( A  N            IO(Decode16, 0x66, 0x66, 0, 1), V; O+ E% _# P, a5 V1 H7 n4 U
        })+ m# q2 R7 f5 _: K: r; s/ {
3、接着就是
$ V" ^/ P* I2 G/ k; g8 UName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO78 g+ L4 W, A8 C9 t+ [
通过这个声明,OS知道EC和哪个GPE关联起来
/ a/ C& A% }8 n; e% G/ C' J/ B2 v而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来# {$ ^$ V3 |6 c  n* _( Q& h
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。$ A. q1 O' I% L% I: ~' Y
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。4 m( Q0 V. g: K, Y- p: M6 n
3、OK,看看linux是如何处理SCI中断的/ r! r% g7 e, ?$ c+ e3 G
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute0 _; N& v! Y+ l- R! g* d; |
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
! c8 n- e8 N) S2 q/ _& N: {4、EC接到0x84查询命令之后,就把Q事件号传给OS2 c! J0 d4 `1 f3 O$ W( U' P
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分4 _1 g" d6 c1 [9 w
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了+ b2 x! `3 N$ k3 C- v! J
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。* y' f  ]# y3 c8 g7 U$ w9 X; R
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
& B; }1 @8 x+ ?* E' q+ C! k. fbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
* q- z  @# \; [  Y! A; g5 B7 X4 `版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-4 17:45 , Processed in 0.174945 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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