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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
  O: o/ d* ]$ U- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
9 a5 z, t. L9 P) ~' N; T9 M2 x- SB(即 PCI-ISA bridge)$ ]9 c% Q0 _3 [" M( F9 ^5 B, A
- ACPI registers  F4 ]; v" B$ g9 ~
- USB registers
% o. X# c- U5 e2 m- SATA registers; D! o9 D1 r( Y  N. n
- PATA registers! B$ ~6 Y, J' }# X& ?- W
...# G0 f5 V8 N7 a( z( }& I- o/ s" X
% `0 A" |2 O" k/ n/ t
* 在此所謂的 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之處 !!!7 E. O8 C& h! ]' c
9 `5 f0 u, m5 T7 x
* ACPI registers通常透過 IO 來存取
! n1 K" y$ a; y# [3 C9 g0 QEx. // assume ACPI Base is 800h,要 access ACPI Reg55h5 Y4 Q1 M' S, c3 n
mov dx, 855h6 Z% a" x* A! O  ~2 C+ E9 F8 a3 }
in al, dx ; <- al = ACPI Reg55h's value
; f9 n7 \1 e: [3 X( N& A" X
. z, B( N6 M# D1 K* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.+ B7 O  b3 P- P9 Q$ h# ^- u

) Z3 F# \" m( h3 eEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
* l5 i" D( @; T" k3 l/ |=> 簡單的 assembly can be:* S$ V! D$ H" I& B) b, d3 T8 v! }) M
! Z. }9 O6 C: N/ L, S- `+ i7 J
mov eax, 80002750h
2 w# m$ Z4 s* S8 H4 s3 `mov dx, 0cf8h# X' Q4 O* `$ M0 A! G
out dx, eax8 c' |4 Z- l$ r
0 {# f0 L$ V9 U
mov dx, 0cfeh+ _- z+ A  A! t4 {$ R
in al, dx
: t7 g$ s- t' @3 z) J& Kor al, 00001000b/ L) e( v) S' H- s
out dx, al
, B/ q3 c8 n7 }* o" b7 R/ w0 L4 R% v% d0 ?  B& o
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
% w, {1 D' r. T, L% {/ y6 [/ s% D, c. l  b" u
*當有人要求改 register setting時,我們必須知道三件事:
& [: h& O; `! o. j! z. X' v+ d' K+ g1. why (為什麼要改?)
% ?+ w" ?" g1 P6 i) l8 i2. what(改成何值?)% q* E7 X4 x/ V0 J/ F6 F. b0 M
3. when(什麼點改?)
* x' R, r! H' @0 Z$ z: x- k* v
! x6 K: ~& F% x3 e*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. 4 H3 }6 n8 F6 I+ T5 M9 P: w4 {8 }
張貼者: HARRISON HSIEH 位於 8:41 下午   
2 F8 t5 t& j+ w' ~標籤: BIOS相關
% M" j5 U0 {9 \. d+ I) {1 \& a6 意見: * }3 ?, r0 ^8 P& M
) z' }0 `# @: W) F" y
tonyya 提到...
+ {6 \( A9 v5 T1 n* S1 q3 h0 I; V% E無意間發現你的部落格
  |8 e# y# I  ^3 |8 V) P8 `+ N9 C
很多文章都覺得受益良多
; H9 b" q$ q2 ?7 t: y$ O% C
7 }) _  z9 r7 n我也剛接觸這門領域不久7 Y" Z* G6 Y+ s2 V
* P7 ^. |3 k$ S0 d0 h
很多東西都似懂非懂
3 l9 t) j, s+ d. P; y9 M
; r8 _# |8 S: a+ {- o. K7 v不知對於一個新人而言
( e0 G" l- K5 I0 c( w0 {6 g$ c0 Z* T: n4 _
有沒有什麼好的訓練方式. f- i. X/ u* m6 p; b9 z  z5 H

) p5 i# R) N4 K- V( _可以及早進入狀況
2 F. l1 J4 t( q+ z" l: j% L% S十月 03, 2007 5:53 上午  
$ ~2 b$ {# w+ |+ Z0 V 0 l+ q/ M3 p7 Q4 q
Harrison 提到...
% Y' J5 J' n/ r0 n! ?! o( ?現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。5 r/ Y4 d. o: K& f8 c$ x+ O

  n' S2 u) s" t. Q! T* g4 ], [所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
" F" N, m9 a" d& p0 q" j( v- B5 _  f  P, A
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
) K7 s) p' y  i7 u* R/ ?, }十月 04, 2007 5:39 下午  
  G- L2 p3 ?# X " y# F1 W. ]% Z8 R- ^9 a% `
tonyya 提到...
4 e/ a! q. ]8 N) D3 Y首先感謝你的回覆
1 H$ v* ~* r/ `% J; C  I' a4 i: H! a, k2 h- |
1.目前接觸的是Legacy BIOS(組合語言)5 A/ ?+ |9 n& {! x6 b( n" [" Q. Q

. X* h- v5 W5 X# ]7 D* J2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會  _; r0 Z9 b1 m0 S: k8 D

, m0 i6 u9 y$ O- l3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份/ L+ |  h7 C4 R$ D/ p

( p- f! C) e5 t4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
' \4 W, K- Q! s& _; R- G2 l# {4 ~0 |8 S; L; f
5.再次感謝你所提供的意見
& X0 P) G6 p% Z十月 05, 2007 8:09 上午  
  y/ [' R6 t8 b9 n8 l 2 }1 ?% _( n0 c3 ~* [9 n4 L( L
chiehlin@mail2000.com.tw 提到...
: ]( }# F' n& J9 q4 g7 gPCI Register 是 cf8 cfc Index ,Data
4 ]! j" O! V% e+ e1 @2 B6 j6 u/ J十月 25, 2007 11:17 上午  
3 g9 R5 |$ Z% g1 d- s( X
. E3 {8 [2 i* I, VPT 提到...
3 \: q6 m  `. i! ~* E1 n關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
$ F! `# U( K  E: b1 n6 Umov eax, 80002750h
; C$ Y+ u1 S6 _, U依照我的理解方式是
/ Y2 r6 o  ~  `' T, p) U10000000^00000000^00100^011^01010000
- W5 l) A. N& U$ s所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-2-1 04:24 , Processed in 0.056346 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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