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

[原创]AC In/Out OS Slow Response

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

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
% ?% E. h' p) V  ]今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
1 r5 c8 V) O+ e1 j7 C- H我们在操作系统下用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的命令
: M( X9 _8 i9 A' [& s/ xD4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
& A6 v# O: n; M  G( {* }这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析  a  [1 v, s9 `- u/ ]& Q2 P
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。) q2 c! E9 M3 X, z

4 K& t6 Y; s5 s8 ZVF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,
2 w$ ]$ A7 x6 u  Ue83,
! Y1 G2 [& N' A& e: ~IFE,' r$ I1 B6 {2 e
e23,oFA,7 g3 ^8 F6 Q2 q5 m1 ~- n
ID1,DDF,LPC RST
  D# B$ }$ j! O# i8 h" v' xSwrong LPC RST
" B. v& V8 I/ X/ \2 S" z, f2 _/ LLPC_Reset_Flag=64
2 z' A4 L9 }+ ]+ r& o6 }
3 Z3 ^& R4 P$ i  c
ID1,DDF,& k! e! L8 N  `
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,
, f5 [" B  Q$ Z8 k' }, bID1,DDF,
3 a& P/ A# K0 b; D5 lI90,VED,C,RFA,OFA,V01,C,RFA,- g4 r3 K/ m* P, @
ID1,DDF,O,OFA,O,
, e3 @. k6 O! `- M0 `/ Qe2A,>IDLE9 K% q: c* d0 E' |/ @: k( C$ Q4 z
oFA,<" {; p! t. S" Y: E( X
e00,# R5 b. M/ Q% p* B* b4 n
IAA,O55,O,
5 ]  \- ^3 i+ o/ x* FIAD,
- y. T$ z. j0 Y0 X( K5 IID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,
) F1 G( U" j% PI60,O,D65,
$ U" \  T8 J( R* z- t9 P& kI60,D6D,VF5,C,RFA,OFA,K20,% S. c3 h' Q, C, x/ e1 x
IAD,
# C) T  q& `6 y& B1 F3 Z4 GIAE,O,VF5,C,RFA,OFA,K20,0 s  O3 a& U0 b' E6 v
IAD,
" F, L2 h+ Z5 sIAE,O,: q2 C  b3 n: A8 u. D3 }, @
IAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,  E- y) g/ R. E9 F3 {
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,2 v) ?( `1 Z: {1 ?" t
IAE,O,% C' z7 Y8 |$ J6 L9 }1 C' R
e91,d2F,d00,
* M4 z! R5 W( C$ Z! x$ B  ~e10,d83,d2F,P3_K#
+ [  K/ J0 p$ hP3_K#

# N) H: K: f5 r7 q$ x/ n! B7 q* H
e23,oFA,1 n2 q* R# H- H: t
I90,VED,C,RFA,OFA,
: t  v- E2 t9 i" CIAD,# Q3 d+ U' [( j2 I
IAD,O,/ T* O% K1 y5 @0 i- X# P- V/ b
IAE,V03,C,RFA,OFA,
$ _5 z0 \6 v1 F$ X$ ~; aIAD,
3 F- Z  C4 c- |9 hIAD,O,
: i$ ]8 f6 I7 D9 X' }7 u! lIAE,* i  e7 [! w% v
I90,VED,C,RFA,OFA,( t- u2 g% E' v8 h) l( l, h- ~/ t
IAD,
) `4 a. o) |& f/ J# X# `9 t  }/ WIAD,O,
' {" ]0 \2 s! c4 h7 a( I/ X" MIAE,V05,C,RFA,OFA,  y$ i* x* }9 B+ n! L  q
IAD,
' a, I  T/ p: I; |% v% {: e0 _IAD,O,
# d+ _4 a0 S! B; _5 Z& _. Q' r; l7 KIAE,O,; N( P5 J6 o: ~( g
e90,d2E,o00,
& C3 o+ g1 H+ X/ a4 R. p0 de91,d2F,d00,P3_K#
' t8 _2 k* E! j( k- QP3_K#
, W: s$ ^5 F! S. h4 D( S% b! O
1 h# x. i+ T+ |
IAD,VF3,C,RFA,OFA," P, R+ g/ q# ^1 b/ f
IAD,0 [: S, E8 @0 j; {! K# A
IAD,O,
' g! x$ K# b+ V$ J" cIAE,VF3,C,RFA,OFA," Q3 v$ f$ T: U! F% N: w0 T
IAD,+ T2 E/ L% X9 C) H  d( Q  s
IAD,O,$ N4 U$ f% f; N3 H
IAE,V20,C,K10,RFE,OFE,K08,
, e% O+ \7 P4 D& e3 aIAD,
7 v) y3 [( I. v3 _  k5 O5 uIAD,O,3 r$ O! n# h9 ~) a; p  H9 O
IAE,V20,C,K10,RFE,OFE,K08,
* L" h6 _7 M3 l: V! B- e8 ]IAD,$ h) ~- z' y" p! _5 d- P2 ^# w7 }
IAD,O,  B* }5 m' j7 B; e, l7 k
IAE,V20,C,K10,RFE,OFE,K08,9 N  C) W4 W. P4 b+ A
IAD,7 _; n% A! S1 \" b% y( D: D
IAD,O,! i* Q4 p% g; X+ x& A
IAE,5 \5 ?5 M2 S2 Y+ Q9 n" W% d3 Y
IAE,VF4,C,RFA,OFA,
: E' ]7 M# B4 wIAD,6 y0 L( W' V" G, b3 o9 P1 B+ `
IAD,O,
! m* z. X% T3 J% w% X. K/ CIAE,VF4,C,RFA,OFA,; i# ]- O, ^- [8 P
IAD,
7 p9 j& U. k) G8 hIAD,O,$ P. N- l" R/ \; A, J6 Z2 P+ L
IAE,VF2,C,RFA,RAB,R41,OFA,
3 b% b$ Z0 |# W- NIAD,' j; f9 i& l# Q) d( ^
IAE,O,OAB,  d7 E( A) Z6 N( g, e0 W7 O' N' c
IAD," |" A, C+ h+ E, u
IAE,O,O41,
" q! v* `4 S( E6 T% T" bIAD,9 m- E# m* y7 @# {5 `
IAE,O,VF2,C,RFA,RAB,R41,OFA,0 T' Z2 }+ q' e/ M
IAD,
1 @; E4 V5 R9 D& ~IAD,O,OAB,
& e9 e% T6 n! H# ~& ~) gIAE,O,O41,
# k: ~: K5 w7 G) i* EIAD,& H4 X8 F. Y) Q8 u# O0 r! J1 \
IAD,O,* g: l$ B+ |/ M: `! [
IAE,VF2,C,RFA,RAB,R41,OFA,9 V; \+ Y( r6 X
IAD,) E9 ~) L7 k8 j# E3 ]7 {1 K
IAD,O,OAB,5 W0 i4 x# Q$ J, ?+ e
IAE,O,O41,
: ^; a8 _9 f- L6 |+ iIAD,% d6 v) D1 b, V" i/ L* H& n/ p
IAD,O,
" y# e  F' ^* _8 fIAE,
: g) e% }6 O# [8 {$ i4 `I90,VED,C,RFA,OFA,
3 f6 C. r" b( h7 f, hIAD,
: V" n6 V/ U, ^' }1 cIAD,O,
. m8 ~; d" A! `IAE,V00,C,RFA,OFA,2 r' r/ B" M$ \2 Z1 d& Y
IAD,
- v/ k3 z4 R3 ~IAD,O,- @" |+ f4 G% U% T0 k
IAE,
! W9 `& z8 `; vID1,DDD,
# @1 N/ T8 g' ^. _: OID1,DDF,8 k0 t( N( z6 ^% g1 L: d
ID1,DDF,
: T8 l1 I/ j$ Y/ ~" ^& Pe22,oFA,
! @! P$ U; z0 fe83,
0 b" V: }# v3 q+ L& r. \e83,
! N2 l' l2 q6 W% W( P+ ^e83,
" |2 u- a- j/ h* V& Ye83,
% u8 N. {# ~( M! g$ t& y! ne83,
9 r' a/ I7 s* \. E3 E' me83,1 _( o+ a. g6 I5 d! t4 z0 l( ?
e83,) J! B  Z+ J, R# \/ e
e83,
; s1 c  \( S8 \3 e+ z  _e83,# j& z4 o! S. S& k* n& X
IAD,
* @; |  P! J$ `4 L" yIA7,7 `  R" Q" n6 T0 d
IAE,O,
3 x# |; ]: h. `/ r6 |IA8,, j- _" M& T; W
I60,D44,
! D) m1 Q% g4 K! `0 R$ Y6 TIAD,4 H& {  E& h" l7 l; A
IA7,
" S( L1 C  j! D! k2 X1 u8 z- [) x/ AIAE,O,
7 E# ~- U, R" T% FIA8,VFF,C,RFA,OFA,RAA,OAA,
8 x. b0 {: Q* HIAD,O,K20,- ~- L. b+ b0 i% V! T/ b2 }8 L( s8 M  Q
IA7,. w! {% q; f& q  l0 J6 e
IAE,O,
3 [$ d  I$ [7 j1 l# m3 JIA8,
1 x/ b) `8 [$ d! \7 B9 ~- \I60,D04," f6 ]0 s" U1 g: k  ?: |
IAD," G! y/ Q$ _# X% p
IA7,* p& j4 u4 t  f
IAE,O,
9 ?* p% R1 ~. |$ H+ J$ ?( a6 ]IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,0 I# {1 _8 P- F- k  I" t
IAD,O," b/ E  N1 G# }* b9 P
IA7,% R- \; }5 b- k7 T
IAE,O,
1 p" _1 f' l4 m0 d1 jIA8,( V" F( O$ d7 h) l
I60,D44,
6 U% z8 w1 w  s" U; L$ m$ u, |IAD,7 g/ S1 T+ T$ Z
IA7,
/ ~7 }$ B) S% u/ p' YIAE,O,
1 ]3 q# f( r2 e2 c) wIA8,/ j* J" \; x; k
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,
  |% Q+ f0 v8 m, a# q5 l/ QIAE,O,
  b8 a/ h1 l$ oIA8,- `; p! T$ Q% X& v8 e
IAD,
5 A  y" O! v5 ~IA7,
0 D: ~+ N& a4 S9 C5 y6 AIAE,O,+ b+ Q5 q( s' o0 `
IA8,
+ q4 m% Q, p: h6 u( XI60,D47,
6 Y$ @- W. q0 R# U9 G3 ~& dIAD,
) w- T* X2 t% H3 s4 K4 ~4 b2 @IA7,& `& ~' u2 c$ i0 U+ f
IAE,O,* v/ n/ I7 X# W
IA8,
& G( v9 Z$ p2 o# J& _6 X3 C' YID4,VFF,! |8 L# \2 w9 y
e83,C,RFA,OFA,
. U- P; g, j& a8 l6 N! N4 M5 w$ je83,O,RAA,R00,OAA,O,O00,
: `# M3 D5 n$ }+ q. L+ lID4,VF2,O,C,RFA,R00,OFA,O,O00,
, E, M4 c( U$ H! I9 PID4,VE8,O,C,RFA,OFA,
7 l3 K* U9 @* j+ RID4,V00,O,C,RFA,OFA,
9 ?) k/ x' Q' u! a2 [' dID4,VE6,O,C,RFA,OFA,  `) [+ c& Q+ t* A9 Z) W- {# Z
ID4,VE6,O,C,RFA,OFA,: j0 ~; W# j, u( F8 j& d4 ?
ID4,VE6,O,C,RFA,OFA,% k4 f7 L6 T) F  d
ID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,, p8 R; o. w0 {, T6 f
ID4,VE8,O,C,RFA,OFA,
& s) V. N! F8 v7 T" O- zID4,V03,O,C,RFA,OFA,
5 o/ P- y5 k7 L. S" aID4,VF3,O,C,RFA,OFA,
6 k! Q+ M3 o4 X: O6 N* ^7 p$ J* rID4,VC8,O,C,RFA,OFA,
( x" r3 s- L/ wID4,VF3,O,C,RFA,OFA,+ D6 F, y6 ^; c3 q$ S$ `  ^. L
ID4,V64,O,C,RFA,OFA,
' I( N0 l$ G: c' a- lID4,VF3,O,C,RFA,OFA,
$ F. L  w' c4 y; C. d2 v. H0 WID4,V50,O,C,RFA,OFA,' L6 Q% w* Y" ?, E  e3 E# g
ID4,VF2,O,C,RFA,R03,OFA,O,O03,3 {3 A8 ~, q% v" l* A2 ~
ID4,VF3,O,C,RFA,OFA,
" T% P5 f' p! s6 A) g1 dID4,VC8,O,C,RFA,OFA,3 y  }2 Z$ x, R/ ~4 I$ x, W* L
ID4,VF3,O,C,RFA,OFA,
0 I/ U9 B' @& W# z' zID4,VC8,O,C,RFA,OFA,
$ I" F% J0 {' \- \ID4,VF3,O,C,RFA,OFA," w. o, I# U# L; K6 i  y9 d8 s
ID4,V50,O,C,RFA,OFA,
* c* Z# H9 H5 ?* u+ ^. R! ?; n1 RID4,VF2,O,C,RFA,R03,OFA,O,O03,
2 w7 v+ V4 y. _! vID4,VF3,O,C,RFA,OFA,- S8 X% x. ^4 D: {1 Z
ID4,V64,O,C,RFA,OFA,
( q& S$ ?2 [, t+ P$ L, V  a, ]7 a1 AID4,VE8,O,C,RFA,OFA,+ s1 c$ S- V* M5 g3 m* s
ID4,V03,O,C,RFA,OFA,
* ?: M* x) l) c0 G* |ID4,VF4,O,C,RFA,OFA,O,
6 J$ Z9 _2 z0 P2 Z2 \; ~3 U) o1 te83,# j9 E/ a8 p# y8 g
e83,0 b2 |! b# T" G3 m
e83,
% s& D" s' P8 U% W  ye83,
& d2 j& f$ g# m$ ^6 j" f% s, ze83,
4 W( d; r4 p6 Z" Y7 Ee83,0 m# x; y1 I9 K  O% y
e83,
! S$ J6 F4 o/ e  ie83,
% ~2 W5 t6 b  G3 o. u' Le83,8 k. Q8 K2 u2 t+ o* l' E
e83,00,C8,2E,
) d; R! h6 T$ N$ ze83,00,C8,2E,
9 e4 T+ W- E* T' H9 f3 ?e83,00,C8,2E,3 l; ~) E$ y7 o4 S$ K( Y# g, o2 K
e83,00,C8,2E,5 K$ ^( W# E7 Q+ N( a* `0 Q7 V7 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,
3 c+ |" D+ |7 h  [; re83,
8 V  u/ n1 d+ k3 J

# |/ R% U5 ~1 q3 U5 i0 @0 r& x' x" [6 b& |# h( C1 I6 ~2 U( v8 e
[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。
5 ~4 F. O% O8 S& g3 t* {% \6 aDevice(EC0) {3 s, I; o  U2 O  J( ~$ D) f
Name(_HID, EISAID("PNP0C09"))
4 M! T- Y+ A4 u......
% B) C% }5 B7 W, [; z9 W}* |3 z0 j# f$ P
PNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,
) v* y  {( U" J5 g" a& u' W6 m6 x就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等), K( r, V1 V6 ^/ C$ S# h
2、   
3 j+ r1 [) }4 x4 x( p' m3 ]" O: fName(_CRS,ResourceTemplate(){           
/ t- n5 g0 Q2 Z  M8 Z& \  o        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
( g- j& Q" }- u0 k* `. t# q            IO(Decode16, 0x66, 0x66, 0, 1)
- t9 _( {, B: L3 y        }); v  G0 }- s8 m5 J" f& x# }( n) T
3、接着就是
6 ]* x) C) l: q0 r8 X/ w4 oName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO7
1 m7 w, J  j* i. _2 N通过这个声明,OS知道EC和哪个GPE关联起来# d1 E2 m  x6 n* n0 `1 m
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来
+ _* S. p; }3 f$ W$ [/ FEC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。+ K  O/ X4 }' k+ ]) h- J
而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。! K% y8 T/ g9 ]) t2 N1 W1 g" Y
3、OK,看看linux是如何处理SCI中断的$ l$ i; }3 J! P4 v7 o# H& X! _
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
* [. J$ K. D' O+ H! g, eacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)6 }# E- G& Z/ _% @& C1 [
4、EC接到0x84查询命令之后,就把Q事件号传给OS
, b8 I+ \* X& ZOS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分
* B: ]1 T8 y" s* b1 D! l* k/ h你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
, \# M% ]; ~% W- A9 g! C% j有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。( L- h$ Q$ q/ q
qdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm8 g% ^' b& z& ~/ O0 M+ F9 u
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。& Q+ p" _( p& q; |
版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-4 14:40 , Processed in 0.124569 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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