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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?1 E. e  q  \7 T) c: I7 U
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
- w1 A8 y2 }" r% l$ ^3 G今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。1 \  X: `6 d( Z9 ~9 n( G
我们在操作系统下用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 d. w0 U+ N* I2 r! z: lD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check% u: @" o2 x1 Z3 H
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
& X# @% z- G8 q: g3 W( \3 o7 f* G其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
( ?9 ^1 I) B2 o6 l6 ?+ e# b' F
8 j6 q- ]( D9 ?0 c7 c+ s; YVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,% Z. S7 T6 ^: N) e0 E+ Z  |
e83,# r, m4 \9 E; R$ d
IFE,6 G5 R; U- I0 a+ B3 K& R
e23,oFA,' b6 S3 b( T: }  a3 j
ID1,DDF,LPC RST7 K, `1 U- s1 Y  @! g
Swrong LPC RST) }# ]8 z0 R# K9 i# e
LPC_Reset_Flag=64
8 K7 M5 z$ |4 i& T* F: K

2 S5 F! i, O8 w+ rID1,DDF,% A+ I* S% P9 G) k5 [
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
) m, P# [3 m9 p8 v6 A! Z  hID1,DDF,% |  V, G. v: R
I90,VED,C,RFA,OFA,V01,C,RFA,* j+ N  R0 H( s- a+ K
ID1,DDF,O,OFA,O,5 B; j7 T+ r: N# M+ c3 I9 @
e2A,>IDLE# {2 o* n5 a9 h4 U: f% W; Y
oFA,<
+ S) F. [( x3 y7 ]" g- Ke00,9 E; J- c4 T  e. I+ S$ Y) v- h
IAA,O55,O,
3 ?6 ^4 O8 u5 ]5 l% z8 wIAD,! X! ~2 o( e$ U$ _& }) C
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,9 e* D& N. r9 A0 L$ r7 v7 A/ A: e
I60,O,D65,7 |' A0 F5 N+ d
I60,D6D,VF5,C,RFA,OFA,K20,
8 f. z2 U+ O0 W0 }( bIAD,6 G1 I/ w  p  g; S7 t0 j' {) G
IAE,O,VF5,C,RFA,OFA,K20,
+ }0 [1 }9 ]! j* h( V- u( ?( C+ yIAD,% {+ z5 D  b5 ~, c% {; }5 K: f
IAE,O,+ |2 z9 x* L+ b5 f! {' a( q- Y
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
% V  X! f6 {% J. k+ o( c' HI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,. P: W  M: V( `6 c
IAE,O,3 G  W2 N0 r3 h. W
e91,d2F,d00,
0 _, W+ F# `& ee10,d83,d2F,P3_K#6 B- @) ~  {6 B0 l1 [1 [1 ~
P3_K#

