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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?# l0 H! z, N, u3 N
看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,1 k; F1 J1 G; G& ]+ B: o/ _6 m
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
( R2 {: w8 K1 W! 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的命令( Q! ~* w" I; H" B% E; {# [
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
2 ]8 n5 B" A4 ~$ U这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析- g6 _, d/ `6 P: `4 A1 P' ^
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。8 J2 K' T8 a9 P5 T( K

0 A$ c1 N) x0 lVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
7 ]: g' O) m# n  ^e83,
. x9 C; [! f9 z: VIFE,
4 B, A5 c, E  v1 W0 ]2 Re23,oFA,2 x% i9 M5 m3 z; Q+ W
ID1,DDF,LPC RST8 }1 D2 ?9 y7 x5 _$ J
Swrong LPC RST# r5 {0 t$ ]/ ?& J
LPC_Reset_Flag=64
  Z# x  m( m+ P0 Q3 D  }* x; t6 d$ P
" k! p3 X. b- B5 y( q, ]' S0 y' O
ID1,DDF,
& B1 j( g* w% D, \! P" TIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,% K* w* N: U1 }8 x" |5 T& E
ID1,DDF,: u9 o$ f3 C! K7 e7 B
I90,VED,C,RFA,OFA,V01,C,RFA,
3 l+ A* B! E+ T% G$ [ID1,DDF,O,OFA,O,  F! J/ H0 @2 S3 u5 n, v
e2A,>IDLE4 J; S6 ]- j& V' ?
oFA,<
) v9 G2 N" D/ z, |4 V$ x$ z7 b' K8 He00,
, z0 K* b; g) I% z6 Z& E. eIAA,O55,O,: s# }2 ?1 |1 }: x
IAD,) r! P7 |. w& _# {1 O
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
8 }; m4 f; W& hI60,O,D65,
# Q* p5 m5 B7 xI60,D6D,VF5,C,RFA,OFA,K20,
7 u2 \: U; i) E8 K3 h& KIAD,
. I, ^  @! k8 p' \IAE,O,VF5,C,RFA,OFA,K20,$ W* X3 T0 @$ J2 I* z
IAD,) W7 d: t+ J" l& q8 o4 C
IAE,O,
, f7 |* D9 G& _( D+ C( E& hIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,
( C# j- j) y2 ~/ I" _I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
% ?- C) J$ H3 b( r: b1 DIAE,O,
' c- I9 w3 m3 [* q' Ye91,d2F,d00,0 g6 |: `, `3 Y) l6 x8 S
e10,d83,d2F,P3_K#
, G, T, [: f& H) z: K& {& P( y0 q9 O: FP3_K#
6 [4 i1 Z1 |" _. I! M: L

5 f: ?. C% M3 I; V( ~+ f3 m4 Be23,oFA,2 `8 V0 |; H0 l9 s
I90,VED,C,RFA,OFA,6 w/ g1 v% v: K  M5 T! z7 l( \
IAD,% I* b! B- H1 O0 o7 |, x6 Y) z1 s
IAD,O,
2 a7 @. p" e+ s: x( d. xIAE,V03,C,RFA,OFA,+ U. {; ~8 J- X8 |/ U
IAD,( K0 Z7 X- [, l8 ]1 m: w# \
IAD,O,8 i4 H8 J4 @5 V) O3 S
IAE,3 b% p) q/ y3 Y) Y" ]2 l% T% T
I90,VED,C,RFA,OFA,
% W2 Y% B! e, @* ?IAD,
; n; n% Z+ @, l8 r& m) K) PIAD,O,2 d  v( f) H6 n6 w# W
IAE,V05,C,RFA,OFA,
4 g, T3 ?$ i; ~$ z" L- J7 W" u" EIAD,
, ^7 \$ d+ c# E( ZIAD,O,
) o4 N( a2 u. Q. p* EIAE,O,. c) b0 X9 f* X$ Z% r! z
e90,d2E,o00,
! ]& f: H1 t6 Ye91,d2F,d00,P3_K#
+ D" y5 O, F* @- p% aP3_K#
. ^, k( a* U7 \

' x( @+ a% P( U- V$ ZIAD,VF3,C,RFA,OFA,
* _: D  ~( J$ \2 t$ }, jIAD,1 o& B& J( S/ i0 P2 a% ^' ?% j- Q
IAD,O,7 p4 ~7 G: ^& E5 z) t
IAE,VF3,C,RFA,OFA,0 c2 k5 I8 v) Z- M
IAD,' h" ^! U' l& J5 M, s; |! f+ _) v' v6 ?
IAD,O,
$ u. L& @- x* {IAE,V20,C,K10,RFE,OFE,K08,* o. _5 B( Y4 M2 B& A7 [* W, b
IAD,6 U% }0 x6 x& P+ o0 X
IAD,O,
  s) f9 [8 n- nIAE,V20,C,K10,RFE,OFE,K08,2 q  s# o0 B9 q. N, f! h
IAD,
5 X$ x0 `1 c+ P: ~9 U* \IAD,O,- b, ~) g! O( h8 d. v
IAE,V20,C,K10,RFE,OFE,K08,
1 I* ^) D" k, _+ z. nIAD,
" ~% E1 _; b2 A9 [6 \IAD,O,
$ j# e5 ?: E) k* e+ vIAE," R1 s5 ?5 F; a, g; e
IAE,VF4,C,RFA,OFA,/ h+ p5 a! B0 w
IAD,1 c- |: j1 p" Y% H% [2 u  T
IAD,O,+ Y0 G8 S4 V) r: _+ o
IAE,VF4,C,RFA,OFA,7 ^4 c8 X% ]9 U4 P+ S8 L5 p
IAD,
# y# N; _% u$ \6 d. o: T: JIAD,O,8 y) u/ L" b9 @) k: z
IAE,VF2,C,RFA,RAB,R41,OFA,
4 {6 O# I5 o% z& m6 j$ v2 V6 bIAD,
; x7 c. V* ?" K$ ]1 x4 ?! CIAE,O,OAB,+ L  K: E, X: D( a( g/ J/ \% P
IAD,5 g" O* f% f* n8 @7 J0 t
IAE,O,O41,  y0 F! K+ t' x# R
IAD,
4 @3 c9 C4 a. h& i- ?; z5 FIAE,O,VF2,C,RFA,RAB,R41,OFA,( D8 p# @/ L0 T! z& a7 \
IAD,
$ t( t2 Q, i! R$ S" k! WIAD,O,OAB,7 I4 I. T* A) t2 l4 c5 n0 o) L& @
IAE,O,O41,) w0 d# m+ }. o) {
IAD,8 w. {5 S; [$ X( `
IAD,O,: u0 ]) u5 ~( j' f  `1 l  q
IAE,VF2,C,RFA,RAB,R41,OFA,' d" |! e6 l$ R5 G  y
IAD,. }9 ^6 j& o2 b7 O5 N) n+ j
IAD,O,OAB,# x3 t8 j' d; g0 Q1 h: Y+ y
IAE,O,O41,
1 r* w3 S' q3 a% I  H: _4 \8 Y, a: eIAD,1 h7 n0 m/ q. [& S. j% L1 \
IAD,O,( |1 D$ G% J1 Q7 g  N0 R
IAE,
1 [. }) S6 }) MI90,VED,C,RFA,OFA,5 ~0 g8 }  d+ J! [! l5 b; u
IAD,
9 n/ _3 e& B8 [9 ?- N; N( ZIAD,O,
' }6 f; w; S3 y/ l+ |" ~3 `IAE,V00,C,RFA,OFA,
1 O% A, ]9 f, W5 S# [1 X; X2 XIAD,, T% x- o! t* f7 X
IAD,O,
0 m. r6 @' o9 ]IAE,' j9 }! M! e; ]( v
ID1,DDD,
6 H3 |& V, a' t* }ID1,DDF,) N9 b4 m$ H3 ?! h! e
ID1,DDF,/ f  H# y% Y" @& J; ~$ o
e22,oFA,4 m1 C/ }' v& c+ L& L( L
e83,
3 _$ U7 M5 [7 Y! {( a$ q9 k* ue83,- Z+ s5 B) g" o' t  g1 A$ X+ j- {5 s3 N
e83,' t$ _: t& u6 x: |2 N+ G, M
e83,* g$ t- ~1 }5 H# W1 q
e83,7 J, P2 D# o6 i% f$ z8 Z
e83,* B& ?* @* K( k! u
e83,* V+ w) ^( o3 w' E  Z
e83,
- G7 {7 E( Z& Qe83,' W# h5 z) W- I* X* V
IAD,1 P' ^4 V, g9 z& f7 |. ]7 s% J4 n
IA7,
" ?3 |. |" u5 n* x/ aIAE,O,. [" ]3 `& c5 l3 S3 v+ J# q$ R
IA8,
* e, \* B9 i! P( QI60,D44,0 Q- Q9 ~9 z' C' L7 U3 Y
IAD,
5 e- L) k- B" P# Y5 v7 ?! ~IA7,
) Z, O8 T& C; uIAE,O,5 C; W0 {3 F: e( `% f1 h
IA8,VFF,C,RFA,OFA,RAA,OAA,9 m( j! n: `+ r
IAD,O,K20,
% i% r, X4 `- MIA7,8 L& q2 l7 M6 a+ F. @$ o
IAE,O,
" X$ p  i& U/ e) T, j+ KIA8,
$ Z; t$ i# ]) v, X2 z8 e% WI60,D04,
9 h" d/ M* G. s3 `* EIAD," W- R0 P7 E6 k. [
IA7,9 j" v9 ]7 `4 S4 @, k4 O6 |  V
IAE,O,
$ N) }* x. {% b3 Z+ sIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,& {& b% J3 x0 g3 i4 d% G1 @
IAD,O,# b1 c1 G$ S( |  e, e
IA7,! D& l7 o# i& l& n" K! k) E5 W
IAE,O,1 R& b1 X+ ^: r/ |  Z
IA8,6 ?8 r, P4 m: [0 {4 k% U# F) {
I60,D44,3 p( R) F1 `, q
IAD,' I( n, A6 C# b4 P" J) _+ |# n
IA7,
9 T' _, }% M( v" d9 ^+ \IAE,O,
/ w  x: o! T) n$ \9 l6 lIA8,
8 p% t& ?8 {4 RID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
% p0 {7 t9 K5 G3 C. W6 U# WIAE,O,
/ k) W& m& v1 u4 d5 F- a- vIA8,
% I+ u9 |. V. ?, u* z, X" }7 g6 b! WIAD,
) ~; d8 A# T# G8 J3 oIA7,
/ i6 S8 d) N  c" g4 z* t3 ?" HIAE,O,0 e* _2 P' h! N" }* W
IA8,0 G1 W; u, a; _* `
I60,D47,6 u& F% A4 g) ], O1 Y) b
IAD,
0 d' ?* d3 L. F6 Q$ m, Q- GIA7,
( g, |9 ?7 S  l4 F5 mIAE,O,7 q: W$ d( S8 Q2 S# N
IA8,
& c. d, E! O) ?* ~* y6 v& q( lID4,VFF,
# L6 ~- j" e8 o, x# {& Ge83,C,RFA,OFA,
* m$ Q8 ?" s; V( H# a3 {/ c% X( S* y: \e83,O,RAA,R00,OAA,O,O00,1 W5 H1 k% k' @
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
2 l2 B) ~' ~' F- I  r/ d9 n6 {ID4,VE8,O,C,RFA,OFA," d0 H4 O4 r4 _1 w
ID4,V00,O,C,RFA,OFA,
; o, s7 S; v8 f5 j5 c. LID4,VE6,O,C,RFA,OFA,
1 _; v8 K. K+ oID4,VE6,O,C,RFA,OFA,
8 o! G+ A  E7 Y9 CID4,VE6,O,C,RFA,OFA,- I6 R* h9 o& R7 u3 b
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
9 }0 o  f. ~: r7 Y) E3 H. `ID4,VE8,O,C,RFA,OFA,
+ w, L( y6 `1 D7 D- v  qID4,V03,O,C,RFA,OFA,& u) e2 U0 b/ c5 D* q! ?
ID4,VF3,O,C,RFA,OFA,% s( f+ ?" ~9 y* ?! T
ID4,VC8,O,C,RFA,OFA,
; J+ {$ ]5 G# [1 v' U! w7 dID4,VF3,O,C,RFA,OFA,
# x3 M, R3 G3 H% [- r. ?, BID4,V64,O,C,RFA,OFA,
4 V/ ~3 T$ T# r. fID4,VF3,O,C,RFA,OFA,2 J8 y% w! z: w! J9 e
ID4,V50,O,C,RFA,OFA,
+ K" S/ {4 _( b$ o8 yID4,VF2,O,C,RFA,R03,OFA,O,O03,, D% \) j( V# q& }7 h
ID4,VF3,O,C,RFA,OFA,, L; Q8 K3 M4 k8 a# \0 Z
ID4,VC8,O,C,RFA,OFA,
6 p! E0 w! s- `- a8 ~$ m) bID4,VF3,O,C,RFA,OFA,
3 D. W0 g, i$ L( t( K$ X8 I  NID4,VC8,O,C,RFA,OFA,9 s) s& Q8 `3 x- U; ?6 G
ID4,VF3,O,C,RFA,OFA,1 C7 r9 a6 H+ V0 l
ID4,V50,O,C,RFA,OFA,
( K9 x' D2 [  w5 j$ L% O7 o; K. D; kID4,VF2,O,C,RFA,R03,OFA,O,O03,
- m3 [! r6 W* v/ BID4,VF3,O,C,RFA,OFA,5 b4 u0 ?8 I! m, |: h
ID4,V64,O,C,RFA,OFA,
# U1 f3 u; ?2 o) BID4,VE8,O,C,RFA,OFA,
( d  e, k; V/ ]- U9 l' ~ID4,V03,O,C,RFA,OFA,3 h. M, L9 S8 [9 T
ID4,VF4,O,C,RFA,OFA,O,
; b! u/ H2 ~) k* _2 D; z* xe83,# G& j: K2 G) e: R, z; E
e83,2 H9 o3 c2 \; M0 E) j
e83,3 F5 T) I6 {9 {% M" R! `/ U: J
e83,
  _8 p" h5 K" ee83,: M1 I/ L& b! k* p" E* R1 }1 w
e83,' C' H( z+ C, e1 o/ y0 @
e83,% h/ R# |) w- o0 W, o: n
e83,6 V7 l! _- j) {
e83,! `2 w# l7 F; e( E/ q1 E% b2 T
e83,00,C8,2E,
$ O3 V2 }1 g# B6 ue83,00,C8,2E,
- P8 B6 z4 i0 fe83,00,C8,2E,1 x- K$ z( d5 W8 q
e83,00,C8,2E,
. F. f9 O5 g0 I8 O" @" fe83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
+ g) q3 D6 a9 |5 y( O5 Me83,/ @; r7 l7 \# H% e. E0 G( z

3 T. j6 N( f& |3 ]
8 D7 N% U$ R6 @+ X[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复9 Z. S! U5 e  j. G' j' B" Y8 `6 d
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。% b4 X. m- U3 \' b  J5 `5 X+ m( x
      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
5 O" i0 }5 }! t& s; @# z! Z; R( r      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。, y# M8 |! A+ R; f: `; u" W0 d- P0 p
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!6 l4 D) v! u/ w7 R, N3 b
BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。( J( H8 r5 I. P
Device(EC0) {5 f$ @! R& f4 M0 \$ v) \
Name(_HID, EISAID("PNP0C09"))2 `4 d  y$ V% h0 d: h& U7 |; c
......
9 m7 N: }8 g" Z$ b- P. z# e+ o( S4 F}  o( }$ L& W1 s7 j
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,8 P" o, a0 @7 X
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
5 [7 y$ J% g2 ]' P" h7 ^2、    8 m" V5 k1 y1 U/ z
Name(_CRS,ResourceTemplate(){           
: c" v  P7 C  c2 C2 a5 [        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x848 g4 `0 G, s6 F) M5 R/ l
            IO(Decode16, 0x66, 0x66, 0, 1), f$ a; r! w4 F' G
        })
& n, N- z& U& e, p. J1 [3、接着就是
. M5 y6 |/ C! q& p1 [8 u3 rName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO76 K7 r1 e+ m3 U. d$ m* o
通过这个声明,OS知道EC和哪个GPE关联起来) O5 Q  Q- s- ~
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来8 ?& @8 Z" u; [  N( o1 y& r
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
7 Y# v* l/ r; t3 ?而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
+ A7 n- k; s% g# V4 f& t* O3、OK,看看linux是如何处理SCI中断的$ i' n7 Y+ N: y6 r9 d6 h* N
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute& E' @  r% v1 _8 P4 v- M
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
; h+ s. ]& F/ g) [2 P# i4、EC接到0x84查询命令之后,就把Q事件号传给OS
; M( u6 T' z- N' X8 s! M- OOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分* u: z; X+ I* ^. G! D: d! M  o6 _
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了2 v2 B  S9 W! \2 X. ?
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。2 A4 d- l- K8 @
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
/ S4 f* ~( b% w. J! kbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
! z2 Z: H6 Y+ a. M* @版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-11 16:02 , Processed in 0.052610 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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