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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
: Y0 Q. y' y; p1 d6 r' L2 O) K- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)( `5 Q0 j( `% D$ m9 @# s! K) M4 n  y) d
- SB(即 PCI-ISA bridge)
; A. R7 R3 M0 x, G3 g- ACPI registers
, |! ?+ v- k3 y- USB registers
5 v- r+ X2 u0 E- SATA registers
/ i( R+ P' k' o# c; w7 b- PATA registers
* v; I+ G) |; q; N0 ]...
* C9 Q1 B- c0 P% Y$ ^
% `0 o2 ]2 J/ j9 Q6 D: J* 在此所謂的 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之處 !!!
. h7 ^$ z8 ?  ~* F& W; x
) [7 m8 }% H3 ]* ACPI registers通常透過 IO 來存取
- [0 {# Z4 z; _9 u3 LEx. // assume ACPI Base is 800h,要 access ACPI Reg55h( c4 K. ?! |; t$ J# l) T: e
mov dx, 855h
9 f6 X- l' s: E: C8 [& l+ jin al, dx ; <- al = ACPI Reg55h's value& i* c, f0 y% l

+ r1 b, P; D3 p* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
; V) M, u$ K: t1 u: @0 R+ D
% u7 |0 z$ r. \) v7 q' w! o+ KEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)% t# }/ r3 [1 T7 _0 H& w
=> 簡單的 assembly can be:' c* V- ^6 x1 Y' u; W
3 i. D( c2 H9 j% A/ R. Z+ j
mov eax, 80002750h$ p( U6 L+ W: @; ?/ F) C
mov dx, 0cf8h  H7 }, ^( ]' e0 T; X" s3 N5 p. U* I3 v
out dx, eax* n% Z1 h. i. f

; \. k& m. Y( I' L  ~" X4 hmov dx, 0cfeh# ?/ A8 q, Y  M- O
in al, dx2 _9 \# V# V8 ^4 J& V: S8 p
or al, 00001000b9 |/ W6 _1 L9 S9 C
out dx, al 2 [# \' i( W+ X: s' h

% V1 ~4 v& d; v1 ^3 y- E; B事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^* i+ }" Y7 X, K! `/ b
4 d* d$ H: A' z
*當有人要求改 register setting時,我們必須知道三件事:
: N4 X* V# N3 C$ \5 H& P$ ^  j1. why (為什麼要改?)
: ^; Q, Q6 a% w& Y! ~, Q; Q2. what(改成何值?)
/ W  r. \& g* E9 P% Y# ?( E: }3. when(什麼點改?)  z; ]+ w/ s* n- ?* Q. S& C: u

" [  M1 t3 ?8 d2 w( k*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.
3 }# g+ F$ R4 u! E6 y6 D! X" Q; M5 s張貼者: HARRISON HSIEH 位於 8:41 下午   ( `1 e7 w* _1 ^4 j
標籤: BIOS相關
: p) d1 Z7 G' q9 _% ~! b6 意見: 9 }% u) Y/ ~$ L0 M* ]1 t3 R

0 a! d3 q% G+ etonyya 提到... ! Q8 N3 p- F8 }7 \
無意間發現你的部落格
" I, n3 T1 {2 n7 a
6 M- s& x7 v+ ^$ {* ?很多文章都覺得受益良多
9 w1 m/ J0 X( T5 G
4 u5 E( g9 R  G我也剛接觸這門領域不久
% _5 F) b  p: i" t6 B0 n/ D6 [  U' j* U% V+ B
很多東西都似懂非懂% N+ G. h) _0 W) `
1 u; u! M( V3 ^0 L5 N. }
不知對於一個新人而言) U: r/ z/ ~. F/ u+ E/ O
: [0 X2 V4 D& K; M1 L
有沒有什麼好的訓練方式
6 f. s; r: M; p0 }) V9 D: w0 d9 |1 w. P6 g; k9 e
可以及早進入狀況  M1 S9 G" c8 b, X
十月 03, 2007 5:53 上午  * |" X8 Q  d9 I4 G
( f! G6 d+ c' a8 r* @" `
Harrison 提到...
; v+ c) q/ }# E現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
& |1 h8 o: N0 S3 p0 i# ?! _9 _6 C" t
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
8 d1 T, U; `, ^7 \& E( z7 M; ?! l8 _( t2 l8 d
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
. I+ i& y9 y4 a% l十月 04, 2007 5:39 下午  
9 t7 v2 \" K& a: A9 |+ X. }
0 l$ e3 O- L1 T# ^$ `% I/ Etonyya 提到... 1 W; V8 `# P2 u
首先感謝你的回覆7 [( f4 F6 N- t9 F0 e" K7 b) A' s

- Q% Q! b- x  `, a6 l+ L1.目前接觸的是Legacy BIOS(組合語言)( R) W6 u/ K; p; E* w' r
2 A8 j1 F8 ~% h. g  m
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
' \$ f. g- i/ }8 G: y6 E8 @( l; y. y# y- U3 k
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份; n0 V4 ^3 w( v4 q4 Z
1 i1 t3 S' R5 E3 X0 G# D: U3 _
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!% o8 y. ]1 ~' o

  P! @+ `# r; O$ {0 n5.再次感謝你所提供的意見) `* J, j" ?  X7 A1 f& ~- I
十月 05, 2007 8:09 上午  
) d) g* v( n" L
& d; c: ?7 [( z* c& o) }3 B2 y( ichiehlin@mail2000.com.tw 提到...
( T0 x( K! ]3 o+ uPCI Register 是 cf8 cfc Index ,Data
" ]7 p$ m, ~5 U9 X, J十月 25, 2007 11:17 上午  * T0 j8 f7 @0 }% U8 \% K

" V* S! }, i2 {' r# B! ?PT 提到... 0 \7 Q( x/ E  o1 ?3 P( @7 v
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)! J4 ?+ t8 v) t# Z4 b
mov eax, 80002750h8 f! X1 n8 M) J3 w7 Q, R4 P
依照我的理解方式是$ \" o6 z, h4 U6 r7 \
10000000^00000000^00100^011^01010000
8 G, @0 S8 T$ p8 ~  `5 P所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-4-19 22:31 , Processed in 1.539300 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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