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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
+ ^: @' F/ f( \3 m/ J看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
7 M8 h# S& h8 S. K$ {今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。- M3 I6 ?: t$ Z
我们在操作系统下用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的命令9 I( T5 K3 h  U* u8 B
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check( R4 w, y! b" M( A# F, P" d  E' n
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析1 N1 Z8 n6 w8 t; ^
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
0 b( k) K' p! e, K+ N: g# p" Y  q7 f
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
/ X7 ^% T& K1 V: V" e' Z& Te83,
5 `7 ^% v8 {4 @3 k3 HIFE,
/ z; \4 p! R) s1 u3 B" je23,oFA,5 Y; R/ o2 P" S2 V8 G6 ~
ID1,DDF,LPC RST8 J/ j3 v( |; w+ o) D
Swrong LPC RST% L, W$ b9 J* q  s% ]" n; n
LPC_Reset_Flag=64
0 [( l) n4 O8 o8 D* c

( E8 b! O8 i  k- z! P! ~4 r; jID1,DDF,; k8 D  P  T+ }. `1 L
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
8 `% r) h5 q0 |1 M7 [8 y4 O' _ID1,DDF,
% ]% v7 ]9 k2 s5 v! vI90,VED,C,RFA,OFA,V01,C,RFA,/ [$ u, y# }- ]% s* _, E
ID1,DDF,O,OFA,O,
" R2 \) i  t) z" h' le2A,>IDLE
6 M* @, p* x  H3 D" {9 KoFA,<" m- l) g4 V( G- K& o3 Z) H
e00,) X, t$ N0 v( T/ j) w
IAA,O55,O,9 _7 a' e" h- G/ N; h7 q+ p
IAD,# I% m( s: m* P; _
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,$ R* D" \2 w/ z2 I+ `- N3 x( o
I60,O,D65,# O6 D% ~3 }. o4 s  w
I60,D6D,VF5,C,RFA,OFA,K20,1 P* {' t; B5 O  e- P/ ?
IAD,
/ \6 E" [9 }2 P) nIAE,O,VF5,C,RFA,OFA,K20,
$ A! q7 y. I: D2 u. sIAD,
! k# Z) ]8 c4 f9 P' p9 DIAE,O,
# u: ]& ^: K8 r  SIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,' @; D* q9 c6 w% H1 B6 y
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
! i3 k: J" v1 r' TIAE,O," |3 @+ r9 Z, A
e91,d2F,d00,
4 Q- V+ ]* v# b( \* o' M. A  Y! pe10,d83,d2F,P3_K#/ _' p$ W$ P. Q4 y
P3_K#

4 L/ ^+ W) U2 |- Q7 U( P4 }. a) w+ ^: G$ d$ t6 D- C
e23,oFA,! T8 O2 i% _; r% e( p
I90,VED,C,RFA,OFA,  L7 y$ ]7 V+ K( Z* O0 c
IAD,
. O) W; M, U3 i; p- a" g6 `# l# `IAD,O," h3 a2 M' B; h
IAE,V03,C,RFA,OFA,
% Y+ Y) P7 K3 XIAD,% G6 m' ~; n- o% [8 k1 D) N* Y
IAD,O,
$ R- {' d. P7 j* _IAE,+ S& k  b1 c- ^
I90,VED,C,RFA,OFA,
4 p/ Q# W2 t% Y. F' Y$ E/ ZIAD,, p8 F  f+ V  B/ T5 v- g+ [
IAD,O,& ~* f; a1 O$ g3 D- Q7 V* a8 [6 f3 P
IAE,V05,C,RFA,OFA,
; }3 ?4 J4 a5 ^- y/ UIAD,0 i' J% T/ [8 u% }6 _1 c! [
IAD,O,
  C/ Q& z. s2 s3 C5 R0 [! MIAE,O,3 s8 q$ K7 U3 a+ A6 ^& e4 Z
e90,d2E,o00,: e0 r+ y2 O8 W# T0 P  ]
e91,d2F,d00,P3_K#
, w% l6 O2 W# j8 uP3_K#
9 Q+ }- C- v% E8 T, ~. m' b
) W, X" m0 G" C3 U7 D
IAD,VF3,C,RFA,OFA,
! U; f1 \" R- E( G+ r. Z3 AIAD,) A5 ^+ o( f# W  C* n/ [
IAD,O,8 t% e' p, J- t1 z8 G  {9 |
IAE,VF3,C,RFA,OFA,
! n6 ~8 a/ H, X3 M( C' q* CIAD,+ C3 f' k9 z! q! b+ h
IAD,O,
) u5 U9 b7 v% i. n7 t5 zIAE,V20,C,K10,RFE,OFE,K08,! H" ~; @. h2 ^6 D- [4 ^" x) M% j9 v
IAD,
6 n; f; q6 e7 IIAD,O,9 ]2 x6 b& A0 T
IAE,V20,C,K10,RFE,OFE,K08,- }6 d6 D% o" I# _0 j
IAD,
. j8 A& Z: `/ x! CIAD,O,+ m& T* z7 L3 `: u* k0 |6 I+ \
IAE,V20,C,K10,RFE,OFE,K08,4 s7 N' q, ^$ y" A1 r" |8 D- y
IAD,
. D, v" N  _# m* p$ U; |% ^IAD,O,
* ^5 g$ L  h% q* GIAE,, w6 U3 r8 Y7 E" m( X2 V8 X
IAE,VF4,C,RFA,OFA,
+ z" o' c; f! M$ A. f, vIAD,
" A( t* V, o' J$ Z* N4 BIAD,O,
+ Z. J  o1 m; A# Z7 Z7 y8 fIAE,VF4,C,RFA,OFA,
; E: E% p3 O/ o* {, u. P3 jIAD,* D0 T' Z, |6 y# I# {
IAD,O,
( q! g* g; n7 X4 a1 mIAE,VF2,C,RFA,RAB,R41,OFA,) y5 N! U$ Z. @; }' o
IAD,
8 f0 @, r  F6 \/ mIAE,O,OAB,5 H; A# [  Z8 A, f( e  ?
IAD,
/ \. D8 R3 K0 gIAE,O,O41,- y& P  k! Q$ c2 v8 b. ^- Z
IAD," x* W4 g% J, j5 u
IAE,O,VF2,C,RFA,RAB,R41,OFA,
+ S: @4 @& o0 q. m+ C$ {2 ]* ^IAD," Q9 W- p( @' |% X- O
IAD,O,OAB,1 ^/ u8 f; q2 G
IAE,O,O41," R8 n0 j4 u2 Y4 |
IAD,8 p! n( I4 V6 E$ ?
IAD,O,. ]" \2 u0 R8 W  x
IAE,VF2,C,RFA,RAB,R41,OFA,, c5 h1 H! d4 g, f- w
IAD,
8 a+ k$ s, c9 F& T5 G- cIAD,O,OAB,; h8 z7 \9 \9 l2 ^& N/ x- u+ ~: ]
IAE,O,O41,6 B9 H+ q# J' v
IAD,
+ C4 d1 y7 b3 {& K% E2 gIAD,O,5 R: L; O$ m* Z& J& ]0 M7 F0 r, x
IAE,
: q5 O( J: `1 X2 @* H. C& BI90,VED,C,RFA,OFA,3 b  ?8 ?' B. ?2 ~8 p* U; r
IAD," z+ w$ V" Y6 ^+ ]
IAD,O,
/ |; Q! N; M- P& n( l5 kIAE,V00,C,RFA,OFA,
# r6 H8 L* O" }' W) D# qIAD,7 c7 b; h  |7 w9 E( t! O
IAD,O,
) W& |2 ^+ \) M' Z! Q& bIAE,; V3 E: f7 j( W! S+ Q
ID1,DDD,* g9 S, x/ q, G! b; @2 U
ID1,DDF,' \/ s9 B( y7 h2 }. F9 F8 f
ID1,DDF,
8 Y2 v8 m. H6 o( j4 L: Re22,oFA,! w! W5 L' i5 O* L
e83,( r$ ~$ ]' W5 L! E
e83,
# K- |" e7 Y# l2 o1 i' @e83,% A' c% y7 b) K: V  C8 t
e83,% g# s& ], Y  ?- @0 ~) z
e83,6 W: u& g7 k) T: O+ c
e83,
6 n5 `0 @* S: w! je83,
) w* R% a8 }; k& N/ K% Ze83,
2 G% K8 g2 n6 R! @e83,
8 E1 P2 \% `( E; W+ T! k+ V- m8 ?IAD,: s/ U5 R8 q; m/ A2 ^
IA7,: B$ w: f2 P8 W: Y0 p1 U0 b
IAE,O,
# W0 O2 @, z; i# LIA8,
4 p4 C  M& H/ a6 [# yI60,D44,
9 L' x) i! a' ]* D! Y) w/ ]0 a' bIAD,) V2 f+ A6 o& }8 w% k% U: M
IA7,
  F1 S' F2 ?  h' _: tIAE,O,
: f' N/ }7 W- x9 h4 wIA8,VFF,C,RFA,OFA,RAA,OAA,7 B3 A+ Z) z+ {* \# W
IAD,O,K20,* c" r3 ]! n9 A" ]* r0 X. D
IA7,
* `2 j9 G& C! [& N, b3 oIAE,O,! A. U3 N0 E  W; {1 Z, W/ }
IA8,# q+ ?4 h( h2 K; V' t/ J9 L
I60,D04,( c, M: C9 L7 K7 @9 T
IAD,6 |$ N* Z/ |) G; z& P" Y
IA7,
+ z3 H! `" r& S9 ~, S& HIAE,O,
$ t" L& o$ i3 P/ q% X; gIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,% i) ~2 F, [# a$ r, F  K
IAD,O,. t( |6 ]  E5 a3 P
IA7,
+ o* T! X# h6 r7 c! b& Z% a; n- a  ]IAE,O,( l0 e) I9 U. {
IA8,2 z4 n/ Q8 z" ~' R# d( W% p
I60,D44,; D* |4 h" I9 p7 _0 `
IAD,
" g0 `' D5 Z8 p+ X4 U, ~8 LIA7,
: P! c8 }/ s$ D& t; f. HIAE,O,
9 A$ J+ }3 t. B- S/ i, z) n) NIA8,% E' X) a: H& ?
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
! V1 m% J% p7 A  S5 z9 W" C5 MIAE,O,
$ B! ]- J& f1 x/ `* H0 hIA8,( t) n% r( a) Z1 u
IAD,* k+ b7 q  I# m) S. L& e) R7 A+ F
IA7,
5 D; F; J: R7 w9 F' s& r% q5 dIAE,O,
$ D# J( R2 c" M. KIA8,
- ^7 Z" K8 [  @I60,D47,
1 ?# D9 W! `4 LIAD,
4 V# p, I& T% ?. f% H' ~IA7,' {/ G1 X( x9 i' I  s
IAE,O,9 ?2 ?# A0 F$ b0 Y
IA8,
" P3 r% U. q9 eID4,VFF," U' E7 x4 ?6 ^$ U" g/ e; {) a
e83,C,RFA,OFA,
; t# L  b; j9 m& N4 p; d/ \e83,O,RAA,R00,OAA,O,O00,
- n# t2 S; p4 J) `( v) [' y; |% fID4,VF2,O,C,RFA,R00,OFA,O,O00,
8 l2 f5 ], |" h8 J: ]. n* z2 w) e  ?ID4,VE8,O,C,RFA,OFA,9 @" \. L6 h& I
ID4,V00,O,C,RFA,OFA,' ~9 }5 R2 ?$ a  F' g9 m
ID4,VE6,O,C,RFA,OFA,
: z9 \; i6 i$ j  EID4,VE6,O,C,RFA,OFA,, z2 O9 a1 |  ^3 e2 E, L2 k
ID4,VE6,O,C,RFA,OFA,! O* P# B$ ^+ o: m# O7 G
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
8 }: }7 x- ?/ c; \- g; k! P4 N& CID4,VE8,O,C,RFA,OFA,. U8 p& B( I" [
ID4,V03,O,C,RFA,OFA,
( k4 R0 g/ z: E# [' ^3 v9 oID4,VF3,O,C,RFA,OFA,& l' q& O% k1 G- A
ID4,VC8,O,C,RFA,OFA,6 l( l4 J2 x5 u- F. |+ G( P) c& g
ID4,VF3,O,C,RFA,OFA,
+ ?. z2 D5 r, ZID4,V64,O,C,RFA,OFA,( y' i4 D( p- Q# {( l) R- d
ID4,VF3,O,C,RFA,OFA,( \3 ~$ ~! T9 ]
ID4,V50,O,C,RFA,OFA,
% E( w( A! R3 A6 ^: mID4,VF2,O,C,RFA,R03,OFA,O,O03,7 V" x: b0 k* @0 k0 E* j  _; P
ID4,VF3,O,C,RFA,OFA,
/ `7 j) Y* r( Y0 u4 bID4,VC8,O,C,RFA,OFA,
/ B8 [: L- ~, D; c: q0 u. }ID4,VF3,O,C,RFA,OFA,
3 |: f0 R$ ], l4 S1 t* Y0 c; i6 MID4,VC8,O,C,RFA,OFA,! g; s& t# L: K; b5 z) F
ID4,VF3,O,C,RFA,OFA,& o, r  g, q: f& I+ B" ]
ID4,V50,O,C,RFA,OFA,
7 f. A; }9 R6 p+ v1 V& v. b7 XID4,VF2,O,C,RFA,R03,OFA,O,O03,
1 {' d" g" l1 `9 U' m$ `ID4,VF3,O,C,RFA,OFA,
, s* ^* }0 x: g( Y2 ?/ _) j' \; DID4,V64,O,C,RFA,OFA,7 e' m' b% h! @
ID4,VE8,O,C,RFA,OFA,
& I0 u6 ^) f3 a* R2 b- _* A# F8 Z7 A4 @1 kID4,V03,O,C,RFA,OFA,8 D0 J; i. z; a+ c- M0 N
ID4,VF4,O,C,RFA,OFA,O,
4 K6 j' J1 Q% Z8 }8 ee83,3 |% `8 n" l9 X+ I. p
e83,
: w. K) _, q; F6 c/ j; ]e83,
" k8 V+ M) X4 U9 o( t+ ^e83,. c) m+ p0 m( H5 w* ^6 J
e83,8 w% U, |7 Q+ Z. J
e83,
& [# M" u9 s% M* `- L/ o% re83,
" \" Z- C$ f) m7 R3 M- f4 Ie83,
( q3 C0 q3 [4 K6 I; S5 ?e83,
4 O; O* }, T0 z* u6 I) o) Ve83,00,C8,2E," ]! ^) F# x5 Z) n
e83,00,C8,2E,
- \; Y5 B7 G) b8 T! o! ue83,00,C8,2E,- x7 H+ g# f6 c' n2 o
e83,00,C8,2E,6 _- V7 r$ k* {$ D$ u
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,, b. M6 i. ~! }& l
e83,# \9 [! V% @8 n7 R

8 e6 w& c( E  S, z0 G( P6 J) m7 ~- l& K
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
# J8 K* E' q2 n6 S     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。4 J9 {, r8 k; D1 c0 F
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
- G. M" B( O" x: o      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。, E: Q) w( \! t* D/ ~" a' E7 }
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
9 T& l2 o9 r1 @3 mBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
/ {" h) t/ ~( X( v, d( gDevice(EC0) {
" U2 Y- ~4 I, g+ I' A$ p, DName(_HID, EISAID("PNP0C09"))
1 w" W8 n% |% T# c: |......5 m/ p0 P9 L- |3 G* U4 n
}2 P3 Z6 O$ c( h. m0 j' S" g
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
$ A% B1 T& K9 R就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)3 a0 w4 }/ T  k! U
2、   
2 h; |1 ~, f" GName(_CRS,ResourceTemplate(){           4 H  G& u7 W4 r% `/ l/ a) b( O" n6 l
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
1 C& }+ `  p4 B8 L9 |7 K            IO(Decode16, 0x66, 0x66, 0, 1)
5 i( ^& {# _+ ?% V2 z        })
; B; w: i* [! `1 h! Y3、接着就是( v' j- J+ j) e% W8 ?& N8 K
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7, _- y6 H% A5 [% I! Y
通过这个声明,OS知道EC和哪个GPE关联起来" |. R! U$ `& U2 I. @, ]: Y+ Z
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来2 Y, S9 Q$ W) C
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
. |0 B  m/ r- y而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
4 |" P# y; B0 l$ x3 F/ S4 _$ L3、OK,看看linux是如何处理SCI中断的
0 m# q1 i3 j, C6 ]8 [- R5 |( Qacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute% C2 A3 S' W. n8 g4 l: P
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)# a! T8 n6 j. W0 z/ A" X
4、EC接到0x84查询命令之后,就把Q事件号传给OS/ g% ~3 D7 Y- ]9 q* h8 E' G4 c2 q
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
( }/ y$ o. `4 J+ A; Q- L你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了! J; F8 h5 F* `2 M0 f+ `
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。/ n0 E8 e7 w7 E% i$ A
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm/ `# M$ n. O1 U# }
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。8 D3 N+ Q3 V4 d  q+ G% p4 ]* }* O
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-20 09:20 , Processed in 0.152968 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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