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

[原创]AC In/Out OS Slow Response

[复制链接]
发表于 2009-6-11 20:37:24 | 显示全部楼层
我也想知道答案,能在定时器里面把 程序计数器 PC 定时的发出来吗?
! h3 S1 I9 u- g& W3 `9 v看看是到哪里死掉的。
回复

使用道具 举报

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

找到死机的原理了

感谢版主的回答,
; f% D% t/ Q1 ^今天我发现我的EC死的原因了,主要原因就在于我们的触摸板!只要你在重启的时候按几下触摸板,那我们的EC就像是死掉似的。
! y  X0 ], T. O5 Y3 j( y我们在操作系统下用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的命令4 S  X! j# |  i( w5 b. y3 n3 Q
D4通常也会用作disable touchpad。disable touchpad有几种做法,有些会直接disable ps2 port clock。你可以check
% _. B6 _& K: d这部分命令的处理的code有没有缺陷。另外上述cmd的处理过程你完全可以追出来,不要偷懒!附上reboot的log信息供你参考分析& U% I; C3 p, E4 y6 c: r% C
其中I表示cmd,D表示data;如IFE表示FE送给64h,D65表示65送给60h。+ ?% |4 p7 g: C* S6 ]7 l. t8 H1 Z
  R0 }' S  X; t3 p$ ]) f: r
VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,8 q! s8 }5 v& G: r
e83,7 d4 \8 `8 k% \* W/ Z( _1 a/ N# U
IFE,) @; b8 z( M' t
e23,oFA,
0 f8 k1 ^# c1 N& j: WID1,DDF,LPC RST  ~# x" j* [6 T+ E
Swrong LPC RST# d% m- E# @+ F3 p5 B6 V
LPC_Reset_Flag=64

4 B7 \' v0 P" d
* a9 W: ^; D3 }+ @8 AID1,DDF,. d4 H6 e  k% m8 V/ F
IAA,O55,V65,O,C,K10,RFE,OFE,K08,O,$ S- G5 x/ w  N/ x- d* y
ID1,DDF,/ t& ^/ G0 C6 J: {: k8 K
I90,VED,C,RFA,OFA,V01,C,RFA,  }: _; C1 u( W5 x: ?6 M
ID1,DDF,O,OFA,O,/ ]! q+ n9 g, ~
e2A,>IDLE3 f' h7 e. B; C7 \6 g
oFA,<
7 i) Y4 I! p' G3 ?( h7 M. Xe00,1 H$ f: b, z, ]( G3 q/ O- M
IAA,O55,O,1 t' k, A4 K  |9 g
IAD,
4 h( J  T4 K) ~2 v- UID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,5 @6 d2 @+ `$ ~
I60,O,D65,
4 `6 C5 `6 R5 C$ r8 b+ [" zI60,D6D,VF5,C,RFA,OFA,K20," h- x4 b% y4 D2 j9 g- F6 k
IAD,
: }  n; ]1 C0 L/ u) rIAE,O,VF5,C,RFA,OFA,K20,
! X) `6 f3 k' Z7 ]! f+ t, H. GIAD,% J, ^  N9 u# M- j$ R1 f
IAE,O,
# l  R4 U. G4 I4 S; X2 oIAD,VFF,C,RFA,OFA,RAA,OAA,K20,O,! w2 Z, E3 ^$ F' `
I60,D65,VED,C,RFA,OFA,V00,O,C,RFA,OFA,
, E% o8 b" E3 [/ ^8 \IAE,O,
- c$ b# w& F: N) |3 Z" ye91,d2F,d00,
+ K- l3 i+ Q; e! P( c  @4 He10,d83,d2F,P3_K#& ^8 w7 d: U; L! r0 ?  t: W
P3_K#
7 a2 X1 x0 P, O: a! C- j

' K; J6 f1 u# z! Y) fe23,oFA,
- U6 U* |, Q" c" N% lI90,VED,C,RFA,OFA,
3 {9 l+ `! D3 r& e/ C4 g- f* n1 z0 W1 \IAD,/ u% u4 r) |. K$ z
IAD,O,! h& H8 K0 P0 a! ~* |
IAE,V03,C,RFA,OFA,: @$ g- c& U  J. G
IAD,
2 N$ r6 k& j' k9 }, T# v* aIAD,O,
  n) X2 E% W  RIAE,
' {  s6 z% M: }  J! h2 t( u( N/ lI90,VED,C,RFA,OFA,0 C& ]( Q. v& e- S
IAD,
5 y  S" k2 w" _' M: h) H9 ~IAD,O,
3 u% ~1 V/ H( l! A# f8 ]; }IAE,V05,C,RFA,OFA,1 J! T; V6 r1 W4 ?5 i5 O
IAD,
( \" a  y( w1 _: NIAD,O,
$ K8 P2 V3 N7 ^4 h- Q# j+ U" ?- UIAE,O,
# x8 x6 l. |" c: d: Y$ De90,d2E,o00,
+ N; Q7 r# n" u! w5 ~/ ?8 w/ c: le91,d2F,d00,P3_K#
0 _2 _3 h0 k3 j( K* e  y6 |0 I% ^9 [P3_K#

2 {+ r8 |4 b+ R% K6 k6 w# e
$ a+ e8 W& ~# ]" u. P- x' hIAD,VF3,C,RFA,OFA,
( T5 g! K6 A) i5 @: rIAD,
: m; D5 a! F  mIAD,O,! k1 ~& N$ X0 I) o6 }
IAE,VF3,C,RFA,OFA,  O0 z  }6 I" u; J
IAD,
# \- _* d: _6 x$ C5 W0 BIAD,O,$ s4 q+ u2 k6 v; o$ e% A
IAE,V20,C,K10,RFE,OFE,K08,: X' \; W/ l9 _' a' i
IAD,; H# V- j& ?# |% z! V) z
IAD,O,
% v: z, D4 B" uIAE,V20,C,K10,RFE,OFE,K08,0 W' P$ O1 `& i0 @9 P) @5 ]
IAD,! J2 N) \; R6 D8 @5 s2 ?3 [
IAD,O,0 T- i- z5 T& q( ?: U( M1 n. ^
IAE,V20,C,K10,RFE,OFE,K08,
5 C# \2 y; n. |8 Q/ a/ E1 P8 l7 SIAD,. w" {0 N$ H+ y! \' k
IAD,O,
* F  N8 ]$ B  N2 uIAE,
# V( v9 h# P6 H5 H7 b7 ]( Q5 L9 hIAE,VF4,C,RFA,OFA,3 ?! F* f8 h2 k- {9 G/ r
IAD,) J2 `$ b6 f+ T) B- X' a
IAD,O,$ t( s, }9 y5 \/ M+ l
IAE,VF4,C,RFA,OFA,
, t# g7 F- |8 J" R4 DIAD,, p7 Y' S& ?9 ?, [) i: w- @
IAD,O,
9 M  [, }8 Y5 x* Q, [- T; g9 PIAE,VF2,C,RFA,RAB,R41,OFA,
: l) |- @% y$ P$ y0 m8 QIAD,+ D  j3 i7 C# s/ e. V) O
IAE,O,OAB,7 P/ ]3 w2 g7 k: p+ o6 s
IAD,- y; e/ R, d, z
IAE,O,O41,1 J. d' B( B  {* b% k4 Z
IAD,2 K. p0 k4 K& Y/ \) L/ Z% A4 E1 H4 J
IAE,O,VF2,C,RFA,RAB,R41,OFA,+ ?3 B; u4 ~8 u3 {$ T- H. S
IAD,
7 o% ?$ N3 a4 b1 f5 ~% N# gIAD,O,OAB,
5 H2 k" i" Z2 |2 U6 XIAE,O,O41,
$ k# n7 M* M, V& c: S' S7 X& WIAD,- Q3 R) j3 t8 Y! l9 x. v& r8 [$ \
IAD,O,( b( P. s6 W1 l5 x( i+ B- k& Q0 \
IAE,VF2,C,RFA,RAB,R41,OFA,  V2 m8 A9 b* F9 |+ Y, v5 u
IAD,3 c5 o0 q" x9 G' c% y5 Z
IAD,O,OAB,& z9 b- i/ F+ g% b
IAE,O,O41,. P3 r/ g- v: y  s- {
IAD,0 m  c3 l' K1 s( N2 b. u
IAD,O,, H6 Y. j1 I* O1 W  h
IAE,
  h; ?# {3 \* lI90,VED,C,RFA,OFA,( @7 T" \8 l. K
IAD,# z5 o5 C2 e1 M3 M
IAD,O,
1 l# B/ Q2 O7 J0 T" b0 }2 t2 B' FIAE,V00,C,RFA,OFA,0 F4 [' V# R7 ]8 m- H4 p/ B6 O
IAD,- M" q5 e  D. f
IAD,O,
% j2 h, M+ F% n& @7 F' R$ AIAE,
  E! [' e7 ?- jID1,DDD,7 I# _; r3 B6 n* [% q% x
ID1,DDF,8 H$ Y6 D- z- H" ^& j
ID1,DDF,' M4 N4 b+ {/ l/ h0 D7 U- E: @
e22,oFA,
: v& A& A8 Z6 q6 r9 ^- we83,
* q% i, `" ]+ ?' [. z2 t- k" Se83,% Z& X) S4 E, |
e83,
: G! S6 g5 I& s' l  Ze83,
3 p/ L; r9 N) T) g& u; qe83,
; @6 D+ r3 K3 M$ X" L% je83,
( b7 [( A- e* J! Z" qe83,5 N5 Q+ ]& R7 R+ v
e83,
: ?5 N  Q4 k' B4 Y$ u( ye83,2 J! @2 j( J' U! e8 \! {4 Z
IAD,3 h0 s1 B8 e5 u, y* {) Z. V) j, {
IA7,( [; b! t% O1 {9 s4 ?& `# O
IAE,O,
- f2 X, v% |+ v2 F2 YIA8,
* U9 }' j# `9 GI60,D44,
: p  Z1 Q3 i2 }# fIAD,+ e' x$ Y, g0 h# r( ]
IA7,7 \9 p$ n3 n, B3 w3 N) C
IAE,O,
7 u3 [) d0 F, \8 e/ bIA8,VFF,C,RFA,OFA,RAA,OAA,& B2 @' @( |+ ]; A% r1 L
IAD,O,K20,
& C! O1 [+ L, kIA7,' C+ B" D+ e7 j$ j% c' i! V
IAE,O,
( B8 C0 T% @  x8 ^8 @IA8,
# r- i( E8 i0 ]7 e/ Q) T- mI60,D04,
0 F9 J5 j7 U$ RIAD,9 h3 ?, k" `. |+ Z0 N
IA7,4 l7 I' q, L4 H
IAE,O," \. x+ R) ~5 |6 S) @: T/ f! A
IA8,VF3,C,RFA,OFA,V00,O,C,RFA,OFA,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,: \- D' K  O1 R% @
IAD,O,
9 y1 N2 N5 d& Q* o9 o. `IA7,* t& [6 V' Q8 q
IAE,O,
" L, ~3 X2 r/ `4 \% |% x+ tIA8,' ~8 t2 u& {1 z! R! \" W
I60,D44,  \5 P- G  ], J8 ~+ b# t* \9 U; E% _
IAD,
( z1 g7 Z1 U% EIA7,
. K/ p" B" e3 z5 X' r0 BIAE,O,, T+ n! j* Y  |! x6 H; J
IA8,' E. g. i$ `) \
ID4,VFF,C,RFA,OFA,O,RAA,R00,OAA,O,O00,VED,O,C,RFA,OFA,V00,O,C,RFA,OFA,( y: x. S" D1 P+ p- _0 P: n
IAE,O,
* k# {3 ~- Y9 W- \3 tIA8,
4 X, V3 n- }. l" E8 F4 ?" m* vIAD,1 |( @6 i* b# A* |+ M5 i+ g0 _8 t2 a& F
IA7,
! m# U+ V' }$ E1 u" V3 |) XIAE,O,
% u$ T  u! g* F  u! I3 y+ j0 YIA8,$ h1 d( M& @3 y% {
I60,D47,
5 W9 k1 [! U4 x% @/ d) Q- BIAD,0 u% G; Z4 }6 g
IA7,* N0 X. T/ p; r3 F
IAE,O," _7 \9 r5 Q( ?
IA8,% F1 h0 ?/ t8 [8 G* ~6 _2 J
ID4,VFF,
6 _  K  }8 K& R9 h! W$ `e83,C,RFA,OFA,; J- z6 c( O( r4 }& s0 Z
e83,O,RAA,R00,OAA,O,O00,
  X5 M0 a+ g0 O0 k. w6 FID4,VF2,O,C,RFA,R00,OFA,O,O00,' ?8 n4 h0 m1 Q" A# `
ID4,VE8,O,C,RFA,OFA,6 y0 ?) P: H1 t$ N2 C0 I
ID4,V00,O,C,RFA,OFA,) [; y0 n5 _+ o2 C2 a4 _/ r8 i
ID4,VE6,O,C,RFA,OFA,
9 J0 F# [7 O' K6 wID4,VE6,O,C,RFA,OFA,& U6 f/ K2 @0 [
ID4,VE6,O,C,RFA,OFA,
$ q0 w4 p, ^# t# xID4,VE9,O,C,RFA,R00,R00,R64,OFA,O,O00,O,O00,O,O64,- ^1 K4 [4 D5 V( C
ID4,VE8,O,C,RFA,OFA,
1 R. [4 }& [4 `, H' _% e$ m+ WID4,V03,O,C,RFA,OFA,! {, a- b; h9 O8 n4 J: Y9 x/ ]
ID4,VF3,O,C,RFA,OFA,0 E3 U) N8 {4 k; W9 c; V- P& N; k
ID4,VC8,O,C,RFA,OFA,
: z. S2 Y# g$ J% t  B; @( dID4,VF3,O,C,RFA,OFA,0 d$ `* a* \! e/ X- p( B4 G% q1 ?
ID4,V64,O,C,RFA,OFA,% {7 Y. t! u; s. D! [
ID4,VF3,O,C,RFA,OFA,
0 M( X* s" N% wID4,V50,O,C,RFA,OFA,
2 B5 a$ R' L7 m* @& Y9 S- z* V# yID4,VF2,O,C,RFA,R03,OFA,O,O03,3 I1 y# [! n5 h4 C9 |
ID4,VF3,O,C,RFA,OFA,
+ Y' }- O" F7 `" AID4,VC8,O,C,RFA,OFA,
( `5 h! b/ K" @5 g! fID4,VF3,O,C,RFA,OFA,
9 u/ p1 c* ^' O) {ID4,VC8,O,C,RFA,OFA,8 ]0 q! h5 J0 l
ID4,VF3,O,C,RFA,OFA,$ I& a: P0 k: z7 j! Y4 A
ID4,V50,O,C,RFA,OFA,1 l+ w7 q7 V  r  e3 ~# {: r# ]
ID4,VF2,O,C,RFA,R03,OFA,O,O03,
- |8 v& Z0 L. t2 B9 x" eID4,VF3,O,C,RFA,OFA,+ A/ \4 h4 h6 `0 B, C& e. ~' ~
ID4,V64,O,C,RFA,OFA,
# O- y: l+ k) H4 n4 `ID4,VE8,O,C,RFA,OFA,
2 O5 S: T' m3 c0 H* B  ]( R. VID4,V03,O,C,RFA,OFA,
9 {! ^' Y) @% r5 i* P# y4 d6 j8 Q- }ID4,VF4,O,C,RFA,OFA,O,! P6 e1 b( f# R9 I  `
e83,
; y5 r) S+ ]( p+ u; V% Qe83,8 K; u3 D: l8 i$ t, [, x2 L
e83,
  W7 D2 S0 i' F" Q% {e83,
$ q: }0 K9 b2 x* b6 Qe83,
5 y/ {) a7 Y( [$ a$ ze83,
! K, R: W- o; B/ U7 o: je83,- D0 B7 T  ~$ R! m
e83,
" I2 L5 p; f; j, Z2 G; D9 Z$ Je83,6 Z5 ]6 w7 [& i$ V, m1 y
e83,00,C8,2E,& J- c2 d* U" K  C3 N& R: }
e83,00,C8,2E,
" {0 l4 v; P- u: o, }/ ]e83,00,C8,2E,
5 e3 D# @9 N- Xe83,00,C8,2E,
6 z( Q) U* U- e1 C# y/ Ee83,00,C8,64,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,VF3,C,RFA,OFA,V20,O,C,RFA,OFA,O,/ I+ b. J$ Y" _5 o- @6 t& j
e83,
! Y$ q  t; Z) [+ t& y- A0 Y
5 b( B7 a. r4 |9 [. I7 A

! q: |: c6 f6 D! p4 ?[ 本帖最后由 peterhu 于 2009-6-12 15:08 编辑 ]
回复

使用道具 举报

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

感谢

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

使用道具 举报

发表于 2009-6-12 23:54:38 | 显示全部楼层
1、看ACPI BIOS中的定义。# `! T! P: C$ o% p, a* X  [3 C( q
Device(EC0) {8 w! f9 }% f2 k3 b) ?
Name(_HID, EISAID("PNP0C09"))
/ n/ i# z6 @7 e; i......
+ K+ M1 ~. ]  O% f! U}
5 |# t. a6 v: r  W: a4 N& z' [; WPNP0C09是ACPI Embedded Controller的Hardware ID,ACPI.sys在解析ACPI BIOS(也就是ASL Code)时,看见是PNP0C09,8 @; p9 f( }- Z6 c) \; U& r
就会为它创建一个特别的设备对象(Device Object),以便做一些特殊的处理(处理Q事件等等)
  z( I, ~5 a1 Y% Y" `2、    ! i- Z. a1 x5 I- _9 t
Name(_CRS,ResourceTemplate(){           , |9 n3 b; i# u
        IO(Decode16, 0x62, 0x62, 0, 1)        //通过这里提供的资源,OS知道如何去发送EC Command给EC,特别是命令0x80~0x84
! i: \$ r5 N8 Q) n- k3 K1 L1 q            IO(Decode16, 0x66, 0x66, 0, 1)
1 M9 y* Y& ~) t, P        })$ K& j0 V3 c$ z' W0 d) v& r- \* z6 N
3、接着就是
8 U/ }0 Y+ W8 OName(_GPE, 23)  //GPIO7        16+7//可以产看原理图,EC的有个拉了根线连到南桥的GPIO71 V- R7 R7 `& O6 ]5 Z
通过这个声明,OS知道EC和哪个GPE关联起来1 G. ~( M: |) i; T
而且OS在执行 Build Up GPE_BLK的时候,会把GPE_EN寄存器的相应位置位,以便该位对应的SCI中断能传到CPU来# w7 }. a; k- r
EC需要OS关注一下它的时候,就拉南桥上的GPIO7,产生SCI中断。
+ a% w& {4 @5 o4 `0 ^而且 GPE_STS寄存器中的相应位被置位,以便OS知道SCI的来源。
- p' Y- z- X1 ~  a! u3、OK,看看linux是如何处理SCI中断的$ m' ^; S5 C' ]( ~/ O  a8 {
acpi_ev_sci_xrupt_handler==>acpi_ev_gpe_detect==> acpi_ev_gpe_dispatch==> acpi_os_execute
+ T" Y  z  ^% `6 M- W/ s8 s! E% Lacpi_ec_gpe_handler==> acpi_ec_gpe_query(处理Q事件)==> acpi_ec_query(直接与EC通信查询事件ID,发送0x84查询命令)4 h3 I8 v7 D% H9 ?' Q
4、EC接到0x84查询命令之后,就把Q事件号传给OS. p' M$ f3 V; T9 G+ B- @) s2 q
OS的ACPI驱动当然就是去Evaluate相应的Q Method了
回复

使用道具 举报

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

使用道具 举报

发表于 2009-6-13 13:39:41 | 显示全部楼层
Name(_GPE, 23)  //GPIO7    在这里区分: r1 k" D& c# }% V+ x
你看看南桥datasheet里面  GPE0_STS、GPE0_EN的描述,结合原理图,就明白是怎么回事了
( D3 K. B# i6 o! M3 ^有代码就好了,用source insight或者slick edit看代码比ami自带的编辑器好用的多。
回复

使用道具 举报

 楼主| 发表于 2009-6-13 19:21:37 | 显示全部楼层
也可以参考"我所知道的EC====>KBSMI&KBSCI"。
1 P8 J$ @+ M3 j& Oqdk0901linux acpi driver你一定看过咯,之前在pediy.com看过一篇关于intelppm2 ?6 t- K2 `5 o5 V
bug 分析的文章是你写的吧?非常精彩!
回复

使用道具 举报

发表于 2009-6-14 09:58:07 | 显示全部楼层
见笑了。
4 B) n$ f; D$ i5 S! i/ @版主在CSDN上的系列文章小弟都看过了,很受启发。
回复

使用道具 举报

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

分析的很好

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-23 01:13 , Processed in 0.052830 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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