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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:9 m% |# C5 ~; K
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
' X4 \) {& o( s+ _# A3 t- SB(即 PCI-ISA bridge)* {# Q3 U- ?3 X0 `: E! V
- ACPI registers" ]! v, \: X0 h' w# l. e
- USB registers
' a4 L4 @: M3 t- SATA registers6 e3 H7 L& t& |5 R3 g# q$ b) S% }+ S
- PATA registers
7 x- H$ Q& n7 f' ?# w$ p..., L2 G$ f  y$ w; t! z

$ @( j  y/ a2 ^& 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之處 !!!+ D& m5 D' N9 s; a+ r( q
) r# T- j% i# m0 H& |: `  x) ~( X
* ACPI registers通常透過 IO 來存取
0 j3 l1 X( \- t1 ?5 V6 Z: E) ]Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
. `1 x9 n7 t4 omov dx, 855h
! s+ @2 f% O' D$ x4 @# t7 Yin al, dx ; <- al = ACPI Reg55h's value
, O& K# l1 H: g
5 m9 w3 u5 _! @. Y% j* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.7 N) X& B, v. x9 m0 a3 P: A2 b! a
& @  a* f1 o( W6 k
Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)4 G4 B0 R9 b& Q( r( N2 V+ s
=> 簡單的 assembly can be:
5 ^9 g4 l& k; j& M  U: e0 q4 t: y6 p# d* Y
mov eax, 80002750h
- a2 p. Z" B+ f* z7 [  ~mov dx, 0cf8h3 h* [1 M" n& q6 r8 Z6 a
out dx, eax1 \# V5 A% D6 `/ g/ W

4 K  v7 I4 k5 H! z5 [7 G2 Qmov dx, 0cfeh# k# o! z& O# I% a' j" L$ z- H
in al, dx6 O" [( h! m$ x: Y5 \
or al, 00001000b3 Y. k. s: Q, q# V# q! s: h
out dx, al 5 ?$ F1 ^* B: v. G4 C' j) I  o
) l& j3 `8 u( E6 |" ?/ D
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^! {- D' F8 j: P4 d# [2 ]1 Y  g! t

& y3 K9 w" K$ ^' K*當有人要求改 register setting時,我們必須知道三件事:
& `( D9 V9 Z7 e7 g  x1. why (為什麼要改?)
. b8 K3 r: X# y0 `: u2. what(改成何值?)
# c" ~1 J. h/ P/ p3. when(什麼點改?)+ ?- r) \; t& h0 y* g: {  R1 q
8 M. F8 S$ }8 t5 D( h
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. / e* ]- F8 e: O# F2 x: d
張貼者: HARRISON HSIEH 位於 8:41 下午   % d) y# d" t9 r2 C7 F* n7 ^( e+ N
標籤: BIOS相關
) E* E+ y& a3 Y( z" C( ~! @, F9 g+ T& y6 意見: & y9 P6 }' B) ]# u
, |3 d  [. h: C0 t. a
tonyya 提到... 1 x/ ]: ?1 }- \$ n- E4 s* l
無意間發現你的部落格: i' n! Q$ f6 D
9 c* S" U+ U  T# c6 a
很多文章都覺得受益良多- f6 M' c: R( Z# G

0 @9 O9 Z! l  P; w& S我也剛接觸這門領域不久( ?$ \+ D1 x1 B/ z/ m* B
2 f' K8 a9 P: c- q# |7 M: `/ F
很多東西都似懂非懂3 h5 R" y) G) F0 H

0 D8 p" E4 L8 v: D3 v不知對於一個新人而言
% p! U! z1 L) m6 }" t% d" _" u7 q0 M2 q( P
有沒有什麼好的訓練方式% q6 R1 f* v* p1 g; A  ?8 Y  A
2 K6 L& A3 x! V
可以及早進入狀況
  {& |+ m6 B7 z9 @3 ?5 f十月 03, 2007 5:53 上午  * x$ [2 n1 |( O3 \. y+ w

4 c# q0 N  A) \7 G( T2 A& }# P8 ]Harrison 提到... # T0 G) m) s1 [7 Y% J& ]
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
( [$ g, ^' o+ P& q* t0 a% i
% j+ m6 n4 D5 U; X所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。0 r: y2 V0 f7 K, \9 p

& I: z) T$ U3 L如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
2 K( `8 a3 G7 m) H! Q% W; r8 ~- r十月 04, 2007 5:39 下午  
- |3 y1 {0 W! S$ k3 V# z " i7 n" D" s; v6 C
tonyya 提到...
# G2 e' N. D6 A4 S! F; a首先感謝你的回覆2 G1 F( d0 b' q2 O) \3 j( S4 e
& j  a0 M% F% _3 V& }1 {, e6 u# i0 L# g/ z
1.目前接觸的是Legacy BIOS(組合語言)* [% q. |! O8 t# g

- {# o# p: i  Y. I2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
1 e, d2 `/ {! {5 B  f( ]6 z% P3 Y% X! H$ A7 T" l2 @
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份6 ]  ~3 j) N: v; U
) w  B1 C% a3 ~
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
, ?: J+ m5 g( S8 i: X7 l6 C
# z7 e, @: |  M5.再次感謝你所提供的意見& t$ G* J  E, Z5 l- f' q3 B( ?4 L
十月 05, 2007 8:09 上午  
. O$ k3 G7 r/ D. L; ^
5 U: k- p- l( o8 v$ i, ~chiehlin@mail2000.com.tw 提到... - E, i3 E0 n7 X8 i+ }3 \4 u
PCI Register 是 cf8 cfc Index ,Data
+ x. b$ |) c8 W十月 25, 2007 11:17 上午  
4 D+ Q! n4 m* B) G1 ^ : u! u7 Q0 m% e
PT 提到... ) j5 n8 t0 W' I5 @! r! e
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)+ I' a* M: t; F7 N- E
mov eax, 80002750h) B! E: a7 i9 `! t& K
依照我的理解方式是
" o( c7 t$ h1 E2 [7 a& ^! x10000000^00000000^00100^011^01010000; \- A4 s# @$ w. l# Y+ t
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-8-11 16:07 , Processed in 0.181607 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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