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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
* A: y6 E' i! _8 ~* T- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
  y: M" d" _7 l  H3 n+ k- SB(即 PCI-ISA bridge)* G: H) U0 Q- @: k: f" g
- ACPI registers
" d" l: x5 D$ T- USB registers2 f/ m0 v7 [; w
- SATA registers
' M, s- \  C* V1 ^7 e) i& @- PATA registers
- J! s9 p3 N5 t' d/ J...
/ Q/ g1 Y0 X# j- H; ?
& n& R- z( H- c0 p- C9 ]1 i, 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之處 !!!
9 U) v, c& y- b' ~8 w. x# l0 I6 a; Y. R4 H
* ACPI registers通常透過 IO 來存取
2 i0 K4 x% \  ~- T# H! yEx. // assume ACPI Base is 800h,要 access ACPI Reg55h- @. N: q/ Q  ~& A; B
mov dx, 855h7 g0 H) v( V+ w
in al, dx ; <- al = ACPI Reg55h's value
( d' \2 j) Y; p0 K- N7 y
% P, t- j# D% a1 _# M* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
$ V& _$ ]; ]8 z* b' v
7 m" ?. n9 s! s4 G% c$ ~$ NEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)6 R  _- K/ y& t) n& I8 i1 f
=> 簡單的 assembly can be:% {; b0 U+ M" G+ `9 T8 |# W# a; Q8 i
6 B; K+ T7 D* |% G; L" @! ]
mov eax, 80002750h. j$ }8 D% j% k2 v+ @9 `
mov dx, 0cf8h
1 ^1 B3 v1 G& Q+ \+ b6 l4 Q* h0 ~out dx, eax# ^4 c. x- p, K3 g, i: }
$ m5 c* S+ H5 h+ U0 |# I" y
mov dx, 0cfeh
7 A( C6 E# L5 K- K, Nin al, dx
. l5 V' B3 p7 C2 K0 W* qor al, 00001000b
3 W. {, Z" ^4 f' Aout dx, al
0 ~/ T" Y# a0 r% [
/ q- z# w& o: K6 ^6 U. u1 C) X事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^( Q' s( U3 ^' Z! F8 q. k

- D  W0 P, @3 ?* |+ d, w+ `# f*當有人要求改 register setting時,我們必須知道三件事:
- |$ t9 O1 a" k- ?/ M$ V( Z1. why (為什麼要改?)
7 V. P5 x! I3 C+ a2. what(改成何值?)" l) Q  S/ J! i& k
3. when(什麼點改?)! c" j+ P% u9 x4 a# X. I
, w  X) b' D# @3 i
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.
/ }: `% z" w6 H) A. E* K3 n張貼者: HARRISON HSIEH 位於 8:41 下午   ( Q+ U7 i! R2 b1 \) {! h0 W/ T
標籤: BIOS相關 # t4 g' b: R5 b( U! u
6 意見:
2 X1 e6 m  s0 [% k: ~: v6 ~ $ J: I2 q+ T. {. k$ C- K0 c
tonyya 提到...
& Z- Q0 H) q; f" m/ ]  d無意間發現你的部落格$ }! H" G! V% C6 Z: f- F

2 G# s0 J9 ~/ T0 A很多文章都覺得受益良多
; }+ h: g! Z7 O2 M) ]* p8 z3 p( Z/ _( I6 Y8 O- o1 d
我也剛接觸這門領域不久
$ k4 r" |" S7 @8 O+ U1 r; G' Y7 M' `6 n7 d7 R. P* g
很多東西都似懂非懂
- F7 l4 {1 X" L0 u
/ x0 b0 z# n# ~# {5 Z不知對於一個新人而言7 m- {6 Z) [% W8 n; @- ?9 ?

5 J% v5 [" }" q; T有沒有什麼好的訓練方式
# n' q1 z; [: H: ?: H1 _! z" F9 ?
可以及早進入狀況
0 v2 a, K/ `- D7 x4 K# D: e# W6 ~  _十月 03, 2007 5:53 上午  , s( A  b8 e! f; n0 y9 X
8 l1 Q6 u: G+ U7 Z( |% U. d
Harrison 提到...
3 g1 j0 a1 J; T  N8 E, c現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。9 j  h% H% G, j( a9 |+ w
, X" y. X/ E* w
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
6 S( L1 c9 Z2 `
: f3 w8 Q5 _! n% E' Y如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。- p) D3 c0 P& P6 v4 T2 b5 _
十月 04, 2007 5:39 下午  
& l; k) o" o) r/ u1 o" o0 j
0 Y; j$ m) o, \7 N4 Jtonyya 提到... % z/ ]1 P9 W2 N2 k/ Z: J
首先感謝你的回覆4 w& [3 n* t/ T7 R0 c! H5 p3 I/ L! N/ m

+ }+ x4 u1 T( a- v$ h1.目前接觸的是Legacy BIOS(組合語言)
# t" W, V5 I1 y2 ^! g2 q# G/ A7 |6 L- J) b
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
$ @! Z1 ]- f, T6 \2 ]5 f- J3 z+ |7 k
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份6 c/ e) L4 {( [: [8 }" }

, D2 i3 D0 [* x( ]  {4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
  I$ x6 l4 M& t; `' {# S" t8 p% l3 ^9 I& J7 n; V
5.再次感謝你所提供的意見( x2 o' F( {; [8 I
十月 05, 2007 8:09 上午  ( a  |# `' A3 K; S2 O
6 c! ]& Q9 y" q+ V! [
chiehlin@mail2000.com.tw 提到...
4 v/ V$ R: w# Z9 xPCI Register 是 cf8 cfc Index ,Data
. x1 N4 \9 W& J0 d! b6 m# B十月 25, 2007 11:17 上午  
; K9 z( S9 u$ ]" }
5 Q# P) U2 z( N5 Z" _PT 提到...
0 u5 R, R+ v5 [* z關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
. q) r* _0 s0 Kmov eax, 80002750h
  S5 L9 ?, Y8 C依照我的理解方式是* @* U& ]/ z5 p8 Z% `
10000000^00000000^00100^011^01010000
; E, h3 F7 T, ]( l# _) g& `所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-12-21 15:28 , Processed in 0.054648 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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