找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 15887|回复: 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 R" [* D  V9 m% q( X
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)' [5 I9 S* S' f/ K' n
- SB(即 PCI-ISA bridge)
/ r$ ]6 ~" W$ C7 X3 H- ACPI registers
; m$ v/ p) E4 M# s4 q, z' W) ?. c" R- USB registers
# H6 J* i3 Z# X5 {0 @8 `+ M" g. M- SATA registers
5 {/ b, p. K, `9 h! }- PATA registers
  M3 G! n: x6 @" o...
/ @0 g7 Q6 s" D4 G; y. K' {3 g, d& a
* 在此所謂的 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之處 !!!
6 z, H: N% K4 N
3 z: g6 V8 Z* x. G( M* ACPI registers通常透過 IO 來存取
% @% P  G. J$ {  }! tEx. // assume ACPI Base is 800h,要 access ACPI Reg55h
- y' Z  F2 I6 m7 F6 nmov dx, 855h
) h; _5 X: U$ Iin al, dx ; <- al = ACPI Reg55h's value
) C; D, J; c! |' U) a" J
. a, ?( R* f" E* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
" x; N5 c8 L& b9 |# h( e
9 a+ j. E; c5 A: x/ A% mEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)( ?. ?. K# g% \
=> 簡單的 assembly can be:6 q% [: y' K$ m9 A& j
9 Y/ d: B1 y' q; e3 `  \. b
mov eax, 80002750h
. w( o. K: J$ B& f" p: K' Xmov dx, 0cf8h
6 S5 j6 v1 @  W2 Z' z* C4 }out dx, eax
0 s. i- J& N- }1 |
; V0 ]1 R4 `; ~8 }6 j/ J5 X! B4 R/ g4 \! Zmov dx, 0cfeh
" ^  |4 J" X) S$ S8 f1 V4 Q0 ~in al, dx& \2 `0 q0 W. Z4 J
or al, 00001000b0 p" b3 Y# N* |/ j$ v; O
out dx, al ; ]4 w9 }3 Y$ O4 m
& P8 b' e1 b6 t
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
: H+ ^5 U7 ?3 w3 Z+ }, Z- }2 J
0 D7 o1 I/ T/ D: c$ Y" x*當有人要求改 register setting時,我們必須知道三件事:
* L# a/ P# g- D5 D/ H# {! y0 m1. why (為什麼要改?)
! l# `! y. ~- y- n& |. z. s) `2. what(改成何值?)0 [2 {/ C, S* h; G% {2 `* p
3. when(什麼點改?)
, }. X. M$ g. u5 C! z4 {6 i4 u& R* t; B2 B) H6 K1 y
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.
8 U( F8 ?* [- y3 _+ c張貼者: HARRISON HSIEH 位於 8:41 下午   * ]$ S; Y0 t7 G4 l
標籤: BIOS相關
7 d$ |6 Q2 Z$ h1 g. T9 ?6 意見: 7 F3 @; n* D, V7 R. x: e% K; Y

6 J3 ^, G0 G: Y; ltonyya 提到...
9 L2 C# h/ i: Q8 t無意間發現你的部落格6 f; |+ c" J( Y! x

7 d, k; x* X+ T) r( a) D; Y2 ]+ U很多文章都覺得受益良多" T, `( H! C6 O' P! o
1 k3 ]2 v7 e" ~2 ]
我也剛接觸這門領域不久8 D3 A; E2 q* I; \: g3 B

! e- R1 X& k" [6 a. X很多東西都似懂非懂# d, J! N7 ]8 x% B5 r4 N2 N$ q) h
: a- P! L8 t! j" {5 p- f
不知對於一個新人而言' U5 H7 c4 d) G8 k

5 W8 x+ a7 U5 R3 c- x( L有沒有什麼好的訓練方式
1 d6 G# n, P3 F: X. p* Z, ]: q$ j
9 ]  y9 L, Y% G4 G可以及早進入狀況0 w5 z7 T2 _/ `+ x
十月 03, 2007 5:53 上午  
+ ^/ E0 b- ?+ g9 y5 k6 W1 W
3 c: L; P/ G% k- x& ?1 oHarrison 提到... 2 e" j4 s5 g4 z" z% @
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。4 ]+ i) f8 f: r+ D6 R% }

9 o; o# A% U, T- b7 K所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
, p' c8 }6 Y0 X( L( a6 r9 ^- J  f# T0 t! P" {0 P0 M* r0 R. R  Q* d
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。1 F$ `- _4 O; p( t+ ]
十月 04, 2007 5:39 下午  
0 Q9 ~2 h, f8 {6 c ; A( j( k% ]3 U- }* i
tonyya 提到...   u5 o. @& n) O& j$ O
首先感謝你的回覆- z& m4 q8 d/ Y
# W# l& j0 f: w& R& l  [: {
1.目前接觸的是Legacy BIOS(組合語言)
) c0 U: G7 ]5 x8 i  Z, ]! Z1 Y8 J+ f3 s6 f. [; m+ e4 m! V! z
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會8 q: q$ k+ G1 ^/ V! |& A' D
; W3 J8 F* U9 b& w: D
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份) I- \& I( z* t, @5 b7 f
3 W2 r7 J% F+ {) O! }- l
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!& P' d* _# P  T6 K+ y% a/ Z" T' M
) z: j& H  D( m* x: C8 }2 k% k
5.再次感謝你所提供的意見
8 Z2 ]* s  J# Y# ]; K( J" ?3 E十月 05, 2007 8:09 上午  
+ f' \& y  [2 R! e8 p3 \1 q ! X$ B( ^( D# V
chiehlin@mail2000.com.tw 提到...
. [1 ^" Q5 |  Q: n2 ?. jPCI Register 是 cf8 cfc Index ,Data, \! F: E' r2 P6 }& r
十月 25, 2007 11:17 上午  : k& G! ^3 q4 U3 W1 H& i# `8 _
& D% y& f; `5 U8 A4 W
PT 提到... 5 `' k% m# R- B) ]0 M: M
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)% @- E* N+ V' ]) u. ~
mov eax, 80002750h
* E6 \9 x" s3 u' y1 w1 e6 r4 e依照我的理解方式是
2 ?7 g1 ?# N: O3 [$ K# C4 ]8 M10000000^00000000^00100^011^01010000( h/ Q1 @. c* f9 ]7 a2 a
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-2-1 05:42 , Processed in 0.070266 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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