找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 15607|回复: 0

[转载]我所知道的BIOS- Chipset Config 5

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
/ [8 f% ^/ e$ |1 O- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
# _/ ?* _, }8 S- SB(即 PCI-ISA bridge)
& p5 {* i, \# |8 {- ACPI registers' ?0 @4 g$ F0 V4 I
- USB registers
5 f1 M" G4 i  e/ t, b& M/ g3 t8 `- SATA registers
: N" e* c$ m( @  Z0 D' ]- PATA registers/ e; c: e# L0 x+ q7 y9 M
...
' E! |1 J, _# C$ c0 i- G. f% [
* 在此所謂的 registers指的是: PCI config registers(除了ACPI registers以外). PCI spec所定義的 PCI config registers 00~3Fh 為 PCI header part,這個範圍的registers並不是此階段的主要工作(當然還是會touch,只是不多),而是稍後BIOS PCI kernel的事情.此階段將 focus on ffset 40h以後的 registers,因為,這些是 device specific的部分,是 chipset自己加function/feature之處 !!!/ z: {6 N) I4 Z- V3 W

4 |% \3 n. J, @( _+ j7 s* ACPI registers通常透過 IO 來存取/ |* I& H  }4 C( @1 U, ~0 z$ r- s
Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
0 e$ H1 @: D; z- K  [, Rmov dx, 855h8 Z) N/ K9 z" e! W
in al, dx ; <- al = ACPI Reg55h's value
/ d3 ?* `) U0 @) B  Y6 C- i7 n  D, \$ W6 y& ~
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.. M. O- N; U7 g  Q  e5 E

' o% }3 G* g% fEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)9 X" @1 ^6 ?% I  v
=> 簡單的 assembly can be:
( Z6 l9 z, J* ]6 x! m
! N# W/ O" g  M$ |( nmov eax, 80002750h7 p8 v& o6 {+ P: u, {3 z+ _8 E. w
mov dx, 0cf8h
) N& h3 h% s) `; c  j2 V0 d4 cout dx, eax. i/ a% t7 _+ e
& n0 {* K* y6 Y: c0 v5 [: ?
mov dx, 0cfeh
5 _, y$ f' U6 {0 T5 V6 w% gin al, dx# E  f  ?& `7 `$ B( I
or al, 00001000b/ P+ l) E. z1 p: ~
out dx, al
8 Q4 s- ?! U$ o" I% m4 u" N: i3 c, X# F$ N9 u5 |$ G- v
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
' B' \* o4 L; E: D7 K8 a) f3 [* k7 C, I4 l1 F% q- y
*當有人要求改 register setting時,我們必須知道三件事:9 l" R0 x/ I' E  s; [
1. why (為什麼要改?)
7 S  X' G( g7 U5 R2. what(改成何值?)) {; c: K, E+ G. t. W/ z
3. when(什麼點改?)5 e3 Q% {' g" f5 u' e

/ w) l$ ^. g; L% I' H/ S*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.   x/ [, `& l) |) T
張貼者: HARRISON HSIEH 位於 8:41 下午   
7 Y$ x" _0 n  M& w- F1 {% Y- J# c標籤: BIOS相關   x6 Z, K5 ]! Q$ z  g8 x
6 意見:   k5 W. {0 A& n/ `; Q

5 K! X; V  q' x/ Ptonyya 提到...
1 A4 U4 s/ O3 s  P2 \( Y/ f無意間發現你的部落格
; D/ G3 ?9 h( |+ S4 X6 M: p4 e* _
很多文章都覺得受益良多( Y( J& p; R* i, V* R) x$ C/ G
3 R0 l/ }# z+ d& K
我也剛接觸這門領域不久) V+ ^7 o, Y! ~5 T& p7 h
# P# O. g" ~' {! @, @7 y
很多東西都似懂非懂
* Q$ S2 H) X" t! R
+ n. K4 j. s* H' j' V3 f不知對於一個新人而言
; K- v" G8 h, {6 h; q9 J; w9 O. e1 G
有沒有什麼好的訓練方式
+ b4 m# C1 @) v! j: v3 \- f$ O, j
& F1 u# n) g' U( t: q- e8 y可以及早進入狀況
* o; C( s; G+ S十月 03, 2007 5:53 上午  3 y. d4 O1 I! F9 Y5 O
' R  V  T, L5 V
Harrison 提到... 9 _; u+ a( L' h) {- f
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。! @( `# N7 W/ h; b" Y- o

. }" D5 H5 R/ t4 e( w6 J! @! G所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。. U( n5 g4 `. A7 x

" ]% a6 h1 l& A% g如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
$ T+ x  ^, E. q十月 04, 2007 5:39 下午  ! y# y, C: m6 f  V
' e' x& V8 Q1 v9 n- n' s  p. K
tonyya 提到...
- d6 a, h9 ?4 h( [8 c1 n+ n首先感謝你的回覆8 }1 r( t6 _0 L8 m5 C) s, C% s

2 i8 ~2 N4 x, c1 l1.目前接觸的是Legacy BIOS(組合語言)
) ]$ {- Y: A! ]. }% I3 h$ ~- e! [& E
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
: M5 \/ P: W8 |$ _7 V. u+ z: _+ E( X
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份
4 b7 H1 ^0 x* m* `1 N$ Q5 ~: C( p0 Z: r
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!& m0 F/ _  `. o1 c
: x, K1 D, T. X, G2 l: K- J% C; B' }
5.再次感謝你所提供的意見
/ ~# f9 ?+ U: Z3 B' H& Q: R十月 05, 2007 8:09 上午  
7 [! W: n* ^0 E+ ^9 @5 `* g
; N9 R7 D2 q6 P) y" Ichiehlin@mail2000.com.tw 提到... , R& k) ~! z: ^9 s
PCI Register 是 cf8 cfc Index ,Data
' h7 w5 O  _2 ?0 n十月 25, 2007 11:17 上午  5 S+ |9 u& A4 |7 I9 x# Y* U3 R
, I9 I( L5 o& l
PT 提到... # H5 G9 R5 X2 o+ Z2 X
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
9 g& A2 E& a+ V0 d8 g% Qmov eax, 80002750h
% I( R8 h  U, V) k9 U依照我的理解方式是9 ]; q6 R% Y: t0 T9 R9 n& A1 w  M, M
10000000^00000000^00100^011^01010000( ^7 U6 E9 V  n+ q/ q9 \2 p
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-6-17 07:42 , Processed in 0.026396 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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