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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
. V% a4 r' M% J0 x- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
/ h1 G* k$ E( l% R2 S$ S- SB(即 PCI-ISA bridge); T  O) J' I7 c  e+ k
- ACPI registers8 }3 Y$ V; M1 h$ h0 b
- USB registers: y+ J9 y, j" M( q  J, y% b
- SATA registers
# P7 J3 F, J2 \9 F6 z- PATA registers
) A% v0 ^' J# W- V+ s, l...
4 s3 T6 U8 [6 z' J1 p
9 v; ^- b! e8 f7 z( o0 \" 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之處 !!!6 W$ r' ]0 F* E) X/ b4 @+ Y: @
; u8 h( i# x! A- u
* ACPI registers通常透過 IO 來存取
) [- t. n5 W4 B1 UEx. // assume ACPI Base is 800h,要 access ACPI Reg55h8 ]6 ^- g" V- [5 C6 p
mov dx, 855h# d! _' t: I6 a; U5 i& W
in al, dx ; <- al = ACPI Reg55h's value
% ~- g  {3 B. ?. ]  E) N7 H; D
# X/ K% }! R) `* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.
$ P# Z$ \0 U2 m. {* U8 X+ d- }, d. I
Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)4 S, s$ C# F9 U( e) L: j4 H% S
=> 簡單的 assembly can be:2 q4 {4 |! d* I1 ]3 E# [+ M: z9 s
  D( O( d+ r: z" [/ C
mov eax, 80002750h
% @0 h) r$ l' r9 vmov dx, 0cf8h3 B0 `& C) o, @* k+ L( W2 N7 B
out dx, eax
" y$ f# s: u+ A8 y! v! e5 T5 e0 m; f  {
mov dx, 0cfeh
& W5 U  Z8 }$ y* D( L8 c/ Cin al, dx6 Z, M5 A( }" v* a
or al, 00001000b
! S- [; g9 Z! ]; w# `out dx, al " u9 h( X. e8 V  A& N3 n( A! ]
% R" J$ f% ~0 J; l9 h; z9 W$ |9 C
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^1 C$ T: b3 ~, |8 K

0 J4 {- i- v2 P3 V& S. Q*當有人要求改 register setting時,我們必須知道三件事:
: |7 s3 [" e: U, @8 U; o1. why (為什麼要改?)5 z: J% `) h  m
2. what(改成何值?)
# ?3 H. n1 ]5 y' K# o7 c) L3. when(什麼點改?)  C6 a* Q- N+ s& }4 h* c3 D

: o" o* U5 e7 `5 f*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.
+ [2 B+ k& E+ {6 Y0 z張貼者: HARRISON HSIEH 位於 8:41 下午   # a  X% b9 K0 G" J7 V0 z7 M
標籤: BIOS相關
, J  s3 p8 T: f' i3 J" J9 u! j* {6 意見: # P- R, l  ]2 @$ A" I  [

4 Q2 t6 r* W: F# D! ^7 Ptonyya 提到...
- z, c, ?0 U9 z, [3 X無意間發現你的部落格
: ]2 E- h; L2 B, A* s- ^4 U( N4 G3 D9 ]" M: H
很多文章都覺得受益良多0 C* }3 a  ?. d: ~4 D( m+ Q
5 t' D  g$ H( z# U$ |. K
我也剛接觸這門領域不久
/ I, X4 A6 q; e& n* B
/ ?+ q' _3 ?$ n( X3 c很多東西都似懂非懂  [- c) D9 o/ l+ o+ q' }
; R( q( I" x' K9 G" h
不知對於一個新人而言
9 c; H+ X" d3 D  {
4 \" U' L: n' s3 m% o& p! v8 L6 f有沒有什麼好的訓練方式3 w$ T: |) b9 q( T7 k* Y8 j3 m
) D/ D9 b* U, k; u3 G* ~
可以及早進入狀況; [3 {( m1 e& z
十月 03, 2007 5:53 上午  7 C/ b4 K: F& O- q

- v# d% J& ^3 f& C% dHarrison 提到...
$ @. V1 [$ w: S) K7 y; U現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。! q5 Y: ?0 r  E; b& ~
/ P; l* m  g( h5 f4 ~; R+ L4 `
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。" g$ T6 k5 I' {& D& w' f! v
, L! I) f! q. B7 D" J' t2 u5 U! j
如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
+ J* @$ y  E$ u十月 04, 2007 5:39 下午  4 W" W- j% }* h' k& b- H9 w& p% y7 S5 T! O2 }
3 j; k1 V. S$ w+ A( L( }2 ]
tonyya 提到...
4 X1 E+ ]/ K3 |; }1 M首先感謝你的回覆9 D% i1 I( ?# ?1 x
. ]3 P9 A+ x- Z" e9 F! `7 R
1.目前接觸的是Legacy BIOS(組合語言)! P' l: m6 v- ~
2 d, O" U( M6 a, ~
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
; H# V- _8 s% R3 ]
) r, S7 M/ V! G  e" [6 ~9 t' S3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份+ _1 U9 @" Z& e, j3 g0 d( s5 ^9 S
0 z# f$ m8 L# A
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!
9 y# a' |; t; i6 \
" @/ |/ Q- d) \2 @; G5.再次感謝你所提供的意見: j' q5 o2 N4 z$ b5 Z* _- R
十月 05, 2007 8:09 上午  
( H& I! f- h+ [
. V3 v. H5 B9 Vchiehlin@mail2000.com.tw 提到...
# R, U" y; ?* B& B5 j" y0 LPCI Register 是 cf8 cfc Index ,Data  g+ T& P0 v) v' k( G$ W, f! R
十月 25, 2007 11:17 上午  
! f) ^6 E4 H. I9 C# r# z! r4 \! r: Y % d& t7 L) j$ i( J
PT 提到... 3 g3 C7 }, ?# L% q( W; f
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)% I3 _6 Y7 k& r" _  V% ?
mov eax, 80002750h
7 I" B# A. q, w7 j依照我的理解方式是
( a( t$ P3 _3 T/ H9 O0 v' B9 u3 `% K10000000^00000000^00100^011^01010000
! L( o, d5 f- F( T( ?6 B所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2026-10-12 07:29 , Processed in 0.119651 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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