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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:1 L: Y2 m- n: V" V  p
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
& Y3 Z& |# T& R- SB(即 PCI-ISA bridge)
0 u- i7 e& |# v+ _! N( r$ D3 n- ACPI registers
  i8 c. n: T0 b. H- USB registers! N/ d5 E( _! N6 A' w3 X
- SATA registers
& x6 r: \2 F& G8 B/ W- v- PATA registers
$ g0 @7 c% S0 L+ a6 v.... N2 ?5 L8 `" [3 ?) ?2 J6 Z* B/ e2 X* F

% \' e3 o% A' \$ j. B. z) U  ]* 在此所謂的 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之處 !!!  a' P2 a; \7 P
9 N3 K) }" L+ x  T8 |: ~: S
* ACPI registers通常透過 IO 來存取
0 l5 t% M8 h  s" [6 j8 JEx. // assume ACPI Base is 800h,要 access ACPI Reg55h
3 P2 L' X: ?/ s6 Y, Imov dx, 855h
0 G/ u9 Y2 L) z$ gin al, dx ; <- al = ACPI Reg55h's value
& m9 S9 t) T6 l, e) q: Y# ^8 E" \5 T$ H( I' P! D. e. l
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers./ t& t0 y4 P2 }2 c: Q. t! X. w

; s* X* y' K1 K# w' u) I3 \Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
, M" _, v3 ?( @+ g" _, v=> 簡單的 assembly can be:: _/ p7 Q( d: ?: Q( o) ?; _1 |

" T) W& F7 p$ U  r4 Gmov eax, 80002750h- ?' y  J8 E/ X- A5 @2 t
mov dx, 0cf8h
' T; M- ?* |8 j) P0 |5 P" ^' @) _out dx, eax
- {$ M- l: ~7 J; e0 L! k/ _, m0 Y( W% Q2 t, p
mov dx, 0cfeh
! Q) n! g; \. N8 T  n2 tin al, dx5 A9 A+ y2 G6 Y+ j. }# Z: ]2 J5 V) ^
or al, 00001000b
% F8 m5 w. S+ J0 Q0 Uout dx, al
; c0 s, R; I6 G. U" V' R0 A
( o/ i6 o0 U$ H. R2 \事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^8 M+ A: m, t: E0 \
8 }# E# \0 {# }2 K( s
*當有人要求改 register setting時,我們必須知道三件事:7 L+ H* @, _5 o1 W
1. why (為什麼要改?)
3 I5 O! i5 G2 |- |4 n/ f2. what(改成何值?)
7 r) F8 U7 N& G1 u' o/ v; {3. when(什麼點改?)
( Q; l) k- [6 E7 z$ B- Z( H
# }3 [& _& J6 f' |" T! P; b* ^% S*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. ; u9 H8 `8 w6 N% O. s
張貼者: HARRISON HSIEH 位於 8:41 下午   % V9 d* B! V* ]6 S/ O$ A
標籤: BIOS相關
- `) |. f" x  F6 意見: + [( {; q, r! @, X( ]% _2 H) J

! m6 j8 g  P& J: J. d5 ]tonyya 提到... 0 a  \3 P6 h! X6 i
無意間發現你的部落格3 j# s2 d: c4 R9 L8 ?4 g

% j- q) a9 f) I, g6 T. J很多文章都覺得受益良多
7 K9 G$ Y$ J& e0 P- n8 o: @* G8 Z: ]
我也剛接觸這門領域不久9 q* G7 F% X5 F' e

  _- h7 m3 k  O/ R9 m$ b很多東西都似懂非懂$ i6 c+ U8 h7 O9 Z' \# d0 k- T
/ m  J( _. g9 S2 l# j
不知對於一個新人而言  v. \9 k* u4 {; N: K

% n" y* B) @9 F& u0 p有沒有什麼好的訓練方式
" P9 u1 w  q0 b  x$ N) O) T
8 m1 L5 ~9 t: C可以及早進入狀況
& M3 }5 C, W2 u8 V; @' W十月 03, 2007 5:53 上午  
2 q7 p% ~" _6 R4 B9 `8 X& o2 ^ ! k3 L6 p4 v0 z8 ^
Harrison 提到...
: _- U  G$ Z7 k! T8 U" x現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
. k1 n8 O! V% E9 n. m3 E. I5 ~, Z& ]* G' x
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
: G( b8 t5 s4 h) V: }/ w
8 L) v. c$ }* g- W! e9 I) f& @/ r& @如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
# {1 o9 b/ o+ T3 _3 A十月 04, 2007 5:39 下午    V+ k$ }' D- Q& L

' [, x( E0 F( q% K# Qtonyya 提到... & o4 t: n3 g& F$ e2 E0 O  o
首先感謝你的回覆* j- g% I) s. k  j  e" f  {4 c# S
  r" p7 H* W9 S) y7 y
1.目前接觸的是Legacy BIOS(組合語言)
6 J  a9 _5 j3 L9 Z3 T7 g2 P' q, r2 n7 I. d2 {6 s1 a
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會( ^. s% t" P* u) @" }% @

' D' R2 f1 b6 Y- u3 u3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份
" C1 ^. @( a& l, P; y0 x$ g, }+ U& e( C7 ?0 S: J: A4 Y! R
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
! B" E! ]( \0 J  c7 ?, f3 A+ U, F# ^/ D' T. X+ Q9 g. Q
5.再次感謝你所提供的意見
  m; ]( o2 W. ~  N2 L2 k十月 05, 2007 8:09 上午  
# t. |! h4 j3 G
9 w/ u. }- x1 n# D& N- P8 z; ~( Kchiehlin@mail2000.com.tw 提到...
/ s" v' _/ Z* r7 j. y$ G8 oPCI Register 是 cf8 cfc Index ,Data8 L: J1 Y! i, u0 B8 C: k
十月 25, 2007 11:17 上午  + x& B2 t2 k1 n7 x0 H

# d/ u* D0 M. I& D, HPT 提到...
+ z0 q3 _. w. C/ \1 J, N關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
1 S1 e0 m6 J* f5 Rmov eax, 80002750h- f6 j* c8 m, i8 Y0 c
依照我的理解方式是$ |/ X: v. z+ X% j; F# T! G
10000000^00000000^00100^011^01010000" j6 S2 L/ Y8 C* A9 i) S
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2024-5-20 05:42 , Processed in 0.021235 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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