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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
6 U$ G, R, Q7 D7 ^1 \- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)1 p3 n! `& h7 V, M# E4 O% V
- SB(即 PCI-ISA bridge)
3 p) `. u8 g) X8 b" r9 N- ACPI registers; h( S9 [/ u  a* w2 E8 X( H$ @
- USB registers
- z1 K1 B7 B9 y3 _( p% j) a! R- SATA registers
" x% E& a) r( @0 W% s5 A, o( P- PATA registers
' A5 h/ A$ z" t& T* ]...
$ }/ s7 l9 L& [$ ]; G
* f4 j$ V+ H3 z& d* 在此所謂的 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之處 !!!# V" \' ?+ o& V2 Z$ B$ }, m, C7 X

- t" p4 a9 _# ~  X* ACPI registers通常透過 IO 來存取: W/ S* D7 }/ {
Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
' e% w( L, C% i9 q1 y6 u% g# d+ nmov dx, 855h
4 d  B0 x: H8 Nin al, dx ; <- al = ACPI Reg55h's value
- T/ P$ E& V7 X* Q4 Z: D) K4 `: ]
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
% V/ w3 d3 f* ]0 V: C" T1 R" K# b# n
Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)6 a5 b5 k, O& f6 a
=> 簡單的 assembly can be:; @! }/ u) l" a
+ q0 m: {* ~. [$ R- r; ?: T& a
mov eax, 80002750h
0 X$ W1 [! ^# P( G, h' X) s; T2 lmov dx, 0cf8h: O6 z' O+ p& u( n
out dx, eax
; O, z2 T/ G% R6 n8 O1 U# x- ~. ?( u  n9 o& w
mov dx, 0cfeh
# f4 [% d% K* c8 }" W6 x) Rin al, dx/ ^0 |' w; V& C
or al, 00001000b1 R7 N. ?1 P! F7 t- Q
out dx, al 9 L# t) I& d& H* g5 U

. m( ?6 q# u5 `* F8 X事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^2 ^. ]. m, x$ g+ E2 f0 _
" I# Y7 a& h6 ?( X2 O/ X: a
*當有人要求改 register setting時,我們必須知道三件事:* E, _8 P5 u; f- ?
1. why (為什麼要改?)
/ q$ J" G# u5 F( l& l2 E  s3 Q* r9 ]2. what(改成何值?)
* _$ J# M; Y6 `" t7 V3. when(什麼點改?)
% S- h5 a. a3 ?
  F: v- b. a% W* L' O1 ]*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. 4 ^+ ^  L' h7 L' o: B6 J! O) v! h
張貼者: HARRISON HSIEH 位於 8:41 下午   ! X  k/ j) b7 a% u8 B4 b, ], l) l  x
標籤: BIOS相關
1 N. Y0 H2 ]1 q6 [7 J3 f! O6 意見: ; u" ~, R6 ^) @

8 Y! l( }! g6 m+ Xtonyya 提到...
# u, T, u4 W3 x) y" G無意間發現你的部落格, h/ G/ Y/ ~4 Y. C* o

! B9 x" z+ w1 T' m. \  X8 @很多文章都覺得受益良多
5 W$ Q4 u2 d6 C. w) R6 k- M+ e1 z: S, q# ^. j
我也剛接觸這門領域不久1 e8 i9 i) `- n) A( F! ?
* P, X; V$ A- R
很多東西都似懂非懂
) X* X9 O' g2 p% x* |4 k
! }. G/ n! n" o: J% i$ ~% @+ _不知對於一個新人而言+ h" a  N' |0 D4 H4 \/ D
: G0 t+ }% _" \& @5 C6 k' H  D
有沒有什麼好的訓練方式
7 U# d8 P5 ^2 o1 e
% |! B: s' x4 V# X可以及早進入狀況
4 h- w0 L$ e8 V1 A4 S+ ?十月 03, 2007 5:53 上午  # }+ T9 h& g1 e2 Y: U. e. `

- F, s9 Z( ~$ T+ u7 _Harrison 提到...
1 `- \8 s4 ~" v" `; Q* D現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
0 K+ u& r. ?( {/ J' U' D$ b! z' c1 N7 @/ u3 S
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。' }. H; S$ r- O! J, s5 ]7 l
# {2 ?/ p  D6 N/ W( n! n9 P1 g. G( J- q
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
0 x: }7 J' v# X! V十月 04, 2007 5:39 下午  6 v( }- K- S3 ]  f2 i# J! k* N) r

0 h- U  |% b9 K3 h  Btonyya 提到... ( B) P- w+ r6 d
首先感謝你的回覆
3 v5 r* m9 X, I( S" R% q3 f. L  _" W9 @
* U$ L" y# o5 x4 M4 R# i3 P1.目前接觸的是Legacy BIOS(組合語言)
3 }* f6 y/ f- G5 v* j
, M) w. m1 Z, U2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會0 f2 H5 l, o% ^' k
' R% `& C6 u* ]- [
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份  M  Y" x; T% D6 k
3 X5 L: f! q: M4 i/ L
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
/ x( n8 m- E) `* Z7 w/ W
: W7 p4 f" l! k6 [4 w) m, }" |5.再次感謝你所提供的意見4 c% E( F. c' q7 E; ^6 M
十月 05, 2007 8:09 上午  
1 ^# f: L5 n6 k" |5 r5 r7 x1 @
" _+ G# c% Y" H$ W% E) T- {chiehlin@mail2000.com.tw 提到...
4 S4 i/ K9 X/ ~( [PCI Register 是 cf8 cfc Index ,Data
2 C- w" b; o0 L: p9 L0 S十月 25, 2007 11:17 上午  ! H6 j0 `9 L& P3 C, M4 I: `3 g

8 G6 L7 q' W1 DPT 提到...
7 T6 R0 w8 Y% U+ M$ |, H# V關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)( A- w  `) |. S$ @
mov eax, 80002750h' L1 ?6 v" q, J7 a0 P8 \- z
依照我的理解方式是* B, b) X2 h5 V" g0 P
10000000^00000000^00100^011^01010000
8 w5 m: {/ f) k" x% H所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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