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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
+ j# o- c/ P% H2 W& X看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
2 m! ?: K3 L3 M3 {7 l, L7 h今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
$ i, N! X- E7 u4 I3 }& S我们在操作系统下用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 W0 D5 E4 ^9 ]$ bD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check( |9 x* t! _( Z
这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析4 W6 m. u$ e* v* E' }
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
9 r  w+ }# {9 f! ]( Q' {6 ?& |
8 A) _8 m9 H3 ~6 R7 g( r' _VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
9 K) y  u% _4 p/ Ae83,: P! q, x# W; n# h7 Q* s7 x
IFE,
/ x# c4 c! M% z5 d/ i. i  B% Q  De23,oFA,2 E0 _4 K3 _" o. G
ID1,DDF,LPC RST8 \  b' l1 n1 n* v% C
Swrong LPC RST
! F- E  F/ c- K1 ^: rLPC_Reset_Flag=64

4 ?' U& W* I/ j( ^
, k5 f( F* b$ QID1,DDF,
7 S+ }4 x" Y: wIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
9 F$ w- R2 r3 }& g: F+ A. s# jID1,DDF,
3 i4 v+ U/ ]' v% F9 G. ?I90,VED,C,RFA,OFA,V01,C,RFA,
# G6 a' o5 h% A0 cID1,DDF,O,OFA,O,
* @. M# a  [1 M8 V& {5 Q$ se2A,>IDLE2 }( O% C6 |* g  X  j' R
oFA,<
" ~& [5 r' z3 Be00,
3 f3 f, R! K- q0 _# _" B/ X+ TIAA,O55,O,
2 s0 J3 k: q! tIAD,0 G- ^( |) O) m9 r0 S# L3 v( U
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
6 q. R1 t; z, H( X$ `+ a3 _3 cI60,O,D65,* X# t0 X7 d! G! V' m- i* P
I60,D6D,VF5,C,RFA,OFA,K20,
) m: A/ D  ~8 w4 ~' fIAD,
' M( M# z) X* U. x& \3 L5 l6 c* rIAE,O,VF5,C,RFA,OFA,K20,8 }2 I" z8 i& b7 Z: k
IAD,
- P7 p4 _% k# x+ r( i$ z% fIAE,O,4 D# S! g+ e$ g8 d# y: S
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,# I# u8 }- `0 Z4 N/ b
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
5 M9 a) A) x7 J1 \IAE,O,
6 Z/ v! i) U$ o9 fe91,d2F,d00,/ ?+ g  T; N/ @# Y6 L+ E4 {
e10,d83,d2F,P3_K#
3 l4 l: J- Y8 I- e0 Y/ sP3_K#

7 N6 j9 x* O3 t" O7 b
. G2 E. l0 c/ H  B# \4 ze23,oFA,
2 \  D; i/ u2 M7 t( C6 t7 P) WI90,VED,C,RFA,OFA,
  W9 H! ^+ L2 v: C7 o- mIAD,
