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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
$ @: M% |2 ?( p- s; F- \- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
6 a# t3 i) f* ]" N/ n9 h9 [- SB(即 PCI-ISA bridge)
7 a6 \& g! N; f+ S0 ~" p- ACPI registers& q1 W9 j0 ~! G4 A8 G8 @1 M
- USB registers
6 H$ l& h- O6 K/ |- SATA registers
8 l; C: f; k4 @  n- PATA registers
/ X1 V6 T' \6 ^...4 W0 z" B, E9 A1 M

. r$ N5 z/ E/ G- E6 l2 p6 [* 在此所謂的 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之處 !!!' ~, F- Z( r1 x! n8 H* t3 c

0 Y; p" a( l  s* ACPI registers通常透過 IO 來存取
' G6 N( a3 V8 b8 M; p( L: bEx. // assume ACPI Base is 800h,要 access ACPI Reg55h
; p, ^' j7 y# V" H3 j8 Jmov dx, 855h# l# }9 j. Y) `4 e8 |1 a' Q  ^
in al, dx ; <- al = ACPI Reg55h's value* B0 Z5 k4 @' n7 p0 E

. J9 [- p, X9 Z/ o3 P! a  C* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
/ a3 _0 ?( ^8 H1 y; N1 `
* O* @9 E" V+ c: lEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
, k% v, F) |" F, Y=> 簡單的 assembly can be:
  N. n, R$ S( f6 k- Y0 P
( ~, m$ l. H# d6 j' o, ?! p) Smov eax, 80002750h# v& ~' @2 d5 j! z
mov dx, 0cf8h
4 c$ w1 X  a0 Tout dx, eax
& O# e/ L; P9 S# R6 S* n, S: M* j6 A1 q! ?4 l5 |& m
mov dx, 0cfeh
7 C/ }% F8 r7 O: U6 fin al, dx) s/ v8 Q' w8 x$ B, [
or al, 00001000b
& s" a4 M/ t# q& T7 d; A9 Lout dx, al , H& V5 s' t; u# x
7 u3 u& b; @! n* _) u! G! E4 C
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
, ]( C$ ^, U- n+ V& b; Q4 v. Q
- X& d8 y# F$ I: O  M*當有人要求改 register setting時,我們必須知道三件事:
8 k! f5 f: h7 j1 [' h& \1. why (為什麼要改?)
) c$ e- `, z3 I2. what(改成何值?)
4 J/ I1 _# {! e% @6 H3. when(什麼點改?)
8 e6 j7 Y: y  z) L& Q: _6 r
2 H3 `# m& e3 Y/ n*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.
( A: I0 }3 U2 @# E; `2 U2 ~. ~張貼者: HARRISON HSIEH 位於 8:41 下午   / D3 s* P2 u" Q7 f/ V7 {5 e2 D: Z
標籤: BIOS相關   e0 Y% a/ M7 W# ~
6 意見:
1 k1 G  [$ r+ Q& h* S" K
1 k# [0 P5 m* Z! u% P0 s1 L0 Ptonyya 提到... / m8 l; z. v! M7 z; |3 L- H
無意間發現你的部落格
- G/ X$ e2 g( ?" k9 @3 Z% N1 B
" N8 r) F" _) A: [很多文章都覺得受益良多
7 A/ f( s6 i4 a+ Z( l  u* y0 i9 r; S
4 `% G! F- {4 H- @  b! h9 t9 e我也剛接觸這門領域不久
2 O1 B4 ^7 L2 k2 I! x
; U3 e* V, [! H) [很多東西都似懂非懂
$ }8 e% g1 P' y
) L& m) U$ [! N6 g! e1 L不知對於一個新人而言) X0 r8 ?& K; b8 z% e! N5 b; z
# p4 j7 I3 j" ^0 G3 _2 ^! s( I
有沒有什麼好的訓練方式* y- |$ ^- G  e( d4 ?/ F
2 u. a' ]/ \0 k: ~3 Z' E/ b6 m5 y
可以及早進入狀況
, X3 X$ b7 S( \% }  b3 V2 `! A十月 03, 2007 5:53 上午  2 F% s- r) E5 \
% U9 }5 r7 C/ e" E6 H5 n
Harrison 提到... 8 \8 P! w+ W8 _; O! O$ k
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
# C6 ^4 [% s2 l$ P6 x" V& n
$ A# ]! C3 D4 |. J* [( o所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
5 E/ K) @6 P! K0 {+ m) v
4 D1 c2 k+ c  p$ \$ n3 \6 j如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
+ i# R7 k! `5 A! h& k十月 04, 2007 5:39 下午  - k5 R" a+ ~" S+ _

' Z7 {' D  q: {9 u9 `- I+ ]9 Wtonyya 提到... # I! ^9 D- M0 ~  _
首先感謝你的回覆
( Q% \, c+ r5 x' s, u& J8 ^, v/ L: s5 V& |" c- j& `
1.目前接觸的是Legacy BIOS(組合語言)
/ O3 O2 D5 s7 P/ S6 S, l0 p% |& @$ W1 y$ I
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
' p( P$ f: h' X% O# |
3 j, D' N9 H, y) ]3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份& t* e- X/ F- Z1 I" h, _- k5 a
( J4 M2 H; r% B0 X. h
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
# W( ^. T( Z+ Z, b& Q5 n' X: u* T- z3 p' j
5.再次感謝你所提供的意見
5 C2 p4 x9 f, K, f! R& h十月 05, 2007 8:09 上午  9 n; J" T* S" B. G  Q. Z

" p0 t" Y4 ^! J4 c! y1 J8 N4 Fchiehlin@mail2000.com.tw 提到... 4 l; o3 Z$ Y: q4 _2 f( F4 O
PCI Register 是 cf8 cfc Index ,Data
; B- r0 G3 X7 ^! f4 o6 @; o# R3 }十月 25, 2007 11:17 上午  
  ]% ^5 H7 Z$ [ 1 S( b4 z5 ?2 f1 y# H
PT 提到... 7 x2 X/ r/ I, {8 @# |* G4 b
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)( W2 D9 @! a" D3 x: A; R% E
mov eax, 80002750h
) S) }; J# C" h7 ]  J依照我的理解方式是
/ I1 W9 U7 p, f" i4 \10000000^00000000^00100^011^01010000
0 U2 s. _# l; Y: y' s' j# o; g+ W所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-7-20 09:20 , Processed in 0.379501 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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