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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
; _' G, C" s2 p) Y! a3 k5 M看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
2 i1 d$ @* Q. V8 U3 D0 p$ F今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
/ w, C8 m" Z# b6 N我们在操作系统下用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 E! f) `: w3 Y( Z) ]D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check. i( p7 v- s$ e( v% \4 h4 _% u
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析1 ~% d% D/ O1 o5 A- C0 `. Y: c' \5 @
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。1 W- s" x/ ^1 w$ N
0 x. ]  g5 y- \  h, F  O
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
& z: I; {3 b" J. he83,+ {" D+ r4 W3 O6 q1 ~- b
IFE,( Y* j, g6 p+ W& r
e23,oFA,4 i2 x& [: }& o; Q( Z
ID1,DDF,LPC RST
1 x" u" `: D7 S8 H9 @Swrong LPC RST
* Z$ ^$ \( e/ z- l, ^LPC_Reset_Flag=64
( y. r3 |  s! B, `7 h+ g4 w

0 _1 q9 P; ?& D2 n4 fID1,DDF,1 J* c. x! N$ O$ K
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,' R' }7 j/ ^7 _' L* n
ID1,DDF,
9 e" r6 {+ Q0 K, Z% eI90,VED,C,RFA,OFA,V01,C,RFA,$ j. Q$ ?0 J) j+ D0 ?$ e& f7 W6 z
ID1,DDF,O,OFA,O,) y( N( T. t# Y6 h# `
e2A,>IDLE
$ S3 `  N& K  poFA,<( s, `5 }+ ^* Q5 e3 g
e00,$ ]7 T. [6 Y  E& ^  s
IAA,O55,O,8 Q; L. e5 q5 c6 G" A2 l4 h
IAD,/ ~/ P/ r2 w) S6 h& k' A8 d
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,; h, Z6 @9 n% ?3 b
I60,O,D65,4 p  |9 k7 o6 [2 [, T. @
I60,D6D,VF5,C,RFA,OFA,K20,1 v, S0 }! g" W  b$ G4 {2 x1 Q
IAD,
& k" \' Y. U$ q  c4 L/ f% sIAE,O,VF5,C,RFA,OFA,K20,' I$ Z+ w  n  ~, F& a
IAD,
/ B, a; T6 J# _! Q2 J3 E2 \, _IAE,O,/ c! u- T5 l2 i8 ~/ n: h
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,* |2 ~& h! X) U5 j. A/ j# F
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
7 b1 U* X3 L6 \% \6 ZIAE,O,
* _/ r( v4 C( ~3 ?! V: s! V7 ^5 M8 ]e91,d2F,d00,! y% I& ?8 [7 g4 X
e10,d83,d2F,P3_K#
# @9 ^3 a+ f+ p- K6 dP3_K#

0 W# v- M0 y# I- t9 l* F. E  k3 P" w. p9 V7 Z0 [) f
e23,oFA,. f7 g2 v5 W0 w& S4 ^
I90,VED,C,RFA,OFA,/ S) @, A0 Y, T0 ^' `4 }
IAD,/ ?5 p+ E. A, p, q( k5 Z! v! l. F
IAD,O,
9 a* U7 N/ l0 ]1 M7 |1 t( j1 fIAE,V03,C,RFA,OFA,8 d9 k# T. G% m' l* V. G
IAD,
: r6 z. k) m4 ^IAD,O,7 R/ }2 p0 d& Y* s
IAE,
- |8 a* }7 T7 Y# T* s: K+ XI90,VED,C,RFA,OFA,
8 E; P4 K+ _" oIAD,
: i, f% \" g; rIAD,O,0 R/ o  c0 E0 @2 \9 U( i# p  X
IAE,V05,C,RFA,OFA,
2 X! l: X8 @( S& G9 a2 ^IAD,
( F$ j0 F! b$ o: k9 o( }* o5 zIAD,O,3 W% ]5 N5 Q( e7 J* W8 e
IAE,O,
5 z& c# ~$ B0 G9 \. I3 }1 ue90,d2E,o00,
9 s1 p" q# M/ F! B& q" Se91,d2F,d00,P3_K#- l1 ]% ^8 w4 p2 {* g7 g6 B
P3_K#
! ^! \+ ~5 H" {6 j
' K" u" B5 v; D( p
IAD,VF3,C,RFA,OFA,7 U( r& {  e: G: t4 g' Z
IAD,) _2 h4 J  P# N9 b- j
IAD,O,0 V& m7 c, g1 ~/ z
IAE,VF3,C,RFA,OFA,: P; p& \5 d. C9 y3 M5 c: J
IAD,
: I5 d9 s7 q2 ~& ~9 x4 Y' |8 N# gIAD,O,
( \/ S. z0 Q3 F7 SIAE,V20,C,K10,RFE,OFE,K08,
6 K6 V+ k$ r  aIAD,
2 x2 `* b. q5 q! d: J8 [IAD,O,
/ G6 J- `. z  vIAE,V20,C,K10,RFE,OFE,K08,/ O0 v2 i4 S' C% |' e' \) ~1 U9 {
IAD,- \9 o4 w+ `$ G3 j
IAD,O,
# o- f( D+ d% K  v7 I! SIAE,V20,C,K10,RFE,OFE,K08," P0 r% w' {+ d# D( @. b
IAD,
; \- ~) P: H: {$ ]7 MIAD,O,8 f. z' ^3 z9 m
IAE,* Z# Y" m9 U2 m. O* q
IAE,VF4,C,RFA,OFA,
, U% s) ^' v3 m& GIAD,' I6 H. j" |/ v/ M, V1 A
IAD,O,
* L- g5 a0 h, b# H0 z  q9 jIAE,VF4,C,RFA,OFA,$ p+ s4 M0 p3 G, S4 T* Z
IAD,
# V, R" U9 j  IIAD,O,
, Y9 H$ y, O' _6 f! lIAE,VF2,C,RFA,RAB,R41,OFA,3 @. D& j: ?- C8 x% N* }! q, r1 T
IAD,, F) V4 ]. @% ^2 R5 w2 g4 h
IAE,O,OAB,7 ~# M3 R& O! v7 P, g! b% |
IAD,
2 p2 n& c, F$ }- sIAE,O,O41,
; l7 L* d' R) W6 bIAD,* O; E0 H% j; t2 z
IAE,O,VF2,C,RFA,RAB,R41,OFA,( f+ u! _2 R/ v9 ?/ q/ v$ P, u
IAD,
+ l1 n2 D1 W% z  x  MIAD,O,OAB,3 i& D3 \. |. L) j3 v1 Z% O
IAE,O,O41,6 [; f8 d" K2 E1 Y
IAD,+ W& t. i, I# {/ ]6 ^
IAD,O,3 p( c  S/ I3 P
IAE,VF2,C,RFA,RAB,R41,OFA,
. @9 y6 M* K$ X$ L, a0 jIAD,6 j3 h! Q# ?! h0 l' y. m
IAD,O,OAB,7 t$ L6 }% l# v  J/ K! J2 v
IAE,O,O41,% ?# S, q8 n9 {4 m& ^) w
IAD,/ J  E6 }- w2 M  \3 V& r
IAD,O,  d( L' f$ v9 \* Z. `1 m
IAE,* ^- D, i8 H, g3 Q3 T9 @( O. o
I90,VED,C,RFA,OFA,: n3 z2 Q& I2 e! N7 k
IAD,* f" h! G4 y* D) @# n! h% \$ w
IAD,O,
5 T+ h) y1 o; L& k: LIAE,V00,C,RFA,OFA,' ?3 |+ Q* V. M% [, j4 z; L
IAD,% o% y8 r7 A. y" i0 x. r
IAD,O,
  M5 o: e: G0 |3 |IAE,
& d/ E" B4 r  O; [6 Q! a7 LID1,DDD,
7 J9 y  b! S/ H* V; Q3 \3 yID1,DDF,  ~6 _' u/ X7 K) ]7 x% S6 S
ID1,DDF,) t3 j  C) j( d5 h+ z
e22,oFA,
5 S, P: p, p6 W6 x% Z+ le83,
% g3 n) C$ n1 e9 xe83,
0 V5 z! {- m$ D1 ~  n. \e83,. a+ I, R1 W2 A) j$ i0 X3 Y( R" t# j
e83,
$ H, y# [; T+ Fe83,; l5 M% h: B. F: H9 n, U, A; O
e83,
9 F( b. u$ a& n+ D, R9 Q2 fe83,% ?  P" p1 k& T) r: [. N& E
e83,
  n- l; @( }. d' m1 P3 `' M* s, i5 Ze83,
1 M/ k8 ]8 `9 DIAD,0 m+ E- W1 o1 ]6 J
IA7,
. c% K$ _1 V$ BIAE,O,
/ [, G# ?- i% B) r- X4 o7 ^IA8,
, W+ D$ ^, @& }, HI60,D44,
1 Y& q6 B; I* d- u, L$ \IAD,
$ J+ C# p% E7 u$ g3 ]* m# W: \& H! hIA7,) z$ I. K' E, ?* A& v/ S9 o
IAE,O,
* c1 c# b3 W( w, tIA8,VFF,C,RFA,OFA,RAA,OAA,
* Y* g0 K' y, sIAD,O,K20,# |7 W& y$ T6 P7 x
IA7,$ ~! \  H, C9 L$ {
IAE,O,
/ z) P$ Y: b  e7 v0 ?+ l' e+ dIA8,
9 k: \) [2 B) D$ L- [) cI60,D04,$ N. i! O) q# O6 Z2 z
IAD,3 @' D6 F# M* L  B
IA7,
/ l+ s2 J3 v" y0 f- TIAE,O,. o: @$ O! i. z2 e; H! d
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
4 H' J' U! x2 i4 c+ gIAD,O,
) U2 O9 b1 Z. R: [& zIA7,
  O$ k" P- k7 Y0 O, ?; YIAE,O,
8 T' T4 e/ Y  j& f) o6 ]. fIA8,
( f  n. n8 H) n7 h1 {  |6 k" bI60,D44,8 `+ q  q1 V5 X/ x3 K6 N/ ^
IAD,
1 Z; l7 s3 f9 d5 {IA7,( p4 v' p  |0 a- D7 X# ^
IAE,O,
( R. L2 `& a7 V5 y9 ?  N5 F- zIA8,1 W2 {( K. U6 f& x: J: g- F
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
, _7 i% s! p) F3 A5 ?IAE,O,
! V* H) B) _, d5 \9 j" ]4 H: F( f. y" cIA8,8 N  M# |8 ?4 q5 L2 C
IAD,. h, M6 |! v& \* A" g; @2 n
IA7,
6 q( ]7 W% V1 e, z$ _% F7 i  s$ hIAE,O,6 L9 c0 {# S  @1 [$ x
IA8,
- b- h. |; ~& t6 zI60,D47,# Z6 Y9 c: T& `
IAD,( I" Z% p# G- x: u
IA7,* n( Q) j) @5 ?# |' A9 A; I
IAE,O,
: a0 b6 o+ Q8 _! v" TIA8,
9 h4 P8 x5 y" LID4,VFF,* M$ u' d* i' ~' N9 x
e83,C,RFA,OFA,
9 ]5 V8 \7 n7 x0 ?* k% R8 ce83,O,RAA,R00,OAA,O,O00,' r* t; e" S0 I4 r4 }- {" r
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
5 \% {3 u: i9 N; XID4,VE8,O,C,RFA,OFA,
- E9 U& o. X0 L! j# lID4,V00,O,C,RFA,OFA,
5 }6 \& N: H2 X. @: \' NID4,VE6,O,C,RFA,OFA,
0 `' [/ i$ ?+ Y0 QID4,VE6,O,C,RFA,OFA,
+ P) u* C9 [$ H# B% o9 \* y3 i/ W% `ID4,VE6,O,C,RFA,OFA,* m; V  I- h: S8 c
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,
; T- c: [/ w! l! F7 R$ d3 ZID4,VE8,O,C,RFA,OFA,
$ A* u$ z3 T7 A7 q' w1 bID4,V03,O,C,RFA,OFA,
0 {. _/ m  E" w- [8 TID4,VF3,O,C,RFA,OFA,5 I- C# y5 e2 X% l9 ^5 ~1 I
ID4,VC8,O,C,RFA,OFA,% S3 {+ W: D8 }7 r+ Z9 G
ID4,VF3,O,C,RFA,OFA,
0 h; w) `0 B1 ?* F  z5 M9 dID4,V64,O,C,RFA,OFA,* ~6 h# D! ~) [! D8 A% ]
ID4,VF3,O,C,RFA,OFA,5 u" {9 P# i* l* U
ID4,V50,O,C,RFA,OFA,# X* R; v1 ~, _$ b' B9 \  z! w! m
ID4,VF2,O,C,RFA,R03,OFA,O,O03,# W& a! I& ]# j# D
ID4,VF3,O,C,RFA,OFA,
5 \8 R* p$ j7 W' f# C, S' X: g# YID4,VC8,O,C,RFA,OFA,
. x7 R# {4 s% e3 Q( DID4,VF3,O,C,RFA,OFA,
, A% I4 {* [$ r% r* e' YID4,VC8,O,C,RFA,OFA,
& k9 N* R# a: Z, b. O2 ?; u, X" ^ID4,VF3,O,C,RFA,OFA,
7 {5 i9 {3 v# T" j! V2 n* f6 sID4,V50,O,C,RFA,OFA,
- d* M% j1 s  _# T! |ID4,VF2,O,C,RFA,R03,OFA,O,O03,: Q8 M1 L  T) G) k9 L) z$ ^7 t
ID4,VF3,O,C,RFA,OFA,* \+ i' Z6 k4 i- l6 X8 M1 s/ y9 T
ID4,V64,O,C,RFA,OFA,
8 g, {& {6 A% G6 d8 S# f. ]ID4,VE8,O,C,RFA,OFA,3 Q; m. D" N/ R. ]
ID4,V03,O,C,RFA,OFA,3 ^6 r8 i# \: X
ID4,VF4,O,C,RFA,OFA,O,8 D% E% U! F. }% f9 ^4 j) I
e83,
& y9 {+ I  K6 b, W- U! ^2 M' _e83,
3 }( t8 C. @9 ae83,
7 U# R3 @' `3 C  te83,
5 ^3 N! `: P* Y1 te83,
5 U0 R! T( [4 j* We83,& c7 I/ g! @- @! U
e83,
9 \2 _$ M3 S% c  a, [e83,6 d1 }: k7 A, x
e83,
0 m, Y( C$ H* J* {. le83,00,C8,2E,7 d4 N6 L$ |- p% ~3 m
e83,00,C8,2E,0 {: ~! p6 S9 z
e83,00,C8,2E,: O+ `  b5 Y" f! q0 a& F2 R: G. ~
e83,00,C8,2E,
: R& J5 L; @8 N1 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,
6 Q4 }5 V/ `1 o# x2 E; F( se83,
( W1 x2 e7 y+ `9 O9 o! x6 k& n

$ V: W" T& p9 H. y# Y0 v; Y  T6 C0 x, V  j' b
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
9 ^& u- o/ ]2 A2 ?, C1 k! IDevice(EC0) {( M5 i5 R/ ]( l/ n$ a+ p
Name(_HID, EISAID("PNP0C09"))
+ y3 R# y2 V9 a- T5 B5 Y......; U, W! Z  T7 T; k$ p
}* D5 A: g( t* P+ H
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
* A* m, Y! U8 J/ J9 p+ Q2 x4 f; ]就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)8 w# d. g4 j  I, C! m1 S2 m
2、   
9 I* e) m# W+ sName(_CRS,ResourceTemplate(){           ' P: O" n' D4 w( V% F- c0 F
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
* y+ ~% \0 N. {5 J+ O& L2 q/ Q' \            IO(Decode16, 0x66, 0x66, 0, 1)
8 J* T! V; Q1 C( F0 L        })  A6 e3 i, S/ e+ l6 L& c& ^8 @: @
3、接着就是
: \; a- Q7 {& V% j3 MName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
) V4 }# p0 I) l5 E0 r  @* C4 `通过这个声明,OS知道EC和哪个GPE关联起来& {% {  a1 _  Z# v  w8 T
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来9 a& F. ?. `1 j. T; t8 d8 J1 j4 f
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
" w3 S2 ?+ B: a而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。; i7 i" \( m. a) E
3、OK,看看linux是如何处理SCI中断的
2 m( N: J/ D5 S5 ]9 o8 {acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
# [* S) D) O! ~  r+ |0 ?% g# t1 s; {acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)) A) d. l( G, j! x# U' v8 u9 I
4、EC接到0x84查询命令之后,就把Q事件号传给OS7 p: e! Q" v0 P8 `% [
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
. B+ r+ E2 k4 z2 I! K: d你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
+ {% F7 Q; y3 g& k有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
5 ?6 U1 B2 r' o3 {5 vqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm; T, Y7 ^8 _; I
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
% M7 @0 Y2 l6 y版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-22 18:59 , Processed in 0.044078 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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