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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
5 G4 D" U( F5 @0 q看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,7 x* r; D/ _  m. I: j* P0 L7 v4 P
今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。( P5 c& q/ m6 k, L# @! w' k
我们在操作系统下用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的命令
6 v- B2 q, D0 ID4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
- o1 G( B/ m# }0 a这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析- @( L- ^& `, Y3 g6 C& B# S
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。0 [( `, x3 A1 z, y0 M$ ]

" e9 ~  m  r0 p4 N" bVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,, }6 a. [+ O  B6 o
e83,) V) a" E" l, e  r. v
IFE,9 N3 r  x, J+ j% D. @
e23,oFA,+ b) M8 a3 s1 l8 j
ID1,DDF,LPC RST" K) v# |# e! D0 e5 C: E
Swrong LPC RST) u" Y# M/ ^1 ]" V
LPC_Reset_Flag=64

6 x* Q6 L0 q! v$ i
/ y: Y8 o! g% E% e" }ID1,DDF,
+ ?1 |7 l, u( s0 \  F' zIAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
2 v6 _( v4 d/ Z  ]: }2 SID1,DDF,
8 s* ]+ R# `' g( LI90,VED,C,RFA,OFA,V01,C,RFA,  |% ^, T7 k* D+ S3 ?
ID1,DDF,O,OFA,O,1 u/ [+ f& e% |" U" s
e2A,>IDLE
: I( s) l8 ~" [9 n' JoFA,<
' @9 i) H0 E  w( t8 de00,: @. h" K% H0 U9 y
IAA,O55,O,( F: v6 Z( c3 R- Q8 Z2 N# X
IAD,0 r/ Z/ a- W& ^6 o
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
$ z1 d* F: ^* f: ~9 K0 q4 \I60,O,D65,
4 ?0 k  W0 H( ~: a" Q, M+ I+ \I60,D6D,VF5,C,RFA,OFA,K20,( U: n5 ~9 m8 a( |- _+ z' @9 T
IAD,
# H- e! b  c, T3 {2 z6 |7 T  }3 zIAE,O,VF5,C,RFA,OFA,K20,
- X+ X7 U6 F2 w7 S: G8 P2 TIAD,
1 Z! m. _: F; M" B. }# T7 h- q- v+ [IAE,O,
5 ?# L, x* ]$ ZIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,+ n2 Y( Q5 l3 D; @
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
& F2 r2 x7 v7 @1 k% e; J: jIAE,O,# v) v3 p$ a! h" @
e91,d2F,d00,
5 h' ~( B) y0 M1 c; g# E* u2 ne10,d83,d2F,P3_K#! ~3 @3 L+ r& S# g9 _; m
P3_K#
2 e/ e# f( q% [8 q

$ j1 f; m, m" N. c8 a% t  p' ue23,oFA,
/ A, o8 Y  [' T4 TI90,VED,C,RFA,OFA,/ D* F; w7 a( @( C, l! j+ T( s0 t/ i
IAD,- F$ d/ B) I- U1 ~7 K
IAD,O,
& d# i! j- x8 ]8 `IAE,V03,C,RFA,OFA,
1 a: A% L. S5 {, J% tIAD,* q3 W/ g$ a1 v
IAD,O,
+ z- J: g; T9 i6 O1 RIAE,
# W# i2 a  E% y1 ]' A) J1 u! m3 x- `. CI90,VED,C,RFA,OFA,7 f4 C) q; o/ H3 x! p
IAD,3 P5 `. o: H( L. U, e
IAD,O,
7 z2 Y9 g, i( ~+ U9 k0 eIAE,V05,C,RFA,OFA,
6 ?1 n" o! \& U3 Y) g% o: q# A0 _IAD,; q1 \' [5 M0 H, `
IAD,O,
! i8 e- I2 I; x# w: [IAE,O,
# i2 S* j7 ~0 w' B4 ?e90,d2E,o00,
' N/ M6 n' M" c! d. ke91,d2F,d00,P3_K#4 r7 u- k0 y2 ]; m- ]
P3_K#
& E" J  U* B! y

9 r( \/ V. y, hIAD,VF3,C,RFA,OFA,6 d' R. F3 N3 k5 ?; e( s8 m3 g
IAD,
. C& k8 x5 G/ i6 IIAD,O,5 G; Y0 \( a% H9 l- s+ f: c
IAE,VF3,C,RFA,OFA,
) W* i% D' ?, j' q, k# \6 kIAD,
: U3 R. ~) k7 B. B0 O9 a$ W$ i5 I1 P( l5 VIAD,O,
) p  U: z5 [& ?0 _5 e6 d- PIAE,V20,C,K10,RFE,OFE,K08,
8 x8 q( l% ]- n# eIAD,# ?! g8 s' z8 g: P* {
IAD,O,5 t1 h; Q1 f. q! c. G) l
IAE,V20,C,K10,RFE,OFE,K08,
$ ^4 e0 C- D0 ~. D/ r2 ], ]+ }IAD,
% I& @4 r2 T' D9 n. x7 WIAD,O,2 K- _5 h  t1 p
IAE,V20,C,K10,RFE,OFE,K08,* @, B9 q! O: Q; A
IAD,% T2 z. Q% r( M/ {% B
IAD,O,
  U0 s4 L6 d9 V6 Z+ `IAE,$ D- \0 Z! J, a9 h7 c5 ?) z# c/ W
IAE,VF4,C,RFA,OFA,& ^& [1 P% g  X( X1 v- Z6 ^0 ^' _  a
IAD,
; U: x) R; s& j1 U0 D1 pIAD,O,  R! T& Y' T* _
IAE,VF4,C,RFA,OFA,
7 z3 e# G- _( p5 e0 u9 K/ mIAD,/ V0 I5 J6 y7 u! X% L* Q
IAD,O,
( c$ w( J. e6 d  s7 O3 P# sIAE,VF2,C,RFA,RAB,R41,OFA,
" X; g8 F1 b/ o: R9 X/ g1 [IAD,1 Z+ T$ R) }2 B, ?* e
IAE,O,OAB,3 t9 W) T& a2 U; P2 w4 `
IAD,
# V3 C, d9 \' r. \8 K! _. c" eIAE,O,O41,: s5 ]; [- @/ ]& j- h/ h7 b6 b9 m- r
IAD,% m5 g+ n4 |. |* H9 K, p
IAE,O,VF2,C,RFA,RAB,R41,OFA,
& w  {7 X8 o% s" S6 vIAD,
* X4 o# ?5 T' H; z! l7 a4 |IAD,O,OAB,# f+ r8 ]6 b. l6 c3 A7 t8 ?! n8 u
IAE,O,O41,$ o2 \  e9 h" N9 C* Y
IAD,
# x( j* [4 Y) }+ B3 L/ AIAD,O,
8 J) ~* P# R* Y' l) vIAE,VF2,C,RFA,RAB,R41,OFA,
* A( C' g8 w3 e" _3 {1 H) x# T6 pIAD,
; M1 `& N- W5 ^5 C# ^IAD,O,OAB,
1 Q9 l8 |- F/ d; V1 N8 E' |( YIAE,O,O41,5 ^( O9 d0 F, _$ M3 L# t" {
IAD,
3 r% A& B4 X. }- BIAD,O,3 c. V7 K7 A  X3 q
IAE,
+ j5 ^2 s( K4 Y+ q' DI90,VED,C,RFA,OFA,: v6 J$ ^( K% C: J
IAD,+ W: u: {5 q& e# V; k$ M
IAD,O,: P0 O  `  r# ]3 ^! r3 a, m& j
IAE,V00,C,RFA,OFA,0 @4 x9 D5 k  T' z7 h
IAD,
6 S; Z1 `, ^8 l( j; NIAD,O,1 }* ^, |; f6 Z  h$ n
IAE,
+ H) ?" o9 x4 e# X4 T% XID1,DDD,( S' T9 P. C( d5 b  a
ID1,DDF,
' Z  O7 W% E' I& k# U' ?4 I. BID1,DDF,7 L; o$ ^6 G  ]) O- ?  ~
e22,oFA,7 g; l; X. o/ ]+ V
e83,
/ B# u+ B/ i( K8 a. A, ]7 C4 ie83,, N4 b1 s8 \% h; Y# r: I$ Z2 I7 k% f
e83,6 {5 ^' I; [2 X+ j; [2 {
e83,5 E3 I: j  E/ p& P
e83,; v4 j  G9 P0 W
e83,! I; I! S9 Z, C
e83,+ C9 U: @5 f3 Q
e83,' O9 g$ z% h9 N3 v
e83,& p! P% T, }1 w, S! `1 M
IAD,
3 ?% E7 t) V$ OIA7,
9 C5 M( [0 a: L% DIAE,O,3 k$ M8 H" z+ [' ?) H" r6 h
IA8,
! t, |  n$ _6 J  U5 VI60,D44,
3 T; D% x7 T7 g6 MIAD,
# v8 Q1 D: H) [% {5 m( w) FIA7,6 i) k5 o4 N4 Y: C7 W! L2 b
IAE,O,& h1 k) D+ p1 c* I
IA8,VFF,C,RFA,OFA,RAA,OAA,) E" O" v' T; i0 n- [, K& P
IAD,O,K20,
# ~* `! A8 j+ UIA7,
8 r. h$ y4 S0 g* K! ?( x3 ~7 JIAE,O,
) D  u1 a( l/ z( ]  |, W6 q. XIA8,
8 ^4 G# X. W) Q! d5 jI60,D04,! v/ F* A8 V* @; a6 _
IAD,2 q' P0 B" b. [, G0 R/ o! h
IA7,
) A+ Q" H7 n7 q" dIAE,O,
8 F, A0 t$ b8 q$ K7 r1 N# zIA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,( T' Z; z& i! ~1 D) g1 o
IAD,O,
$ `: `0 d8 \; b# W% ~# pIA7,
( H2 K; I# ?# {9 U1 r( C4 kIAE,O,- y+ \! K6 s+ a, z) J* j* _
IA8,
& k: y6 n: l! l5 t+ W0 E( t9 Q+ JI60,D44,: u# j  y  a6 D
IAD,3 Q2 C# u7 ^' L5 k+ m+ X
IA7,8 k# H5 i$ H; P+ U" ?* b( f
IAE,O,: G: Y/ s9 G7 R4 v) Z
IA8,
& r2 U6 h4 x* T1 {ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
) {$ v+ \+ I. O+ |IAE,O,, h3 d$ N. d: x/ ~! e
IA8,* s" L$ h0 ]+ p
IAD,8 d* N: v: K! u' Z7 Z6 b6 z
IA7,5 C" ]! o* s) ?! f) {
IAE,O,
: f$ q  }8 _5 `$ A: [' M& k4 kIA8,
; t& r$ [9 w. g% v" d+ z0 EI60,D47,+ l% M0 S; T  Z( ^
IAD,& T& X- K( p% v* |' y: C4 F5 b
IA7," |$ M, D7 @4 T# C. s7 K7 M
IAE,O,0 I' B3 e) L  u# r  s% G% @" ?+ t
IA8,4 o5 D+ X% V0 H: e: n
ID4,VFF,
2 y* ?* g+ [3 Qe83,C,RFA,OFA,; n* H) L$ G$ ?. ~# |# P
e83,O,RAA,R00,OAA,O,O00,; h" ^5 u1 T+ K; C& I; L6 W! K, R
ID4,VF2,O,C,RFA,R00,OFA,O,O00,) M' R9 ?; p' P$ }2 U
ID4,VE8,O,C,RFA,OFA,. W3 p; T' [! L# `
ID4,V00,O,C,RFA,OFA,
9 ]6 z9 `/ H2 a: ^0 [ID4,VE6,O,C,RFA,OFA,' t! X2 t1 m3 S3 O9 x
ID4,VE6,O,C,RFA,OFA,
; q; w4 K$ [) l$ \3 KID4,VE6,O,C,RFA,OFA,9 @: p3 |% C7 n6 f" Q! N
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,3 G! E9 r: r$ `9 b9 i1 j2 f: p- p4 M
ID4,VE8,O,C,RFA,OFA,# q/ U' T! c/ q. Z' t
ID4,V03,O,C,RFA,OFA,
/ s+ E% f" t" ^ID4,VF3,O,C,RFA,OFA,
( E: w' S3 ?% S) b. p- vID4,VC8,O,C,RFA,OFA,) @6 e9 ]. o4 [! e; M1 |
ID4,VF3,O,C,RFA,OFA,# s4 J' z3 @$ P$ D6 z) r! Y6 x
ID4,V64,O,C,RFA,OFA,9 Y( L0 K) h( ^8 G/ j7 q
ID4,VF3,O,C,RFA,OFA,  q8 T& ?/ }4 R. M9 m
ID4,V50,O,C,RFA,OFA,+ \" T5 t+ O$ @1 P
ID4,VF2,O,C,RFA,R03,OFA,O,O03,* L# e$ u% n2 \5 w
ID4,VF3,O,C,RFA,OFA,
0 n, d% D) k4 z3 k; qID4,VC8,O,C,RFA,OFA,7 g% \8 N8 C- R2 x1 b
ID4,VF3,O,C,RFA,OFA,$ j2 b. L- A4 q, N% z- P4 n+ G
ID4,VC8,O,C,RFA,OFA,( v9 m/ J4 o2 I7 E8 [, x8 e4 {! w  E
ID4,VF3,O,C,RFA,OFA,
% \; T/ [# X# ZID4,V50,O,C,RFA,OFA,
$ a- ^' H  v4 h" R% x) ZID4,VF2,O,C,RFA,R03,OFA,O,O03,; ~6 V- x+ Y; Q1 A/ a# ~6 r; D
ID4,VF3,O,C,RFA,OFA,0 }+ e0 U4 V% L* w
ID4,V64,O,C,RFA,OFA,* Y  b# s4 t1 ~0 C
ID4,VE8,O,C,RFA,OFA,
( L. K% r; ~& ~/ D# ~7 ~: pID4,V03,O,C,RFA,OFA,
3 g# D+ H# F/ X$ TID4,VF4,O,C,RFA,OFA,O,& @9 x; N  Q/ ?: A% C( O
e83,
( ~) y1 U* k, W! P2 N) N0 S5 xe83,
" ?5 Q2 x" K- Ue83,
3 q+ f, U- F- O$ \1 Se83,
2 g8 J# o7 P- f: z, i$ W5 X+ We83,
+ ]. y6 J2 s$ ~' I) ^e83,- @9 U7 c' H1 e
e83,
3 t/ l+ O# Z7 P4 x% g. {) g. ye83,
0 {$ z/ A. D6 {: n1 K1 f5 l# Ce83,
9 y; S" c& j4 f5 J" y3 f. R$ T& C* Ze83,00,C8,2E,
( O2 n, k1 [# J+ a; G7 oe83,00,C8,2E,
6 l7 R7 m1 N# x2 B% Ve83,00,C8,2E,& {/ @4 N$ O2 Q0 B* S7 ]/ }7 {3 O7 N
e83,00,C8,2E,, z# |/ |2 A4 {4 Q# O
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
; V! `& E- Y' M" y3 v9 R! Q% {e83,
* m$ X  I) F$ x) b5 E% C
/ Y4 i$ h# {% s! {& F0 y# b
' d8 g% x0 A/ B  |/ r1 z
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

谢谢您的答复7 m% F: F, F' x- e- N8 @. c+ m0 }
     今天我看了一下,我们的A7命令就是拉低PS2的clock,我想结合你的资料仔细了解一下,EC是如何和OS通信的。。
. Y: E+ U0 m: x) d) U" I      我现在对EC和其他设备的通信的理解如下,如有不对您给指导一下!
0 ~* n# A6 w2 p      前提是我还没有仔细看过ACPI,因为这几天手头的事比较多。+ W8 ?. U* m+ H3 r: l5 @: Z
      EC就是个微控制器,在电脑中主要是起到控制一些其他IC的功能,比如风扇,电池,上电时序等。我们利用LPC和南桥通信完成一些相关的功能实现。比如通过60.64和62,66这写端口实现EC和上层的通信(包括OS比如这次遇到的问题,就表明OS在进行重启时它会本身相关服务结束,后在空过64口给我们EC发命令,我们就会关掉或开启相关的东西),好像EC要是想主动的想和上层进行通信,就只能利用SCI和SMI来实现!( h% s- d/ M5 V9 G% V* C2 N2 Y
BIOS我的理解就是在我EC上完电后CPU开始工作就会他的代码!感觉BIOS的功能就是,开机时自检,并设置了一些相关设备的寄存器的值,是这些设备能过按照我们要求进行工作。呵呵!毕竟我不是做BIOS的只能理解到这了。我是刚做EC没有多长时间的,如有说的不对,请您一定要指出啊。我一有时间就会在看看ACPI的听说这个很重要。我英文不是很如果有什么好的学习方法,还请您赐教!
回复

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
* Y# @0 w! @. X$ u8 l* j% nDevice(EC0) {8 S& f. y2 L  ]
Name(_HID, EISAID("PNP0C09"))
) f; @! n+ C: G1 |7 o0 z# P6 s, q......
+ i7 `% [" |$ B# i3 J% U' u! }# c$ G}- v- n, i3 V! q$ D; @/ |! \# q
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
9 y: n( C. b( g就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
$ w  R  }' [3 V9 T7 g. X2 g9 P2、   
4 b& s$ K' [/ C! eName(_CRS,ResourceTemplate(){           
/ c& |+ j, c' d  ^7 K  I        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84, m- i" f% |7 j3 M6 Q& Y
            IO(Decode16, 0x66, 0x66, 0, 1)8 x# R' @% C. x9 T/ o
        })3 Y1 a' c! v9 {7 D/ d# T
3、接着就是
- ?4 n4 o( r4 \; C) L3 ]8 w/ k7 x; R6 OName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7* d) T! H. _* ]( W9 ]# |( d7 n0 @2 i
通过这个声明,OS知道EC和哪个GPE关联起来" g6 T1 _$ d! [% _$ O3 l
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
* Q$ V9 u1 ]- `( D/ e$ r& v6 BEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。% y9 X6 ^% n& p# J3 y  c
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。# p" e/ B# m3 u
3、OK,看看linux是如何处理SCI中断的) K# W5 S: `) l; x
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
/ h% n" n" Q2 Lacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)- D# l( Y# Q( w5 c; W" W" n
4、EC接到0x84查询命令之后,就把Q事件号传给OS3 L- P0 c: b# I1 @- Q
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
5 P( H* o: i! f& v你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了9 f& E9 C& \, ~- r$ v4 I7 r
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
- K1 u5 [. Q! q- {& ~5 E2 Y7 `qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
: e& F0 z- V- ~3 vbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。8 g' e* k1 z, h% I8 d* B
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-21 22:26 , Processed in 0.382996 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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