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

[原创]AC In/Out OS Slow Response

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

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
2 O2 T/ D' }5 l今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
! v$ h3 j# @  j9 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的命令6 ?) c6 }2 t* ?' R9 r: d9 {0 k
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
4 a0 J- R' M( P+ V8 ^/ J, {& d这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析1 v% ?, W' O4 a* A5 ^' ]6 o
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。
! z7 b# f  j, c0 B2 \) j! ^
/ r* @/ J. r2 mVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
9 k+ R  B; f. N# [- F. j) h4 e& }e83,) a! X9 C& p; k* L
IFE,8 e+ Y$ ~5 B; _' ?" W  C  E
e23,oFA,6 ]! D3 ^0 s6 ~% z- h
ID1,DDF,LPC RST
! V8 @9 G$ Z- S4 ~( I8 R" {3 nSwrong LPC RST
. d, e1 `1 t6 G+ ELPC_Reset_Flag=64

; C0 Q3 e3 ]9 ], `: ]1 f7 v7 M! v, P3 U
ID1,DDF,2 v2 ^* a2 Y' m  c
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,1 _; g% w0 Z1 Z5 z+ B. ?) a/ B
ID1,DDF,, f* n' q6 b9 N& K# R8 J
I90,VED,C,RFA,OFA,V01,C,RFA,' Q/ N/ J/ p% x
ID1,DDF,O,OFA,O,1 i: V) [7 J0 o( E1 e0 {
e2A,>IDLE, {) [& U% T) P0 ?2 c" J
oFA,<1 P& B7 ?1 L( ^+ i
e00,5 B' t3 w  k% y6 Y  ~2 i
IAA,O55,O,
& N/ u# l/ x0 J* ~IAD,5 m  j3 U" r  [7 q8 n
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
$ z6 O. x, B( P; Y4 T8 {3 w! RI60,O,D65,' H* d) Q$ I. p9 `: ^1 J( Q4 L) [
I60,D6D,VF5,C,RFA,OFA,K20,
8 h: {9 @. b+ ?6 x0 h9 \5 j$ HIAD,& ]" ?# a+ S9 e
IAE,O,VF5,C,RFA,OFA,K20,
0 |: M9 Z0 n0 j" E7 v' y; GIAD,
+ `' m0 p- J+ EIAE,O,
6 t# W& e* G0 _* X  C0 yIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,, f6 T  l% p; ]0 O
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
; J; M6 ]: |7 n/ J+ m6 c: RIAE,O,
/ h3 L. y- x$ x$ U. Ae91,d2F,d00,4 ]+ _- G9 H. N" ?+ R
e10,d83,d2F,P3_K#
5 d6 V# T2 h5 c0 wP3_K#

' L' @7 w4 S- K: Q$ G2 V- P; g8 @$ C: @. I
e23,oFA,
3 I) v- x! i5 _. c" v) J+ zI90,VED,C,RFA,OFA,
  z8 ^/ Y: G4 T  EIAD,8 s# ~7 z1 p' B) h
IAD,O,6 C8 C& \& R( m# e6 s- m$ l6 I% l
IAE,V03,C,RFA,OFA,
/ o1 n5 ~* ^$ O7 k+ V1 m) }4 w! pIAD," J6 i2 u: I( X! s2 B! s. o
IAD,O,
* D4 _2 M( K5 C5 h) }1 J+ kIAE,
4 o, _3 H) x8 K7 HI90,VED,C,RFA,OFA,3 b6 ]. p( E$ q
IAD,
/ _9 F* T. O, w  QIAD,O,
; x7 `3 w- }) i9 WIAE,V05,C,RFA,OFA,: k8 L; z3 A( c6 H& Q
IAD,
8 N$ t+ R3 D% b7 |8 I! P0 }IAD,O,  H# n6 C4 ]! g- f7 k
IAE,O,
* j) [2 G, V& {+ D1 w+ n2 fe90,d2E,o00,
  c1 |. _5 H  h5 V6 E8 Ge91,d2F,d00,P3_K#
9 `( m1 e9 V  F: `1 UP3_K#

0 Q4 A# C( ?! @, T
2 Z! H/ v4 p3 x" m+ i5 u! l- I3 L2 _IAD,VF3,C,RFA,OFA,
  m* o+ C( ?, _- @! a9 rIAD,
! d3 N, ?7 ~0 q' x9 I/ \1 UIAD,O,
* z9 _8 G) }2 t2 ?/ H7 DIAE,VF3,C,RFA,OFA,
8 b* K7 b2 k* @" dIAD,. V8 m9 }0 N/ i- U# a6 c# t
IAD,O,/ D0 H& l+ ^, y  o; ?
IAE,V20,C,K10,RFE,OFE,K08,, h% j4 U1 A. d" V3 j  A) M
IAD,5 A$ D) [( e; M, ^- b  I& p
IAD,O,3 }& [1 g8 s7 N1 Z6 `% h, E2 s
IAE,V20,C,K10,RFE,OFE,K08,
- w& W1 c2 j9 \" O+ L6 K5 TIAD,
" w! `4 S- B* c1 U7 vIAD,O,
. d( x& s& U  @5 LIAE,V20,C,K10,RFE,OFE,K08,3 [" R9 d$ M) c( k& ?
IAD,; |  D+ G4 M0 N: I" r' ~
IAD,O,
& Q: v$ h8 C3 R: s% RIAE,
% r2 }" G9 j. p+ ZIAE,VF4,C,RFA,OFA,
# n# K8 T' m( P" _; ]IAD,7 w; l, T) M, _2 A
IAD,O,4 g; D3 x. ~  [$ g1 [7 |& ?, u
IAE,VF4,C,RFA,OFA,$ H. I6 ~/ p: F" o6 Q3 V2 s" f: u
IAD,
' D. B& ?# h; ?3 z( VIAD,O,3 k: r- z7 |& {% {( R9 C+ ^1 P* R
IAE,VF2,C,RFA,RAB,R41,OFA,; X# y) E3 l  a6 q, f8 S
IAD,+ b2 G  V; P- s/ d& r* C
IAE,O,OAB,: w8 \) f7 C1 ~! T
IAD,7 {4 W3 m6 g8 f# z; C( s
IAE,O,O41,
+ }9 v  [% z1 d" A8 oIAD,* Q( H$ V" W2 `5 i7 Y
IAE,O,VF2,C,RFA,RAB,R41,OFA,
' }, t/ Z' Z7 T! v6 l% N$ pIAD," G" j' ]$ x. s
IAD,O,OAB,2 q9 w- W: x# ~6 J+ C" i2 T& b
IAE,O,O41,
. z$ L. |% I. tIAD,
3 r+ W$ P5 L9 O' O+ g' ZIAD,O,
: R, _" P4 x# g7 e9 SIAE,VF2,C,RFA,RAB,R41,OFA,
' Y7 l, X: ~: O& a3 D. `0 mIAD,) `2 M0 l) [, I. q3 D' u
IAD,O,OAB,
$ r( \4 e+ l8 q9 B- eIAE,O,O41,, Y7 n* d$ k/ J- o8 T1 [8 D
IAD,
% ~& l: [& n8 w" J* z; s. l* sIAD,O,
4 U( i& K' e3 ~% B% ?2 UIAE,
" D4 ?3 g$ I( p3 `5 bI90,VED,C,RFA,OFA,
, H; v0 J# F8 K9 zIAD,8 }" t, o. g9 P
IAD,O,7 |( k" u7 D  R, }( @
IAE,V00,C,RFA,OFA,: T- _- c: B( _$ ]( [
IAD,
2 g/ K, b1 @& C/ Z9 tIAD,O,$ a0 N: b' A/ Q2 p. }1 k, w
IAE,
+ L; C- {& _' h; [0 d2 r/ kID1,DDD,8 d& H' S$ ~2 O. `' R! ^/ R
ID1,DDF,4 M! ?" o" i* s0 W! `
ID1,DDF,
3 r1 ^. g' Z' o1 L4 C: ^e22,oFA,1 ?/ @2 O) n: X8 `, D# ^
e83,
9 ]2 K. f7 J* G! J6 J' x. _e83,( o2 ^9 a* g8 P7 g! U$ g) d; b5 o
e83,
. c) w, C1 X, [7 Z* F' Qe83,
4 P0 X; \9 i6 r" w8 n' x% U, fe83,
( ^( O' B$ Z6 G$ fe83,
* {: ]! G' }7 F( o: W; Fe83,7 y0 C( h0 \& ~. z
e83,5 p4 h; N4 E9 w  V5 ^' J
e83,6 p# J0 h2 J- ~# Z5 i/ f* K2 O
IAD,9 j! }, @+ F! u) {* m; p" A
IA7,0 x) o' B. O$ q4 N' A
IAE,O,2 t- _. D& T3 I1 i4 z
IA8,! z1 B3 l# @! S+ t6 d
I60,D44,
! j4 n' v8 y) O  M2 p- OIAD,
! I% }  S2 Q2 P- F( R7 ]IA7,
* D, Z3 x3 `7 F2 o# Q+ v, tIAE,O,) j3 S  _% j4 o) R3 y% `4 E' m
IA8,VFF,C,RFA,OFA,RAA,OAA,
; V! ]9 y/ s/ e- FIAD,O,K20,5 M( l: \9 \9 E+ H4 e- C
IA7," i9 R% Z4 o7 N& J$ Q; K1 r, F
IAE,O,6 x& K. p  O9 t* ?! `" w
IA8,, c1 m, ?( E: z4 K  l
I60,D04,- v9 L) {, N, Z0 V% T2 p; y" }
IAD,
2 K; O7 b, e; t, W  N& _IA7,% N0 {$ J3 m& o7 n$ }
IAE,O,3 _) f' i  j# F6 T" D# ]
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,+ F1 x+ u5 J. S  I- J- y
IAD,O,
) S% N& M: w) _* u  E8 rIA7,' \/ j; c% A3 U
IAE,O,* \% i. \* k  Q- j* p; c  B& q
IA8,. e9 F' n" R! _
I60,D44,
5 D; K3 e3 H* {* t4 c3 k/ W* z' iIAD,
7 E/ K8 F4 _* x- O' Y1 Z2 SIA7,
  o( V- U7 h3 b5 f; wIAE,O,
( A" w. b5 c4 D- g# U" |- W. ^IA8,
$ H0 S: {( t% _- E1 ZID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
0 `9 A% J. Y4 E! ~: x& j5 eIAE,O,
! E7 P  G# I7 j1 `' h+ K+ w$ GIA8,
3 G9 o# v( }9 k, C& I: ^! ^1 V) GIAD,
7 S  J4 W/ F! I, sIA7,7 C: T# i& ?) h& I- R3 B, d
IAE,O,) b/ B2 m0 `9 k* n; q& ^9 M
IA8,
# p- k& X8 v5 Z$ L  t1 cI60,D47,. B7 X% R* `4 O7 r8 H& u
IAD,+ |0 f; x/ t: Y$ `5 y; k9 ^. D' x
IA7,
3 w% u% h1 j7 s: R) L+ ]+ VIAE,O,
  j( W8 Y7 `  S2 t' Q" L! yIA8,
$ J, A8 [* r  J, BID4,VFF,
4 V, V4 B  Z! t; E, je83,C,RFA,OFA,
% c  X5 z( r9 Y3 {4 h8 v  ce83,O,RAA,R00,OAA,O,O00,+ _2 `# K* m# K5 g% ]* H6 y
ID4,VF2,O,C,RFA,R00,OFA,O,O00,
" W/ \. a" J& K3 yID4,VE8,O,C,RFA,OFA,
3 v* f; y1 M8 @2 E- U6 PID4,V00,O,C,RFA,OFA,
0 j4 X. i, {$ t. P1 L2 q, e, PID4,VE6,O,C,RFA,OFA,' O$ O, d+ f( r& r
ID4,VE6,O,C,RFA,OFA,: j9 j8 [6 O  E' r) b1 z
ID4,VE6,O,C,RFA,OFA,1 f8 J1 T3 J9 o. P8 o
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,) o" K3 Y3 D( G# H* Z" x
ID4,VE8,O,C,RFA,OFA,
9 c4 E; }- h" p/ Z5 FID4,V03,O,C,RFA,OFA,. y  @0 f( w( O2 D5 Y3 ^$ y* i
ID4,VF3,O,C,RFA,OFA,0 l  h9 j# A- R4 U" [$ ]
ID4,VC8,O,C,RFA,OFA,9 R9 v) Y3 n5 g& r  c
ID4,VF3,O,C,RFA,OFA,2 S$ Q; J( X% a% \7 w
ID4,V64,O,C,RFA,OFA," y6 Z9 m& K  j& k& z8 K# @
ID4,VF3,O,C,RFA,OFA," L: h9 k8 h; d' l1 x
ID4,V50,O,C,RFA,OFA,
8 B+ I, p3 b. x; [0 E# ?# rID4,VF2,O,C,RFA,R03,OFA,O,O03,
: }2 V) K1 C0 F& n$ N, x% tID4,VF3,O,C,RFA,OFA,
- o( z. }  |1 Z7 H# AID4,VC8,O,C,RFA,OFA,/ M3 Z- F& |9 q# |. b' [$ Y2 y9 {
ID4,VF3,O,C,RFA,OFA,
2 f" \$ f4 a; H& K/ bID4,VC8,O,C,RFA,OFA,- H' n, ?: E$ {+ w! R  J
ID4,VF3,O,C,RFA,OFA,% ^8 L" x* v+ b
ID4,V50,O,C,RFA,OFA,
/ s5 k8 N1 a4 x! s9 L# z1 cID4,VF2,O,C,RFA,R03,OFA,O,O03,
2 ]# T* |! r/ m( Y* {7 N/ f" KID4,VF3,O,C,RFA,OFA,
! @0 X% Q/ \) k' GID4,V64,O,C,RFA,OFA,
6 O, n  q3 ?' tID4,VE8,O,C,RFA,OFA,) }, O" D( H1 Z1 ^- H
ID4,V03,O,C,RFA,OFA,5 D+ q6 j8 d4 y1 v& j0 P
ID4,VF4,O,C,RFA,OFA,O,  |1 I& A. e* F9 W, k  M
e83,
0 |1 q/ G: R& We83,$ t/ ~" e1 `* p  \, E; L
e83,
2 Q$ [# A/ F0 N3 p5 X9 T+ Q! o$ Ve83,
7 f7 R0 D4 D! r) we83,8 \* \2 E6 t3 T+ m( _* D0 T
e83,: o8 S1 o) S, n0 s- j1 U* e
e83,1 L: a% H& Z( N6 t8 D) t) Z1 e3 B
e83,$ o) L% [3 W0 ~7 X! X4 i7 V, b! Z+ u
e83,
7 R& c- }% J( G( g7 ie83,00,C8,2E,
1 {# l3 d: }0 d, {4 Me83,00,C8,2E,
6 P" J4 o6 l6 N, L+ Re83,00,C8,2E,0 ?3 |. }  Q3 n3 j9 u
e83,00,C8,2E,5 t1 I9 @/ R* D1 R" K" S; `/ S# ]
e83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,8 N9 o9 _5 a: r* J1 P! D( L* d& M
e83,5 r1 }/ W* T9 f

: m6 t) n2 h) N  R" i# F: Y# ~1 A6 j5 R! _! `- }
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。  V2 T* S4 F6 W0 A- w) y  e! L$ _
Device(EC0) {1 b- M: Z$ U' k* K- ^5 {
Name(_HID, EISAID("PNP0C09"))- N0 J. x$ G5 |' a9 Z1 H
......
' L% f/ D# q* A$ Y; a' a* X- U}
5 T3 H) x$ L( d) [: {: gPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
* o* U% @  `  _" k+ }就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)8 o8 c0 Q" `. L& M
2、    & I4 }# x7 h) q  f
Name(_CRS,ResourceTemplate(){           
5 s5 r8 B4 i' G  {/ p9 r( v" P        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
" |6 O& H- Y8 _7 Q            IO(Decode16, 0x66, 0x66, 0, 1)
5 o! A9 f. i. z( r        })
0 d2 x, e$ z5 k0 o. D2 O  R3、接着就是# |2 M- G, U; c5 R' Z- ?! b
Name(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7' U# l! q; y3 p  |
通过这个声明,OS知道EC和哪个GPE关联起来: ]& _0 y, r* G: \) ~2 X
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
+ Q, n0 S/ R: @8 H  NEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。$ y3 M# q" B0 U( B% T. G
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。: K3 Y7 i( d- Q4 T$ _0 B. N1 w
3、OK,看看linux是如何处理SCI中断的
: ~  z5 E( T" v2 Iacpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute* T7 F, H; B1 x; ~; h% }
acpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)
( A" u5 Q- @# b6 @4、EC接到0x84查询命令之后,就把Q事件号传给OS+ y: b3 K. k! X9 c  x
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分. ~7 y" I) |) c& l
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了3 D: E. N% @& W, X! y
有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。1 d# F- w2 O" A( E# Q9 g- m
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm
9 |) A$ _) m, J6 qbug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。% w. ]3 F' j+ ]& [3 ]0 K* F3 y
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 02:16 , Processed in 0.029900 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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