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

[原创]AC In/Out OS Slow Response

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

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
$ o& {0 n( C2 _. d1 c今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
% K6 b: _5 p& i2 i1 \# }! X我们在操作系统下用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的命令
$ q# D: V) H: K6 UD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
6 x. a! e6 f$ W- E+ C" m3 u7 P这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析
' r  q, i# W$ M/ o其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。' F5 T1 l6 }- S0 N9 J

& r5 [0 @% m) ~VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O," ~* R7 z5 n; p# L
e83,5 T: O6 I$ P2 o! o
IFE,
; [* ^0 l' L& ce23,oFA,2 c3 Q  x$ S6 V1 K+ w
ID1,DDF,LPC RST* Y! a- k! f' |7 L. m% f
Swrong LPC RST
9 m2 \7 c  g0 HLPC_Reset_Flag=64

$ L( g  E: v6 `( ?
- o/ K; [2 X# ^+ S% O; d& T1 tID1,DDF,. d0 F) h7 v0 U* D- b; Y( e, T
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,) @# Y5 T* p/ O* ^
ID1,DDF,/ Z  {6 D! z0 C1 @4 n; ^0 m* [5 q
I90,VED,C,RFA,OFA,V01,C,RFA,5 M4 _+ l  o) A  \
ID1,DDF,O,OFA,O,
. B% m* z# Y% b5 G6 y$ {4 N1 e2 ^e2A,>IDLE$ L! J, c5 ~: ?5 F) }" J7 K
oFA,<
! c: @6 g8 u( Z) _0 |- \e00,' {; N1 _4 a. Y% T* t
IAA,O55,O,
  o" z* Q% u& i+ M! OIAD,- g3 [- g' M% [- s& R% y  D7 j
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,1 i  V' [6 v1 c
I60,O,D65,) Z; D& L3 E% P7 P- E$ R5 B$ h8 |3 b
I60,D6D,VF5,C,RFA,OFA,K20,
! A7 Z5 @  Q5 O" K  HIAD,% W1 c- M' n5 h! p' ^# ?
IAE,O,VF5,C,RFA,OFA,K20,
- d! w2 A" y  t" D  v" u8 _IAD,2 P1 P4 A  ^) V' _+ r
IAE,O,
+ x/ w* b/ y- J. ^" A& S4 [IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
  M1 [5 ?$ y$ f+ l8 b6 E* GI60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,9 L7 W  {2 x& B; S
IAE,O,' r& ]& R8 X. Y3 d' u7 P" Q
e91,d2F,d00,% d2 S9 ?" V! v9 n1 e9 [
e10,d83,d2F,P3_K#% J( m$ P) J; J* |' I
P3_K#

4 i1 H/ l' u5 E* _+ w% Y6 L* Q& ]
e23,oFA,
8 b1 E) O/ m1 }4 II90,VED,C,RFA,OFA,6 P% _4 [8 I0 U
IAD,
2 B0 M! `& j/ ~- o( U5 |4 c6 m" H; t8 qIAD,O,
( B% G' k1 d. A; p! b/ XIAE,V03,C,RFA,OFA,
' K1 U: u! b; M- d* F/ y( t; d- |IAD,
4 J; K( q. y% s1 l" B' s) X6 VIAD,O,% X) b( D8 M/ p1 w/ U- U3 s
IAE,! W6 R7 S3 @0 ]4 n+ ~* \/ E! O
I90,VED,C,RFA,OFA,% z% x( R4 D' ?  o8 v. ^
IAD,
* A7 i+ b$ ^0 ^0 p3 \& }( W( yIAD,O,
0 @$ `1 L+ c5 n2 qIAE,V05,C,RFA,OFA," X0 a8 J! J' g2 u
IAD,; h% w* F: e( Y
IAD,O,0 \3 q1 Q$ |9 P% `3 B- A( U! V
IAE,O,
6 E' M3 G3 h- Fe90,d2E,o00,
0 \" P, n* u- T: ^) H% R+ j' Q$ se91,d2F,d00,P3_K#
9 W/ S. i9 F9 i& zP3_K#

, V% T) b" P- r* A, W8 \: B+ [0 k
4 u& _2 Z+ P, {+ ]IAD,VF3,C,RFA,OFA,
' ~2 C+ I" j, ^5 aIAD,
9 y- g2 \% j* ]  `' QIAD,O,
" c) I, a) p' \4 cIAE,VF3,C,RFA,OFA,
* c% o5 E) u1 S3 Y* k- Q5 zIAD,
) a  S$ U% ]7 `IAD,O,
5 n+ J2 f; W3 O- T3 l  j4 pIAE,V20,C,K10,RFE,OFE,K08,
+ m) P2 l  F5 o5 c! LIAD,4 u  \2 ?4 ^# j; R5 a6 ]& K, B
IAD,O,* I( o) _: C' N# I
IAE,V20,C,K10,RFE,OFE,K08,
0 D6 H! V% A2 d/ d9 bIAD,
6 q! }9 B5 i, K- m6 T" KIAD,O,
- z2 }  A, }3 R9 _2 ~* Q! K9 H# mIAE,V20,C,K10,RFE,OFE,K08,  v5 a: w- {2 `( u) B4 |: P, m. o
IAD,; t6 d: s9 j9 G% ^
IAD,O,. }  B8 y1 L) b! x! A2 p# p3 W& `
IAE,0 T* a& ?6 g( Y
IAE,VF4,C,RFA,OFA,! Y4 i# H# \2 W0 _8 N% q
IAD,  w. C3 U& K: `( a8 l2 x4 |
IAD,O,
/ G: C5 T  _- F  P" s8 n! yIAE,VF4,C,RFA,OFA,
) i* v$ N7 {( A% h. FIAD,
1 I. }" s+ ~$ G6 t4 fIAD,O,4 x4 _& v  B, @4 U1 S* P2 f0 J4 N
IAE,VF2,C,RFA,RAB,R41,OFA,
5 D. l2 |# x! n# S0 JIAD,
1 y% K) F6 u% Z, e2 b% k9 NIAE,O,OAB,
2 X8 g2 q3 b0 |IAD,
' ?  J, t' \0 B/ h( iIAE,O,O41," I7 e# g9 x$ K$ D
IAD,( x# S- e$ M4 X# p
IAE,O,VF2,C,RFA,RAB,R41,OFA,
4 o% c9 R* s0 l1 }IAD,0 M' @  ?4 U' }* X( ?
IAD,O,OAB,
$ e/ ?1 q% m5 A# z. H7 bIAE,O,O41,/ R3 ^- Z- `% O! t
IAD,
8 X3 \% K# [# m4 W/ y1 R1 BIAD,O,% N; d+ W  c3 [) }  i5 h1 m! x
IAE,VF2,C,RFA,RAB,R41,OFA,' U7 t+ p% I7 s5 x
IAD,
$ R" |7 {* v- g( BIAD,O,OAB,
3 i) P" e  x4 PIAE,O,O41,
3 c4 a5 {8 z8 _# k+ U( _) @IAD,, l! H3 F- [! |8 x# n/ c5 \
IAD,O,4 P3 D( m. V9 Q! H. d
IAE,
+ w8 e( N( f0 D; H- UI90,VED,C,RFA,OFA,- B1 o; q/ F2 b+ i
IAD,; o" w4 x" B! z2 ~5 u2 C1 n3 T
IAD,O,. S6 H+ D' \- O, A: J2 k1 _1 F
IAE,V00,C,RFA,OFA,
1 |% c0 B! j+ D3 M5 [IAD,3 P4 {, F+ V7 @) T7 n) f, U1 v
IAD,O,
0 H4 K) g  U7 d, ~0 WIAE,6 P9 d8 @. T, M+ C7 p; N
ID1,DDD,- X3 r3 M7 v3 `9 x# ^
ID1,DDF,
& L9 T$ @' V; T, v7 nID1,DDF,
% `/ v1 e; c8 J, g6 `e22,oFA,
. s; j* Z2 Z; _! ge83,! t' S. _9 W3 ]! V' I% ^3 U. _
e83,0 m/ _+ X, S2 z6 m9 @4 i
e83,2 F; k% S4 w* Q' X  Z
e83,/ k+ i+ I9 N6 v0 b; W
e83,& Y- p8 l/ E8 N# p6 K6 @
e83,
( ]/ u1 |) _$ Te83,5 M1 E( k8 u  s! A
e83,
8 \! x6 S. J8 I) q- t5 Pe83,' b$ v/ r1 k, Y
IAD,) D$ `0 |2 P4 {0 y0 g
IA7,
9 Y8 b2 M) ?4 ~/ W7 }% M! dIAE,O,2 `/ `+ c% c& i% h
IA8,
' T. ~1 I2 K/ m2 M4 K! J& T7 ~I60,D44,% M6 J7 r! ~7 W! T0 r  Q  f) u
IAD,. u1 }1 ^" U. a" R. X
IA7,
, [9 H4 Q) y4 R* B0 ~. dIAE,O,
/ Q4 N( e& B8 g$ v, A2 PIA8,VFF,C,RFA,OFA,RAA,OAA,
$ \$ O0 f" [8 jIAD,O,K20,
2 A4 y7 C( U: r& e5 sIA7,0 ?5 o1 @0 F0 V8 f
IAE,O,
6 i! F+ L( m: Z- ?% k8 jIA8,
' C8 l' Q; }2 _( \$ FI60,D04,$ ]- F  n. F' @$ v2 N/ a* V9 o6 e
IAD,
3 o. s) }  b# KIA7,
) B8 A) F; L0 X% @, ^IAE,O,
7 N. U( P5 s$ E+ r, G5 fIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,' V& o+ T) x- G' t$ f4 T
IAD,O,) S# b' B1 _  s0 E2 t
IA7,
& D$ C% V6 a0 {0 O5 zIAE,O,: |9 K- u8 ?( f3 z+ k6 P1 u8 i( w% @
IA8,
6 o/ i1 ]- u/ S  z) I- V7 pI60,D44,' p! l' R& d% ~* o% K# ]
IAD,
2 b/ b5 D  Z4 p0 ~IA7,
9 h" d! O7 d" g2 kIAE,O," c" x5 m8 ]/ y- r7 a. D* B5 f
IA8,% I! E- E$ Z  g0 @( Y2 J/ Z
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
& E. r  z: k1 K9 `+ JIAE,O,, j# z8 y, ?9 n3 I9 F
IA8,
7 }; N( I# D6 C6 h- \IAD,- t/ J$ {- q# @. m% J2 Y5 d) Y) V2 m
IA7,
1 `" V% H4 z( |+ [# o" X+ dIAE,O,5 o. H3 K1 U6 U* e5 P7 q
IA8,0 Q7 x& u$ B* f; X! E* d
I60,D47,
+ S; r2 Q7 m9 k( b! ], B& t% ?IAD,4 i' P- J0 j) `1 e: W7 O) @- N
IA7,; w/ @$ E, R6 v3 h# K; D9 Z4 K. B) V
IAE,O,
& v5 ?3 I. M1 [: gIA8,
4 C- g& O& h2 F8 l- e$ B- o9 UID4,VFF,! T5 v* z8 H1 V" `
e83,C,RFA,OFA,
6 V, X" m6 n6 }0 ~% P" r$ b! be83,O,RAA,R00,OAA,O,O00,
( m7 v( W7 E2 t6 |  zID4,VF2,O,C,RFA,R00,OFA,O,O00,
1 k& Z9 u2 m* z# uID4,VE8,O,C,RFA,OFA,% x; x0 Y  D5 r. g' V2 F
ID4,V00,O,C,RFA,OFA,2 B- s: y# R, ~; B+ [$ @
ID4,VE6,O,C,RFA,OFA,: K6 e- r; M# @
ID4,VE6,O,C,RFA,OFA,
4 V+ C- p  X3 S  E+ r+ N$ Q) YID4,VE6,O,C,RFA,OFA,
& [  k+ T9 I( o" zID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
; m( ?( t/ [* }  V* e; GID4,VE8,O,C,RFA,OFA,  c# f  N: ?3 f2 k$ W
ID4,V03,O,C,RFA,OFA,% w$ U% y; N; w5 b! ?% p* f
ID4,VF3,O,C,RFA,OFA,
# }9 ?9 [0 O; }" O, IID4,VC8,O,C,RFA,OFA,
; L9 C  h9 K+ D9 O  u) D7 O6 X: mID4,VF3,O,C,RFA,OFA,/ ~3 _7 G( u1 k1 z8 b
ID4,V64,O,C,RFA,OFA,
# K* S. k$ T5 o! Z8 v, r! |ID4,VF3,O,C,RFA,OFA,
$ W* e. z' l  K+ x9 h, z- u; h: \6 kID4,V50,O,C,RFA,OFA,
1 B; s% z# U6 x! CID4,VF2,O,C,RFA,R03,OFA,O,O03,
8 [9 _4 l+ K% M1 nID4,VF3,O,C,RFA,OFA,
" F$ s1 V7 y* ^- y* R$ ]ID4,VC8,O,C,RFA,OFA,
: m, s3 b8 _! K+ @' UID4,VF3,O,C,RFA,OFA,5 O2 I) p0 \* v5 S$ K" y& G
ID4,VC8,O,C,RFA,OFA,
  y, J; N, |4 y" i& S$ p( pID4,VF3,O,C,RFA,OFA,
4 K% e* }2 W$ N& m* jID4,V50,O,C,RFA,OFA,  e' g. w/ T& F: ~# P. p
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
5 c0 {! B. b1 p( ~& sID4,VF3,O,C,RFA,OFA,
9 x; q+ v& e" x; {  Q! wID4,V64,O,C,RFA,OFA,) ?( k, ]5 c. [, z
ID4,VE8,O,C,RFA,OFA,# I) p. N+ }! R4 Q
ID4,V03,O,C,RFA,OFA,# _, m% o5 K$ ?( V! _
ID4,VF4,O,C,RFA,OFA,O,
' U! J/ q! v5 w* E" g; o, re83,
, Q! U8 O: M' |& x7 `6 C# N: Je83,! Q9 |* c; b: R; C5 {
e83,
" S, I  q1 T; V- He83,, t; u$ k! i! i0 U+ ]
e83,
  {" n' Y( e1 M4 te83,
% g' ?3 O% K( x# H! H4 Le83,
6 O9 H3 K. _) x$ q1 S) a4 S& |e83,
; A  v2 e+ x0 v0 \5 R2 t5 Re83,
3 Y- J# i, K1 u1 Te83,00,C8,2E,
0 N8 L9 G2 V- `; Ae83,00,C8,2E,
$ u. _+ R& `; S& O2 q5 K; D2 me83,00,C8,2E,2 r2 }( @5 w# v
e83,00,C8,2E,
: C! }+ _  g6 c2 O2 p7 _, y' `) te83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,' `5 p1 U0 O: b! b+ j7 T2 z
e83,# {5 o  N: T0 }! H# Q- {! n: Z

- X# I0 Q! e2 C0 H5 Z
  E5 j" [6 X! ]" i[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复
1 `% L" {* |" O( [) _; g: p0 E     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。, Y( l% d1 ~) I- }1 N7 N7 A
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
: ]# V. u7 O& n* \      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。3 |2 p2 q1 K' y) E
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!
! m1 i. G' ^% \2 B7 m9 \/ `; oBIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。. `  q* m+ J8 r' \+ G9 G! Z" m/ F0 A
Device(EC0) {
  D0 P  ?3 G8 ^; n9 E# G7 RName(_HID, EISAID("PNP0C09"))
* D! N1 n& T7 p; h......: e$ T! {" c, s4 e
}. ~8 M" U* ]5 N+ A3 L
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
, X% v& E! _! C( w. j9 T; {7 ^就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
9 N6 m7 ?- `: s0 I0 o- G9 [6 V2、   
& p) P6 K# O0 i! t: iName(_CRS,ResourceTemplate(){           0 y. F# z1 T' }
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84+ ^& m) p) v. U! J9 |3 r6 d
            IO(Decode16, 0x66, 0x66, 0, 1)
  E; C' r* N1 Y9 N' |: v5 ^        })8 U2 O4 K/ i# R, [
3、接着就是
* f( T$ L; G& O3 ?. W' }/ yName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
8 Q1 ~, T6 m  w通过这个声明,OS知道EC和哪个GPE关联起来  @7 X) C4 z, }4 o" P/ s
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
) R  ?2 r/ C% g( i. vEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。# S5 w' E' ^9 T9 i. y- I/ z; @2 s
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
% g' Z! V! g, N  u3、OK,看看linux是如何处理SCI中断的
3 l8 ^" G3 \" C6 @* Qacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute$ T* M% Y7 u; q/ l& @$ ?) m9 W
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
) L6 p0 G* [' W: J/ `4、EC接到0x84查询命令之后,就把Q事件号传给OS& N; b: j( s+ C& z1 {: _
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
- G2 v6 L7 S" T9 m4 G6 o* O; z你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了& O& P( j9 V, `% \
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。- O( z& N+ t  ]' j/ _2 o
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
8 z& x2 C% U* `# L, {% e* nbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。" ^, h+ G2 Z' q: J6 B
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 12:32 , Processed in 0.057755 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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