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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:1 i+ [/ a4 O6 k) c0 _
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)- e/ u# S# Y6 W3 U) O8 k* ^
- SB(即 PCI-ISA bridge)  t# G: l! `0 ~' b% K6 [. H& Y; _
- ACPI registers3 f5 c- G2 Y6 a$ j* Q/ L! i, l% m
- USB registers* O; D9 z& B: {
- SATA registers- e- Q% p3 x. h$ Z2 @
- PATA registers& X6 r: z2 m) S
...* H3 k5 |1 V% P8 l7 K
( @' s) C; y2 Y; z7 o
* 在此所謂的 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之處 !!!+ S% R. I! U# m& @0 N, y
, A5 M9 e1 R6 J7 y& ~5 W
* ACPI registers通常透過 IO 來存取2 Q( \& ?3 _0 d7 J. D2 u
Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h' Z6 b+ C4 H9 e
mov dx, 855h; N5 D7 d3 [5 T6 x$ z- }
in al, dx ; <- al = ACPI Reg55h's value
- X! m* ~0 S" [, L& ~" G6 V3 _0 I, Q9 I! }7 Z  O9 T
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.2 a8 ~, P5 K7 A9 b1 a% J2 I

" V* S6 T) `8 _4 REx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
# |' D7 v! M  t=> 簡單的 assembly can be:
; ?% J0 R. ]8 k3 n: i* x" B
( {6 T; r' R8 }) Dmov eax, 80002750h
: M5 Y; v7 ?" ]1 f" r5 Kmov dx, 0cf8h
% i# x* {  t9 v: _9 Q3 O1 i1 vout dx, eax
6 [. F( X. S7 o2 C3 A: ]( W4 O8 O+ J9 A
mov dx, 0cfeh
; X$ d7 G, b& a7 B( h' V+ Hin al, dx: f$ I. z; W' X
or al, 00001000b; |' N# C$ j' j1 o# a" `, P% K
out dx, al
# p! p' A  A) y" x
9 d1 N0 e: D! S4 v( ]3 ?: V" n事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
) A# L& V, Z: N! A  w
) v& Y9 B8 f; L) w$ e*當有人要求改 register setting時,我們必須知道三件事:
" u1 N1 s2 D( E' W8 h0 y1. why (為什麼要改?)
7 n% p) ]1 q% F4 `2. what(改成何值?); c% m7 e9 H; }( x
3. when(什麼點改?)
  d+ R5 r  l, W8 L; U+ Q3 @2 X; r; Y8 d8 H& {* D
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. 6 w7 w+ p3 F" [: y
張貼者: HARRISON HSIEH 位於 8:41 下午   
0 X* n; p1 a+ r/ x- y% P8 O標籤: BIOS相關
2 p0 s. M6 F5 {& i6 意見:
, E; p3 o- E1 z6 | $ Y7 s2 x/ V  t; `/ g! A& z! K
tonyya 提到...
% B' @1 C5 R2 |2 }- k無意間發現你的部落格1 D/ x% W, o/ w  [' P

" Y, d4 C- J7 w, D% Q2 B. c很多文章都覺得受益良多, a/ W; q' a( O: {; z) m8 j

9 z. ~+ m! `; D5 K1 e' e我也剛接觸這門領域不久1 G( l3 f/ f& I3 l$ @! ?

/ J9 h7 }; I; k1 {* Y2 u- q* C很多東西都似懂非懂
" F0 {; k. F1 q8 h+ R) {8 [. Q0 l. r. P
$ D( N1 t0 {) o  Z3 N9 ?不知對於一個新人而言
' o  X" O$ j4 g% \( T" e& K9 x, v: N/ T9 F; }/ x
有沒有什麼好的訓練方式1 A" Q$ X+ F+ |1 D8 c
# ^0 c3 ?4 s1 `' j4 B: K: Z
可以及早進入狀況- V6 f6 d# I; x* G, @
十月 03, 2007 5:53 上午  6 Q1 o' K0 g0 Z0 p9 f3 J' z

0 R) F* y) a8 @: [Harrison 提到... 5 R6 q1 a& x- n! }3 h
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
# s: X; s& B; x$ A, ^$ `" p' H: M2 o9 q+ U
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。# X+ F5 [5 ~8 H* n# x3 e; f
5 g5 t- c8 f% u2 r. }1 }% ?
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。/ D1 J- W. H  ?& h
十月 04, 2007 5:39 下午  
- o4 Z9 c# M5 @. q. t9 j7 Q( T
% R3 J2 n. J* l$ k  i5 V1 Stonyya 提到... ' `* ~+ s9 \0 ]7 R/ c& v" m
首先感謝你的回覆/ b( s6 Q, j4 j9 e

/ y* d' p1 ^* `) U- `* n( w1.目前接觸的是Legacy BIOS(組合語言)& p& Y+ D3 N; F2 n4 p
# }% H; Y3 v% N* `* s! L( x
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會9 s1 j" H& a) Q* u1 V" F

, W7 H, d. {: M0 j0 f4 Y3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份9 d5 C$ P' s( O2 _) [
) Q, i  `. w7 P: i
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!* u5 V% O0 ]8 G* f* G2 L* B, l& c
/ ?: D1 I1 y# c  t  K- {* G1 J2 c
5.再次感謝你所提供的意見+ q, X5 q0 n  l
十月 05, 2007 8:09 上午  5 k, h, @  C% a' q& R, t5 X1 Y8 q4 B

* `( e/ v, X5 V( q- l7 {# d, Xchiehlin@mail2000.com.tw 提到...
* Y& e! @( @0 U: bPCI Register 是 cf8 cfc Index ,Data$ n8 q6 L: \! j
十月 25, 2007 11:17 上午  1 W% z5 W% y/ i% o' m4 `
* G- e  e' N9 |' E! T
PT 提到...
: e: K9 y# _" p  ?3 f2 W% D& I# Z關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
6 w# I( l7 C9 c) F# emov eax, 80002750h6 C1 ~$ q5 H9 A( l; [
依照我的理解方式是
3 t8 r: R) m3 e4 @; ]) G" L10000000^00000000^00100^011^01010000% c' w* g% T8 [- F( W$ _
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2024-5-20 11:38 , Processed in 0.019964 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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