+ O& g; f, l0 u) p+ T  E  Q% L% ?4 S6 z5 Q& e8 F8 @
e23,oFA,6 w- X3 }; T: X' H: E  q* z) v
I90,VED,C,RFA,OFA,1 a( }% z+ V) T$ _" A1 P
IAD,8 G5 s0 r5 X$ n. d& q
IAD,O,! a- J2 `' b4 E) m2 s7 n+ d9 q
IAE,V03,C,RFA,OFA,. K% S! n; ?( g( K: T$ A; h
IAD,3 B, D* q3 D* L/ z/ S
IAD,O,, D- k% i) W7 r
IAE,
, y- T. m) k; o* K5 PI90,VED,C,RFA,OFA,
7 f, C- }* {; X# I* q- {+ }IAD,
# V; `7 T& b: KIAD,O,; g4 `9 H4 h$ B% U$ D% q! V0 ^6 _
IAE,V05,C,RFA,OFA,5 V; R+ g2 n9 b
IAD,/ P: X0 w- ]* g! r4 S0 I' T2 J& I
IAD,O,
( X( X- J! u4 c6 C. l% k1 n* B  O. SIAE,O,
6 C: b$ z" S0 O) Te90,d2E,o00,* Z6 N1 |# U: i7 ~. ^) E5 I0 s
e91,d2F,d00,P3_K#
$ `+ C) u& ]7 C* t0 bP3_K#
* h1 E' w6 h, o9 o% C
8 t2 n" o! A+ A
IAD,VF3,C,RFA,OFA,2 I0 j7 E2 n* B0 h; L
IAD,& N' l* N: H7 l) ~! V5 U
IAD,O,, R2 l6 L- L+ b6 F6 |
IAE,VF3,C,RFA,OFA,
, K# b% G% s+ |1 OIAD,
! ?, _+ ?7 `6 E0 C6 A. b$ RIAD,O,, s) J# N) \5 `' I
IAE,V20,C,K10,RFE,OFE,K08,
2 Y* {9 z# c7 Q0 H& g7 A, YIAD,
; ~4 @% r3 J; @# [3 SIAD,O,  {2 `3 r# s4 d5 F9 Q: V
IAE,V20,C,K10,RFE,OFE,K08,3 w+ x9 a0 q. _( O
IAD,
, ]9 G$ G( U; ^0 a: kIAD,O,
; u0 U+ m/ Y" T- l8 H+ i4 E0 jIAE,V20,C,K10,RFE,OFE,K08,
) L+ e2 s: i9 w  }% g+ _2 kIAD,; b- D8 I/ J$ O. B
IAD,O,! b+ @, Y5 |  j
IAE,
: e5 D: y; y; a1 d" H6 W. lIAE,VF4,C,RFA,OFA,
" J0 p$ H; q& w2 X+ B  @# zIAD,
* L' j- q- ?, e+ s; d* KIAD,O,! }* O! V' @  A# T* j
IAE,VF4,C,RFA,OFA,% \9 J! ]" T; R9 g; _8 u
IAD,
( A0 k  b, W8 s( @0 t9 _IAD,O,( X! C3 s1 Y& r0 \/ i: J3 \
IAE,VF2,C,RFA,RAB,R41,OFA,
2 ?5 L- E. U0 L" T* s, H" EIAD,
: ~1 p; J; l: Y1 A, I3 JIAE,O,OAB,' L  y3 V! z$ _9 t0 `& R
IAD,
" z- P# H3 S- ]( q% Q" NIAE,O,O41,
6 `6 G7 S8 f0 l4 c/ IIAD,
' t0 e% v+ t% XIAE,O,VF2,C,RFA,RAB,R41,OFA,9 [7 e& k# X9 V+ G. ~
IAD,+ `: }% s  Z# {5 s, M
IAD,O,OAB,
7 {4 |/ [7 C+ P0 w% j% U! @IAE,O,O41,
& N+ E7 e, F- O& H6 R/ {, u! wIAD,
5 @0 d+ y$ P( M9 ~IAD,O,
1 Z" g; {/ p0 R, }  F8 R3 nIAE,VF2,C,RFA,RAB,R41,OFA,2 F, c/ e$ N9 D; x2 u9 ?& G6 m9 C8 W
IAD,
; y- d, X; r. ~& W5 wIAD,O,OAB,' p! v: q  \$ ?! j$ M6 G/ q
IAE,O,O41,
  F& y0 i0 |4 N: r- ^9 V. z0 xIAD,: h/ G* y! t- G# K9 O
IAD,O,/ D7 }' K0 E+ T8 O
IAE,2 F1 Q9 `. n& j- X" Z
I90,VED,C,RFA,OFA,
0 j9 S5 D. o& @* [- A/ r6 EIAD,6 f) f- G# T4 Q+ T
IAD,O,
4 @, N+ A  k1 nIAE,V00,C,RFA,OFA,9 r( u# Q4 H+ m$ M. k2 l
IAD,
3 j: d- E3 U5 Q& L" A* ^9 hIAD,O,! b9 c1 J6 T- s& G+ e  ]/ ]1 K5 a
IAE,% j7 K/ G3 Z9 }6 \$ s3 G
ID1,DDD,3 ?/ }, v  E& x" v6 J
ID1,DDF,) h9 y8 P" X8 b# Z' m
ID1,DDF,9 g+ M1 @- |! ^$ n* ?9 [
e22,oFA,
' r" R. |8 E# X" Ie83,
# T! [; {" t% D, de83," i" Q; U0 D9 Z  a
e83,
5 e$ R% Y/ f4 |% X7 @e83,: ]9 ]! Y8 i+ t# ~) O) F
e83,
; l2 k7 a' ?% w1 I$ L" K5 U1 ?) Ue83,
3 [) D9 ]  d: ?# O5 e# m7 [. We83,
' `# T% t' y, c% h. j8 M) ce83,; L  r" c6 U8 [2 T# i* ?
e83,
- d9 _4 y$ Y. ^! NIAD,% K# j1 }0 U, _
IA7,
% C) x% l* H3 ?+ x/ pIAE,O,
1 s; K2 f2 H8 R# Q# MIA8,1 l: G" c5 ?  s6 N2 O8 i: F
I60,D44,
; w5 C# O8 R, {+ C& |- [/ J. G+ RIAD,+ ~. J" \$ M7 p9 Y, P, B# _
IA7,
! p  `* V  a! y" a4 ?' g! aIAE,O,
5 A# b& V6 [( S* J/ N# ~( C& [2 lIA8,VFF,C,RFA,OFA,RAA,OAA,
9 K3 b  y% I4 j) R4 eIAD,O,K20,5 W/ n( U! T" L  s% n
IA7,
$ Q5 C+ B& m3 }  sIAE,O,
! O0 P9 d4 n% K: {; [, r/ K. I+ LIA8,( K/ i( @1 J. {$ A0 j3 S. [# n6 F
I60,D04,; }, }9 h) [% ?! Y
IAD,' o+ p9 z& v) l- b8 J) \5 E% Z
IA7,
, q8 h' z4 v, `. }! l$ n% B) oIAE,O,8 B. t3 E1 z) v! z
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,# W- Q" {' _; m. C
IAD,O,+ |0 |$ d- z( f( _
IA7,( i/ q9 k$ n( d2 o  t- T1 d- n) v
IAE,O,
, i1 t/ V' K! [, k" R3 n. UIA8,
5 g, x+ z- }$ w5 [. EI60,D44,2 C: A6 u. M2 a/ y
IAD,
9 k. O  R6 ?: B5 o/ mIA7,
: A% R0 [/ h9 F( dIAE,O,
, |7 q5 D* L) O) @5 B- L# \IA8,/ V( o7 v9 ?8 y* r# S0 Y
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
) d( i. O3 r+ `2 T' e( d7 GIAE,O,
% T! F3 _9 W; R) uIA8,
! w6 f9 A5 ?- G0 p9 S0 i* DIAD,
! r$ K- I8 X- O4 [, v$ |3 MIA7,2 U9 O0 P( u5 ?" N" t3 H$ F
IAE,O,
; E3 i/ d) e/ k0 yIA8,# N$ Z& c  t" e
I60,D47,% S, T  f6 T% f6 o  M  h! |
IAD,
! p& i' [/ g  m& I1 D' NIA7,
6 e  f% W3 t! ~/ t; xIAE,O," V3 `# f% f" @; d. E) w! Q
IA8,- N" ?0 ]6 n! _. |4 H
ID4,VFF,
1 v+ D' Y. f% v. @. w! Y8 ue83,C,RFA,OFA,7 `  z  r( p* F0 H4 e2 y6 t
e83,O,RAA,R00,OAA,O,O00,
- K9 [8 `& X* s4 @) h+ FID4,VF2,O,C,RFA,R00,OFA,O,O00,
8 p; k. t& J; vID4,VE8,O,C,RFA,OFA,# v0 V. O7 _# J3 `4 Y
ID4,V00,O,C,RFA,OFA,! x( c: p+ _6 Z. R1 }: A; V+ @
ID4,VE6,O,C,RFA,OFA,
3 D. K2 B. D) H* D+ a/ S, [ID4,VE6,O,C,RFA,OFA,
) p- x( y. k5 ^9 l+ N0 ]' S4 N4 h. JID4,VE6,O,C,RFA,OFA,0 j5 h; o/ a3 `" C3 @
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
8 N, }7 U, S5 p! c1 ]! TID4,VE8,O,C,RFA,OFA,* s. i) \+ F% I4 L
ID4,V03,O,C,RFA,OFA,3 y5 s  E" f; }% W# S
ID4,VF3,O,C,RFA,OFA,8 k, D8 r# ?6 }: R+ k5 F
ID4,VC8,O,C,RFA,OFA,) E% J- ^2 g, e0 }
ID4,VF3,O,C,RFA,OFA,
- U6 j/ N! z% F0 m% D+ fID4,V64,O,C,RFA,OFA,
0 m  n) ]2 ?, U9 C7 WID4,VF3,O,C,RFA,OFA,
( e4 H/ F  Z, K4 `+ N; x1 ^; pID4,V50,O,C,RFA,OFA,2 `) J) g' C% B' c0 l2 \% G
ID4,VF2,O,C,RFA,R03,OFA,O,O03,. k# P% z9 v5 u$ @2 {
ID4,VF3,O,C,RFA,OFA,
: \/ C4 Z5 G# J% qID4,VC8,O,C,RFA,OFA,
* W1 @! Q- w& X9 l" KID4,VF3,O,C,RFA,OFA," z1 l  {, i# u, j
ID4,VC8,O,C,RFA,OFA,$ ?2 x$ G0 B1 X: y9 J' P
ID4,VF3,O,C,RFA,OFA,
* q; n9 Y, |% s$ b, {ID4,V50,O,C,RFA,OFA,
& a( e  q- G9 A" i. ~: n0 ?2 @. bID4,VF2,O,C,RFA,R03,OFA,O,O03,
3 c' l8 X6 P3 l5 t5 `3 l& vID4,VF3,O,C,RFA,OFA,- T5 c* ~! n% a- g+ ^/ @; h# [. R
ID4,V64,O,C,RFA,OFA,. Z9 l# d) ]/ A  w* y( N: [/ P
ID4,VE8,O,C,RFA,OFA,
% P* ?6 p( _$ r5 v& s- E8 \: Y- \ID4,V03,O,C,RFA,OFA,, u2 i' a% M6 ^% o& Y5 T% A
ID4,VF4,O,C,RFA,OFA,O,8 @' y8 B; d5 O: r! r
e83,
6 E( p# m9 _( T- s( j/ pe83,
+ B& o+ K+ [! m: }; e/ B) Le83,
; X3 y/ M- ~0 ~8 \* M# Te83,' `4 q+ k; t: w- m3 [! l
e83,
1 U# M7 d" S; f% V5 R) _. Z' Pe83,8 i6 m: {8 P$ I: K$ F+ N
e83,
6 S( X' P/ q7 j  S! P6 We83,7 {- f& C' X) D6 L! B, ^
e83,
: _5 @. q/ y. G& ?- We83,00,C8,2E,8 y; M+ z! i% _, r
e83,00,C8,2E,
/ Z% d6 Z( J+ U0 c1 M: we83,00,C8,2E,
: L/ q1 e& @0 J7 `# c; Se83,00,C8,2E,
$ g# M+ L3 W) B9 u# s: j8 C  \" }e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
2 G+ M+ a+ W, L( r9 f0 s; z. P, Xe83,' R  e+ D# n4 G  L

' g& `8 X8 `$ o2 V- ^+ @( B* z( Y- Z3 @/ ^$ P4 |2 g
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
' D( E+ F/ f3 }4 n0 f# c- X+ \6 w     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
1 e8 I* {/ L# v1 T- a# Y- n+ J      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!* ~6 }+ y8 x- j% m, y  _
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。
' r6 ~) n$ E# g; E/ F; |, s      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
6 m0 a; J2 Z+ Z9 }BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。6 Q9 h* ]) X9 y
Device(EC0) {2 q5 U. k" `" Z
Name(_HID, EISAID("PNP0C09"))
1 q  W0 Y8 U$ y- X......; O% E1 d! V) N' C
}
/ ~, j/ k: t* N6 B5 C& x" kPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09," O) H( C  \' |1 g
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)# b9 A5 r! Z7 U+ B+ H
2、    : W; a0 Z( ~; s& i- Z7 B7 n
Name(_CRS,ResourceTemplate(){           
" |8 W; k. {" h' q; f" J! ?0 I$ W        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84& J  _; w% E6 o4 E$ U5 R
            IO(Decode16, 0x66, 0x66, 0, 1)
, k4 Z& v, Q; {9 ?( P0 P. w' n        })
) a6 r/ d; n* M3、接着就是! y* y9 Z/ n+ m1 i2 U
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7# ]  k5 ^2 c: ^) @7 [8 k5 R
通过这个声明,OS知道EC和哪个GPE关联起来
# ]2 B' m5 N+ [/ [) p而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来% X6 n& I- S9 v- [
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。  g' U2 C2 V5 s9 w
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。! a6 h4 c( u4 `0 v8 {' u/ M
3、OK,看看linux是如何处理SCI中断的6 h* D' j# {2 ?9 `" A
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
( y% S/ l+ z( I) }acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)5 z: {, Q' S' _( R, q
4、EC接到0x84查询命令之后,就把Q事件号传给OS5 N9 a, d+ O' r7 y3 g5 c2 g, U9 Y7 g
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
& q1 K, ]/ `0 _; ^4 Y2 `+ \3 dqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm# h& p, q8 e7 Y9 D$ H% @5 O
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
" U! y1 e1 N0 m版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-20 07:40 , Processed in 0.480253 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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