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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
$ U( x* \9 u% E) `- m看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
" M2 p7 v: J- D. I1 m今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
+ q9 g1 h1 N* e' L5 f: `4 m1 F我们在操作系统下用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的命令3 K! D4 m7 S( @2 V3 J# Y* }, c0 h+ a, f
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check/ c' m, ^2 |! b6 J; L! G6 K
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析: b, P6 D9 T5 s
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。1 t  n$ |0 s5 j2 p
0 r) _( i) d! ~) q
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,2 q& i* v* V5 P# \2 E* p  i& U/ u
e83,7 O" E+ N4 q# s# q& r7 Y. t7 \
IFE,
' d3 R$ M  V3 j+ C: [e23,oFA,
: F# J1 h, i* ~/ gID1,DDF,LPC RST& D. P" @+ j5 O. v6 _
Swrong LPC RST
1 W- C9 L1 b8 H: }* E3 u$ i: {LPC_Reset_Flag=64
4 O# J2 l8 v) j. s! }

- S0 A: a: ^- E8 |ID1,DDF,. [0 F  _. Y7 r" r& e) s
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,+ T9 e! y# ^  W( k. E$ W  g
ID1,DDF,3 ?4 j& a) y# G9 ^2 n' s: Q7 k6 o
I90,VED,C,RFA,OFA,V01,C,RFA,
: l& L, q$ E. N7 `% h0 j7 {ID1,DDF,O,OFA,O,5 x- w: g3 {1 \. P/ H
e2A,>IDLE$ A% L9 Q( J3 d% c4 j$ A
oFA,<
+ u# G0 Y+ O0 ?e00,
$ J( g+ M2 w1 D1 Q. UIAA,O55,O,& v9 R6 Y- Z( h. N9 L5 c
IAD,
- z* G% ]; K  I. kID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,# H, D  A7 f/ Z5 \
I60,O,D65,* S( y' c0 z/ N6 _" F5 }. `. ^8 x# Y
I60,D6D,VF5,C,RFA,OFA,K20,
9 ?' w2 T3 v4 K( Z) ]/ [IAD,# e# [& @  S0 {4 P) g
IAE,O,VF5,C,RFA,OFA,K20,& R- r+ X; p2 G5 y
IAD,
: U7 N! n& u& Z! }IAE,O,9 [2 x3 d0 Z$ `
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
, v; g' n, H0 n6 \I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,9 y- U0 c, T5 S  l8 S# h5 W& }
IAE,O,
0 ?% n# ~, K6 F8 S" Te91,d2F,d00,1 Y0 P4 q2 t6 F) e! F+ z. O
e10,d83,d2F,P3_K#' ~2 ^7 W6 k/ d' L
P3_K#
$ E' K; S  x% R) y( T5 e" W

; Z# j/ |/ R5 O4 L6 X, v% f2 Ke23,oFA,& d% O0 c' e) W+ h: [3 D: q
I90,VED,C,RFA,OFA,
7 E1 |" \! _0 N6 `' @0 [IAD,. E; G3 @3 c/ q3 k. u' `) `, ^
IAD,O,
& x  Y( {' C; w) E! r( p. G, g4 iIAE,V03,C,RFA,OFA,
: K2 B* I4 J) g" g% ]% M4 m8 Q! GIAD,
; T$ j9 e) J; Z! J4 q$ k* FIAD,O,
: `" }9 x* `  X& vIAE,% K8 m: d$ T# p# U4 x3 j
I90,VED,C,RFA,OFA,
' C  c6 L/ e. ]IAD,, x0 \: l+ k$ X+ M
IAD,O,: n  D1 U- q4 r6 \" _! u, X/ B
IAE,V05,C,RFA,OFA,& ^6 |6 Q& b: q# I
IAD,  Q0 r  x' E" z, z
IAD,O,
1 f, b( U- {4 ]( q, p( p; l$ lIAE,O,
! ^) q, y, }: Z3 k% k( Ge90,d2E,o00,0 m' D0 M; G1 n* D. c
e91,d2F,d00,P3_K#" g9 f$ L+ _/ @/ x7 L& F
P3_K#
) |4 ]% _7 a, [9 ^, _

  f, ^/ t# x" Q" r# c+ a% _IAD,VF3,C,RFA,OFA,; o' K: t2 X1 G! j" l
IAD,
6 p0 {: r4 D% i! FIAD,O,
! o% P( a) x$ ]* NIAE,VF3,C,RFA,OFA,
  y; r2 Q& a# r$ k2 _) R7 ZIAD,
$ D  ]% Z4 b8 e* p" d; z+ h+ c! C: _: A3 pIAD,O,
0 Z& a% l& N; RIAE,V20,C,K10,RFE,OFE,K08,! y( A/ x  Y* `4 L  R1 D  R
IAD,
: v/ F5 w' l4 X9 P* x' hIAD,O,8 G- L1 O1 A9 c6 u. O
IAE,V20,C,K10,RFE,OFE,K08,' F" J. G9 J! h. |! b( I) y4 z: ?
IAD,( Y! o1 h& w6 f0 e
IAD,O,/ V/ l  S6 {) L; c
IAE,V20,C,K10,RFE,OFE,K08,% S, q# Y' W. g8 q& W2 M! p
IAD,
4 P) |4 R& W( x+ j* OIAD,O,
: C+ q! Y1 E4 t$ i# e: Y1 aIAE,
1 y5 `! N1 H' ^. y0 G( s* A" {- [( wIAE,VF4,C,RFA,OFA,; m' e4 ]9 i8 [6 p9 u/ X, g
IAD,
7 |0 X" o9 e! C" ^0 [0 ^% WIAD,O,6 Z; u: m( a' c
IAE,VF4,C,RFA,OFA,0 w# H. |# ^1 S7 i7 @" b5 B
IAD,- b$ D; G- n- X) @
IAD,O,7 x6 n6 J) f$ f6 x% O
IAE,VF2,C,RFA,RAB,R41,OFA,% F  v3 N" w! G1 F* Y- `3 V
IAD,' x2 z; R6 s" d/ {, [+ A" ~& G( C
IAE,O,OAB,9 D+ S* j, l- m! g" x! L& M
IAD,5 I& m" r1 k! Z% S2 r5 ^2 ?
IAE,O,O41,1 C- X' W7 s+ V# l( v& O' Z7 {
IAD,' C7 m; w& V  z9 u. e7 Z8 I0 S
IAE,O,VF2,C,RFA,RAB,R41,OFA,
6 ]2 H2 L8 [, L+ V2 Q4 NIAD,
1 o) S" L4 V6 |IAD,O,OAB,
# b3 M) E! F8 H+ C1 |IAE,O,O41,( T) C% h4 z  u4 h
IAD,
' J; A* m- ?4 m/ x: n* E7 RIAD,O,
# f  z* m* c! ^; ~# o2 E) [4 lIAE,VF2,C,RFA,RAB,R41,OFA,/ v" @" f$ s, J* L& O/ q
IAD,
" C8 t/ q* d$ c2 r) m* A) FIAD,O,OAB,
/ I" Y; Q* d. n+ t! c3 Y0 B4 B1 m0 hIAE,O,O41,
$ H6 ^6 P, }" p+ I, y9 uIAD,
: A! I4 j* P0 pIAD,O,
2 M# l5 G) s$ M$ h# D1 N4 I2 }IAE,' p. P4 _8 o5 X! O6 n6 U# O
I90,VED,C,RFA,OFA,
# B, t+ p0 }6 m0 d% e& K; h9 U( gIAD,
" a. \( j3 p3 }- y$ H+ w5 XIAD,O,
* `9 g' q" d1 q* y1 lIAE,V00,C,RFA,OFA,
6 J. i( U7 E% L" YIAD,2 i2 `( O; R8 F) Z
IAD,O,
4 ~0 N' C" M5 U6 ?/ IIAE,% w' M) }7 t$ b) {
ID1,DDD,
; a0 b# @# h' A4 {+ UID1,DDF,
8 y& t* N! p7 B4 a: R! zID1,DDF,
7 {0 p1 D" @) ve22,oFA,
, b8 f! Q0 F) x4 ye83,
+ I2 P/ \3 _$ I% Me83,* P5 T$ S" A- q8 f1 `9 f  A9 A; R
e83,
" T( [6 J. f& y! s2 g* Ie83,4 [0 s% K) J; B, k
e83,
5 {( p8 W' d' e4 _' _5 X$ V) n! v) Ye83,; V; h. D5 }/ s' T# P( I
e83,' M( |- i! c6 U+ K$ |+ @
e83,
1 i* y% B0 e3 ?e83,  ~5 @# h' S: f5 o) d( Q# B4 Z0 r
IAD,
! p0 l  o/ P* s2 j& iIA7,# C% l" A& k0 a- `
IAE,O,
# _" B2 g5 w3 t) q, Q" l  oIA8,3 _0 _) A# n+ k# \% j- J/ ^
I60,D44,
1 q  G- e  j: e+ Y9 iIAD,: j# g: V- W" M
IA7,
6 g* r8 c+ B# L9 P7 YIAE,O,
8 K: k6 i; ]/ `7 K  o( z8 ^IA8,VFF,C,RFA,OFA,RAA,OAA,/ \; G) E8 }' K* ~+ y$ ^5 Q8 N
IAD,O,K20,; A9 E3 b/ Y7 [" G/ Y7 [
IA7,
% `- _* X0 E0 j( x( A* b: ], XIAE,O,
! d) J. |: h( J1 m  qIA8,: n! A7 @: [9 z, u
I60,D04,
  D* I( [  u% D2 FIAD,; z$ w: [9 H+ p3 L2 g, ]/ z$ r* V
IA7,
! K' T5 r4 B0 r* o# ]IAE,O,
4 n) p: M& G  q& X9 cIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
: m4 Y( G& _* N' R! O. x" d! kIAD,O,/ U) U& ^0 O4 c' m8 q3 \: w
IA7,
3 w5 N3 z4 k5 B" r9 {& YIAE,O,
0 ?" T! X. s- i, x1 iIA8,
/ y! a, B! P& y, g7 w( I9 aI60,D44,6 e! I* W& ~, @* M- M
IAD,
$ r0 W& i9 c/ }' Z  u1 S3 lIA7,
1 B$ E1 Q& n' Q8 U" }IAE,O,
$ S0 t, ]0 R8 SIA8,
$ U; C+ W9 m- u! w4 U9 B' gID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,$ u, R3 X% V: O% I" t- A
IAE,O,5 @: b, n& G8 r5 y2 o
IA8,
& y! F3 _6 C6 G& A0 g: AIAD,
2 j; }8 U( r; e, }; mIA7,
: a& z( _$ r+ qIAE,O,
( u  D6 ~6 C% P7 UIA8,
. @& ]' i( {2 q! t- z: l& \I60,D47,
5 h  j2 k& C, Z9 \; @2 ^9 T* y1 @IAD,; v8 x/ ?  v  p# ~4 D
IA7,
! `) O2 X8 {0 i' ]+ K2 K8 z, q7 _IAE,O,; S2 l1 E7 u5 k5 C5 B
IA8,/ U  i6 q' ]: Y9 ~' {& c5 o4 p6 d) }6 V
ID4,VFF,
9 B4 n; V* Y9 a  x3 Be83,C,RFA,OFA,
& O( l- G* u4 y" U0 we83,O,RAA,R00,OAA,O,O00,2 Z" }6 ?$ l2 A$ S
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
4 h2 I& o( C: Y6 UID4,VE8,O,C,RFA,OFA,
- |; [5 P) k0 G  o& C2 eID4,V00,O,C,RFA,OFA,2 R3 d8 u* j: {( C
ID4,VE6,O,C,RFA,OFA,2 f5 r. P% {# Y+ ]
ID4,VE6,O,C,RFA,OFA,
. I% f4 U+ k6 SID4,VE6,O,C,RFA,OFA,* ~+ V2 e3 l! Z) J# D1 Z
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
! p' b& F8 r# _. I+ z& ?+ PID4,VE8,O,C,RFA,OFA,/ o, H1 `: ?5 Y# O0 W# q: |
ID4,V03,O,C,RFA,OFA,
' }# D; r/ \+ r3 V2 HID4,VF3,O,C,RFA,OFA,
, b* t& Y; i0 C1 B7 gID4,VC8,O,C,RFA,OFA,+ |: v7 t1 O7 p$ I1 f- _: R; b
ID4,VF3,O,C,RFA,OFA,( A! E6 P2 H+ p
ID4,V64,O,C,RFA,OFA,
5 A& n4 b0 g7 y) V8 D+ r, \; HID4,VF3,O,C,RFA,OFA,
% C) @/ l2 C; m4 H, {# b3 c1 yID4,V50,O,C,RFA,OFA,
; ^! H+ V5 G  g, {& A4 lID4,VF2,O,C,RFA,R03,OFA,O,O03,
' C- D) x7 ]! u  r- H+ U5 tID4,VF3,O,C,RFA,OFA,
4 x( i' L  r' W7 V) j" B9 i" wID4,VC8,O,C,RFA,OFA,
' _3 Z5 d' s- b- K+ O# iID4,VF3,O,C,RFA,OFA,/ h. l+ ?6 h# ^8 E
ID4,VC8,O,C,RFA,OFA,; l  I1 F% l# |7 [
ID4,VF3,O,C,RFA,OFA,
- e! h4 ]0 ]. sID4,V50,O,C,RFA,OFA,$ i1 g2 b% W5 g  N0 S" G/ l; M+ y, d
ID4,VF2,O,C,RFA,R03,OFA,O,O03,* M1 x4 f" f) D- v' P& [0 B
ID4,VF3,O,C,RFA,OFA,, s3 E; ^; O5 l1 o) }
ID4,V64,O,C,RFA,OFA,
9 [* _: l/ q( k/ V4 P/ VID4,VE8,O,C,RFA,OFA,
+ _4 N" j: z6 r5 BID4,V03,O,C,RFA,OFA,( j2 l, f) \8 X2 N$ |, }, A6 c6 S
ID4,VF4,O,C,RFA,OFA,O,
# O9 A9 {' N1 E0 Ge83,
" _& H) u% ]0 e& j6 v3 Ie83,) ]+ j" Z7 v0 r  X$ x5 }: B
e83,
5 P: ?/ O4 t7 pe83,( g% R8 O) ?/ G1 S  W
e83,
& Q2 J* w8 T9 P3 xe83,
7 N1 h1 L2 i7 Y! E+ h- qe83,
4 F, t1 ?% J2 I: re83,( \) u: i3 @- O+ ?! ]/ B
e83,- _$ i( G$ e$ F
e83,00,C8,2E,6 |2 F$ K! E: j5 z
e83,00,C8,2E,' w/ Y8 B/ _# @! U
e83,00,C8,2E,
$ O7 f" Y" O. V/ l) c; o' B7 pe83,00,C8,2E,- l8 q2 T. F4 _" M, l& S
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,7 H( l  q; Y& ^
e83,
% V* C& w( I5 c

8 E7 ^/ P% P- d, @2 V$ O6 \- q! g  j5 g
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复7 f& M2 a$ h! b8 X3 n6 q
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
  s: g4 Q* S! b* O) f      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!4 \: g8 z. Z7 r! k% b
      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。+ ~: O/ N8 V6 z6 P. \1 k
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
5 F# T0 Q3 E9 i. mBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。% d8 v1 N8 W) v$ m4 n
Device(EC0) {6 a# E. }( T. U9 j
Name(_HID, EISAID("PNP0C09"))- b0 T/ t) w" D% B9 B, }. k) R
......  o( k* m, ~9 W7 h9 D- h# R
}
$ c0 O  D3 ~6 H& P& k6 r9 SPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,% {: \2 \! i1 r1 @
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)9 D  B- ?" `: u3 q7 `
2、   
$ z# k6 C1 ?: x6 i. [Name(_CRS,ResourceTemplate(){           
2 G  ]' V$ F. c! g- l        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
: o) Q2 d' u- k            IO(Decode16, 0x66, 0x66, 0, 1)2 d  v/ u4 i7 N% [2 l8 k6 V# ^8 |
        })
- r* h3 B; x( p' ^, z3 ]3、接着就是
% ~: e3 f  I# C( Y2 T7 [! o  Z0 t4 d+ QName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7* z8 J; o) G" E6 x
通过这个声明,OS知道EC和哪个GPE关联起来: E3 i+ a# W) k, r) D( }7 f
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
  e  E7 W2 B& E/ T8 M+ PEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。4 l9 g& b! ]0 R# L0 b( Q* M
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。4 I. w6 E; U5 E4 N+ N
3、OK,看看linux是如何处理SCI中断的" d. F( C+ U& i& \
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute8 ^' U2 i8 j! \5 d% o
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
0 ^! o( e; B. G# i; o- a4、EC接到0x84查询命令之后,就把Q事件号传给OS- ]+ @3 L) X# @: W
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
2 ]* P" Y4 {  c2 `8 [8 d; q; R/ c你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了3 `# v& M" y& ^1 d2 Q- i! ]$ h
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。4 P1 ]0 V0 o( T) ^, C
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
, Z2 }  \* I, u+ h8 J7 Nbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
( z4 [3 I% u: v, z版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 06:14 , Processed in 0.021369 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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