' y% M: n$ w& [! y8 MIAD,O,
% I5 N: _- N! x1 ?" oIAE,V03,C,RFA,OFA,0 H5 v4 R/ |7 Y  C
IAD,
% r3 {# d" X, sIAD,O,4 t8 F! K; {( @. |* n1 J4 O3 t
IAE,9 B- D9 K& h6 H( `# T  V% s! }
I90,VED,C,RFA,OFA,/ B8 F+ H5 M' j8 h1 F/ M5 H
IAD,
2 E" _9 \2 Y- T8 e4 i2 m: _IAD,O,$ r4 t2 o5 |7 E4 b" A: e1 s
IAE,V05,C,RFA,OFA,; S- C% p% s$ n% E+ M; w7 D: u5 N
IAD,6 ~' S. K& \3 l& o$ G& @
IAD,O,( _: l& k/ @0 U. `8 N; K
IAE,O,. X2 l9 E4 L1 L, a" W
e90,d2E,o00,
4 P( k; u; X" G! n' t8 j& ze91,d2F,d00,P3_K#1 p1 U; u7 c* B: b, H
P3_K#

1 S7 e% y; Z9 X' B3 S% l
. ~  |: t8 T7 z7 V6 U; x1 l$ jIAD,VF3,C,RFA,OFA,
9 |6 b7 O/ y5 b2 C3 m& M  r. ^  YIAD,, @$ k& J' ~0 ~( M, v
IAD,O,% p8 x3 K0 \$ ?
IAE,VF3,C,RFA,OFA,
! S; F' e0 P* f9 rIAD,* U! ?" }1 b$ O3 O
IAD,O,
" Q4 ]0 K3 L; aIAE,V20,C,K10,RFE,OFE,K08,7 D1 c! y6 Q4 b9 O+ D0 M; S
IAD,5 R* R" ~& b3 v
IAD,O,
* |. s& L2 X" v4 XIAE,V20,C,K10,RFE,OFE,K08,
, x% {; B* }. s. tIAD,
: U" c& N- `( E" O) R/ S/ EIAD,O,8 o6 {1 G# A& s
IAE,V20,C,K10,RFE,OFE,K08,& w! ]9 \2 B: l* B! |: L
IAD,# f5 ?, k5 j2 o. F3 Y* q+ O
IAD,O,
% U% _! l) U5 @6 {( L5 jIAE,
* B4 @7 m; W; h. ]9 XIAE,VF4,C,RFA,OFA,
. s$ M/ Z# T/ c0 v5 w7 h5 K; ?1 IIAD,( b! J: Q# b( j6 G
IAD,O," [0 A- W0 G; I% d
IAE,VF4,C,RFA,OFA,5 e- n( j; E$ k7 F) ?" s" _
IAD,
. e: P* f8 w4 ^5 `- P* H; H. s* UIAD,O,
6 ~, T* k% z* m! n; t* f, S8 z2 }IAE,VF2,C,RFA,RAB,R41,OFA,3 c: S# g7 |1 T
IAD,
* V* ^/ j; `- \* {# U# L' k) i8 b4 K, tIAE,O,OAB,
* f$ I9 F( J8 W5 \( CIAD,
7 s3 c% E+ B; p0 O, {IAE,O,O41,+ H3 n, M! I9 Y+ ?* c2 z/ N
IAD,
; }- q1 p. f* p# d6 RIAE,O,VF2,C,RFA,RAB,R41,OFA,
6 k" c) F, p- lIAD,: p* ^/ D: O: I, H! [% U
IAD,O,OAB,
: x+ d- h7 r; [# T* l- ?" IIAE,O,O41,
9 `+ l# J" A0 Y% `- xIAD,: l& i3 s; A8 B" _: o% ?
IAD,O,
" U. f. v' G0 \+ F  |) G( f% E2 ZIAE,VF2,C,RFA,RAB,R41,OFA,
) W  C' `+ h2 V8 g+ p, hIAD,4 a2 V5 C/ o+ s7 v7 i# g8 V) I
IAD,O,OAB,: o$ h# `- y6 A9 K
IAE,O,O41,
  W; U8 a  s" ]. \+ D# x* F5 `IAD,) H/ G) S& c" I4 ^* C
IAD,O,8 d/ p1 t0 J, T( u4 N+ [
IAE,! [# N8 e* W: n
I90,VED,C,RFA,OFA,
* i. n/ f+ _  N, [. K. l3 ^/ q, ~IAD,
- }2 q% |# P; }( L" F2 vIAD,O,; v+ G4 q5 [& O/ s4 l8 w
IAE,V00,C,RFA,OFA,
7 K5 P2 L. ^) D% V, mIAD,
9 g% f- C5 X& v5 pIAD,O,, Z! a9 S/ R! J5 \
IAE,5 A3 Y; n# S6 L7 K: z0 k9 j
ID1,DDD,
: a3 A7 j+ {  j" A5 fID1,DDF,8 i0 R9 _/ o. Q0 a9 T; E3 d
ID1,DDF,
8 _3 L! Y- r8 I2 b  a! ae22,oFA,5 b  L( Y) z' i- ^* w+ m' O1 v
e83,
1 [# [1 M& T8 Y# u. Qe83,- t. _! W/ ^+ \
e83,( l% F6 M# p0 _$ ^5 @1 G) ^; a* c
e83,
' _* i" P5 j7 a/ X) g/ V7 ae83,7 E6 @+ W) v2 T+ w# H
e83,
- m  r6 [$ R) `6 x% D5 Ge83,
4 L3 @; F+ ?0 ?* \' `, }e83,
$ @: s5 L( @3 Se83,  E1 Q+ q0 l/ I" {
IAD,
( W; L; m# \) E! M% l$ u. H! T2 ?IA7,6 i; x/ E+ p( ^& X4 {# W$ s
IAE,O,
! R) i8 `0 B6 s- a$ M9 ^IA8,
4 Y& t% E. Z% ?; Q+ hI60,D44,1 ^4 A- a7 y1 G  O% \: f# I
IAD,  F+ w# }2 |/ z- h3 l: b
IA7,
5 O, F0 T; V7 w3 TIAE,O,
! L# ]/ R8 O% w/ v7 hIA8,VFF,C,RFA,OFA,RAA,OAA,/ {" @8 O% j8 @2 H) V& r% ~- [
IAD,O,K20,
. U' M* w. v! n1 XIA7,
) K/ T( E. W) K8 r8 C2 x1 aIAE,O,
6 |7 N- V) V2 R' d+ [( fIA8,4 M: J( s0 r* X* O) V
I60,D04,5 o; Y" G- F7 r2 M* y9 a; G
IAD,
7 l* \/ X5 z- d2 I' Q3 q9 x: RIA7,- U4 k4 J' K, c
IAE,O,
* D( }/ r1 {/ ^0 c% N, s& JIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,; t8 X1 F) s' A8 \7 ~
IAD,O,
+ j7 B$ Y9 O8 O1 F$ SIA7,
, K. y3 X3 Z, d9 wIAE,O,
) z7 W& u" ~6 F0 K; KIA8,$ _$ i9 _* Q6 `
I60,D44,) f+ q* p4 j; }# M* l
IAD,& \8 s2 r4 D, M, m" \' }. |/ K( h" `
IA7,3 f, K8 L, z8 s% a% F( f
IAE,O,) \% J2 G8 Q% J7 E$ q$ b8 ?7 O/ {
IA8,
8 o% {7 P! T% p8 K9 R0 Q7 v) m$ rID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,) t4 ~* Q) |! [. M
IAE,O,6 H, }& J* k* @. j! @4 U' Y( ^
IA8,
1 R3 m6 g( w5 g* g7 q/ h) u; mIAD," N5 E& G& G0 A* U$ e3 x
IA7,' m& J1 d$ h* w+ P# d: n
IAE,O,5 w- i, U5 S) \% _/ s, K- ]
IA8,
3 ?) x2 z# N. v- WI60,D47,
8 F) p9 U' M# G' iIAD,
7 z7 z1 Z9 C5 @+ E" L5 tIA7,
6 g" s1 ~) }6 D% kIAE,O,
- V3 S$ r: }, ^/ BIA8,
% o; \( @- O  M, l) l! Z$ KID4,VFF,
+ W, p4 e6 m* s! Q2 s( u& s3 w# qe83,C,RFA,OFA,
! ?: Z* j) {- I( w% |# He83,O,RAA,R00,OAA,O,O00,; x' C  K  f8 U, b  @
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
3 B1 N1 U. C+ Z5 q( K- p4 {ID4,VE8,O,C,RFA,OFA,
5 e0 v, M$ b# i4 {0 UID4,V00,O,C,RFA,OFA,
! ]; x5 }% [$ U7 K8 PID4,VE6,O,C,RFA,OFA,
& j$ {4 x0 k6 ?. g. \' KID4,VE6,O,C,RFA,OFA,: w; ]& k$ Y$ J; {0 X" ^
ID4,VE6,O,C,RFA,OFA,4 _' C* P9 i8 l- P" Q
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,- i/ N9 F1 q! Y- n/ r+ i
ID4,VE8,O,C,RFA,OFA,- s; \* V3 O5 A4 n( p& H: s
ID4,V03,O,C,RFA,OFA,
0 `/ a+ w6 P+ ?1 e2 n% iID4,VF3,O,C,RFA,OFA,3 J# g1 A2 I) H
ID4,VC8,O,C,RFA,OFA,/ p+ v' m0 o& {  \8 Y) \- h) a
ID4,VF3,O,C,RFA,OFA,) o( Z, `1 K% A3 Q5 [/ z; K
ID4,V64,O,C,RFA,OFA,% R& v2 p& A' r! Q! M
ID4,VF3,O,C,RFA,OFA,
) F6 L2 V; O0 l- iID4,V50,O,C,RFA,OFA,5 t" I1 w- k' Q2 d( e2 _
ID4,VF2,O,C,RFA,R03,OFA,O,O03,3 ~/ ^) C: A$ D
ID4,VF3,O,C,RFA,OFA,3 @5 y& u) M# L  z% P, p
ID4,VC8,O,C,RFA,OFA,$ @) E+ a: L3 _6 T, a5 }0 x
ID4,VF3,O,C,RFA,OFA,
& J7 f9 ~$ u2 r8 tID4,VC8,O,C,RFA,OFA,
" ^# E$ _; T* B8 \0 fID4,VF3,O,C,RFA,OFA,
# e; Y, H$ X- j8 S# b+ N0 G$ D; YID4,V50,O,C,RFA,OFA,
+ z" V. V' d( t& ]* iID4,VF2,O,C,RFA,R03,OFA,O,O03,7 D1 d( {3 B' S$ c
ID4,VF3,O,C,RFA,OFA,
/ u6 R/ l8 @( b& s3 N$ x6 ]ID4,V64,O,C,RFA,OFA,
8 y, h$ u- q5 x- i# `ID4,VE8,O,C,RFA,OFA,5 {9 n2 G3 W1 k6 F% b# `. z) w
ID4,V03,O,C,RFA,OFA,
( a8 n1 t5 K8 I8 w- {ID4,VF4,O,C,RFA,OFA,O,: o+ @0 e" |( j( z) ^6 H
e83,
; _2 O$ X% a2 J1 B" K# q# M- Fe83,
' l& x* N+ [6 L( xe83,
3 ]- m' d" b3 z2 @e83,: O! c1 M9 _! W, p, x* U
e83,
# r( _3 u; X3 T+ b- Xe83,' e, ]! M4 ]! E+ c+ ]
e83,8 x6 C7 P+ _3 J  S  `1 q
e83,- A9 |+ d. P( x1 y' |  I; R8 x! x/ N
e83,
# D5 [/ W' ~4 X7 Q7 z+ Fe83,00,C8,2E,% |" V: i' n" D
e83,00,C8,2E,
6 I7 y- Q2 Z) p: t( Ke83,00,C8,2E,+ ?5 o5 R6 _9 u1 U6 n0 n
e83,00,C8,2E,# N9 A0 C# g9 c* Z. ^5 _
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 N- G) c/ ^1 \2 b( @6 r8 Ze83,& ]8 ?. [) |* i4 L% V
' F1 P: \  A- O- Y1 w; T* X  b

8 R  \7 T0 m; Z; t! J' n1 g( |/ j& Z[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。& P! T9 @# t; d# [
Device(EC0) {3 S: q, d7 D: _1 c( l: M9 B. ]
Name(_HID, EISAID("PNP0C09"))
' w- ~; M4 L- X9 g2 f, c......
- R* L" p1 B& v8 c! ]3 E# j}) Z6 X: s; ?' ^
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,: h+ w, Q  @# K. @
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)1 d- Q$ `) R) B" s6 r
2、   
& F* [% Q+ J: u1 }Name(_CRS,ResourceTemplate(){           
( y0 w, _  t7 ]/ ^- u8 ]9 }1 F        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84" f9 t8 ?/ d3 ?. l8 |
            IO(Decode16, 0x66, 0x66, 0, 1): o" T: z" X5 r5 D
        }): U1 u, c3 ?0 B3 K
3、接着就是
* u1 h% F6 j* K6 v6 S) F! a; i  nName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7! O! g+ f2 X, _4 A
通过这个声明,OS知道EC和哪个GPE关联起来
* v6 _: ?: l7 \( p3 D而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来; [; q# Z6 W5 I' j* ?5 H
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。8 Y. f1 c: v* Q% r' P; [
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。% t4 D: R7 ?0 T2 j, ?
3、OK,看看linux是如何处理SCI中断的* _/ N3 |2 @: Y
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute0 A4 Y" E. X4 w; Q1 {4 ]3 G
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
5 Q8 u6 y  T* m; t0 H2 i1 P& e. G4、EC接到0x84查询命令之后,就把Q事件号传给OS
! w/ U8 f- |3 h, k+ r) ^OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
  D$ Q0 G4 q5 o' E你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
. D) E' I1 h0 M; B$ U) s; Y& R+ [有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
  @7 y9 l3 k& c; {% _6 x( Mqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm+ g) e4 A$ z6 d8 ^- S
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
# G* J, B- F+ y+ K+ A6 s; V版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 06:52 , Processed in 1.095627 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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