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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:* D+ f( o/ \) T' {7 U" A- \
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)( L" J  L- k. _7 W8 b4 r
- SB(即 PCI-ISA bridge)
  `" `  K5 K$ v: u- ACPI registers
! C& R2 c. E7 a! d0 d- USB registers# R  a8 W2 m0 O1 I
- SATA registers
, g- R1 C& p( Y' S" o- PATA registers2 W! v9 H0 g; |* A( O& l
...
) x8 \; C% S! {, E% C- h+ `6 C" i; J! z
* 在此所謂的 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之處 !!!
! x# O/ \, n: l; z/ j# ~- a$ `$ Y- \+ u- ?5 e. A7 @- S8 o
* ACPI registers通常透過 IO 來存取
7 v4 j2 ?7 r* X/ U: r; H0 |Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h& L, N- E' d, s9 k. {+ U- l' y
mov dx, 855h
2 q; q8 k' R" }" a6 n/ \in al, dx ; <- al = ACPI Reg55h's value5 S& M$ m! d( I$ L
+ w1 G0 ]* \1 m+ _& D
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
  t) V. _! j* i  [8 N! h1 ]1 u4 `5 k5 c
Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
2 A4 l5 F% x4 G=> 簡單的 assembly can be:
3 j* \2 A/ w& n& R- B$ c* N2 f1 N+ u) V* Y7 i" w3 K6 g% L
mov eax, 80002750h
- }$ T* [( y: Y5 g4 P6 H( tmov dx, 0cf8h$ w7 r  c! D0 ^. u$ _+ x( v
out dx, eax4 Y1 B7 Q3 w( c+ t

% c& b  G# `% ]2 Q; dmov dx, 0cfeh
8 p/ e  L! J5 sin al, dx
9 _/ Y" z2 |7 Wor al, 00001000b. Z8 q6 C* d! ]  R4 M3 N+ M0 _
out dx, al
3 h9 H* d% w7 C. _: a  h5 x' a4 c8 ]  h5 r0 `
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^! i% |! Y* N( m; l2 P
& U, k7 U* P  E5 j  |8 b. Y" d
*當有人要求改 register setting時,我們必須知道三件事:
# c8 G, c/ F* Q& Y- T1. why (為什麼要改?)
( z# {+ |3 `) o) T% i! A2 E2 {2. what(改成何值?)
. x- G  b! V# M4 b4 u3. when(什麼點改?)
0 {$ w$ \5 e% M1 s2 T+ K* }% q! i  [
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. 1 K# ?8 A- Q7 j3 [- Y7 k
張貼者: HARRISON HSIEH 位於 8:41 下午   % d. C# x5 ]0 ?  i: Y9 |' R
標籤: BIOS相關 ; c8 J* F  K4 T! q, x! p# f$ ]
6 意見:
3 d/ s8 R1 h5 o1 j/ S
/ L9 @7 A' G0 q; s7 Qtonyya 提到...
. L8 }4 J) Y* o1 t- Q& u無意間發現你的部落格  _6 W( j% s- _/ ]5 N1 F8 T3 K
% q3 P  A8 y' L+ k  g5 B
很多文章都覺得受益良多# Q: W2 k! a1 u/ \) X7 o
: P1 e9 ~; B$ {* G
我也剛接觸這門領域不久
- q$ l9 c. p$ X6 }2 A$ p2 h4 O! G4 L" d# \3 `, K- B
很多東西都似懂非懂
7 m# S$ |, m+ H6 O- y
. ~( D) ~# m/ J5 E+ T! N不知對於一個新人而言
5 c4 t' I0 C/ N! r: R1 u
- }" s% V1 W. \% J有沒有什麼好的訓練方式9 Y2 H3 v& o/ F2 u8 w

5 m3 H9 _, u! G* A+ n可以及早進入狀況
/ l' D, q2 t& k* I! \  ]: G6 `$ B3 Z十月 03, 2007 5:53 上午  
) u% h1 b* l- H( I! U
. k* W1 S# M2 Y$ w; K# NHarrison 提到...
) _! E7 p* J" S9 r5 I/ ^現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。7 }6 ~6 C/ e( B3 G' [. x

: M. R7 }7 u7 n  K- E3 \6 r所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。0 k, o3 L; R, P$ N* ]& |- c9 s2 q
/ |7 K$ u) A+ g; a& T& R
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
! J# ^% I, s, b( a6 ?5 k) y十月 04, 2007 5:39 下午  
- T2 A6 X3 N7 q& B7 `2 m 5 {2 C% p4 E( e) l7 d
tonyya 提到... ; y( H8 @2 A: _; o' Q, W
首先感謝你的回覆
' J: r2 ^* T# j. }+ [5 y0 {8 _
# u8 l3 [2 z, s1.目前接觸的是Legacy BIOS(組合語言)
3 m+ e* y( y+ t8 A& Z8 d/ O% e+ o: Z! P; _% q7 T
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
# I3 f+ |$ e3 C/ M5 J$ d
: f* s: x- i. y7 `: u3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份3 {, }  i- M, J$ O6 y# H: |8 R

! r, B3 S% ?+ F; x* b5 [8 Z. H' x9 ~4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
) w; y: k/ _& @3 I/ t6 d6 y: j( y2 T/ r) e
5.再次感謝你所提供的意見
/ F% W  m2 Q! O) w十月 05, 2007 8:09 上午  
. _5 c3 A2 U! b0 w, d6 G# r
2 {1 ]; m& T6 M* Qchiehlin@mail2000.com.tw 提到... . d& D5 b7 O. n4 l- L
PCI Register 是 cf8 cfc Index ,Data
+ J( f& N" e. k. ?( [十月 25, 2007 11:17 上午  
$ {' z( {+ X/ T; o4 ]. J# w
' g5 `, x+ s6 ?; b* t5 RPT 提到...
0 p. D/ Q$ }, G2 C" \* s: A5 G- Z* ^關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)* \6 [; p  T5 Q7 J) y! B
mov eax, 80002750h, h0 u: W9 X* `
依照我的理解方式是: l) E7 i! `4 Y5 \- x& H
10000000^00000000^00100^011^01010000
0 _* z. d4 q% x5 d所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-12-1 07:12 , Processed in 0.072969 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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