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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:/ S( t/ Z+ U. L* G) i
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
/ q/ W- ?7 s7 a) D% \- SB(即 PCI-ISA bridge)
( N8 O. e" u3 @; A% p, Z  r- ACPI registers
: V+ ^! i2 y/ C- USB registers* C: p1 _5 [" J2 m! H! v
- SATA registers
& n; P  z7 u4 q$ Q+ ]% i- PATA registers
8 ^- h; R& c; y% Y. r...
! k3 \2 {) D' n1 B! @9 n. d/ r9 H  D/ b) r7 R: {
* 在此所謂的 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之處 !!!! H/ t$ a1 a* Z: v

4 |3 {# m/ M. P, z; ~% R* ACPI registers通常透過 IO 來存取
. `( k+ l1 V! t% J" I) s& P0 xEx. // assume ACPI Base is 800h,要 access ACPI Reg55h( `  J' I; p0 A+ b6 l
mov dx, 855h& \* `+ e$ _3 v8 N+ h! ?
in al, dx ; <- al = ACPI Reg55h's value# u+ A# H! g1 X$ c$ c* E( d7 i

4 W) z0 S$ G/ O4 \* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.3 o, T# {' @) u" w; R; I* x+ A1 Q

- e! w! a+ V2 B! x, ?5 LEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)! `! c9 m! |8 Q4 Y
=> 簡單的 assembly can be:
0 o7 t& [  Z1 @, u+ R8 s/ ^$ _7 O: l. `: W
mov eax, 80002750h
6 k6 F& k& R% a( w& `mov dx, 0cf8h
7 ~1 V% t) A8 o1 |( v! ~& aout dx, eax
2 X) P5 |' |) m2 _) P0 l
- f4 k7 {' t4 w* [. |mov dx, 0cfeh
8 U* k1 ]0 i, S+ t0 L# Vin al, dx
( X% \+ C, b: Y8 ^1 A0 k1 i; Sor al, 00001000b
7 t+ y% z% f) M" i: eout dx, al # X. I8 G0 b6 d# a  O% g

- S' |1 g  p. e+ T0 i事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^& c" j/ \, p8 r2 F8 }& J
# R9 t* ?' E! r. m6 {# o  F" L4 r6 w
*當有人要求改 register setting時,我們必須知道三件事:
( z2 u4 @0 s$ ?! t9 y+ Z! c1. why (為什麼要改?)
" v2 x( P, U& T$ }& S2. what(改成何值?)
% H* u9 B+ y: I! N! H3. when(什麼點改?); r0 X/ Q7 p5 Q" ]2 Y( q9 c
+ u4 R: p  N4 p0 n
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. " I* C2 I8 P. W# ]' ~1 M
張貼者: HARRISON HSIEH 位於 8:41 下午   # d4 G/ _; \" F' J4 m3 v
標籤: BIOS相關 . t" S4 Y; g9 ~) d5 |  F& c; f
6 意見: 2 ~! A7 I& O& r0 ~9 m
) x, \; B, `. P* V
tonyya 提到... : ^; Q3 X! V" _7 ~( V9 z, @2 o, l
無意間發現你的部落格
( H) M6 X3 z5 `) A$ x* B, Q7 _) u  r6 i$ M$ [+ n, Z: Q+ y3 w. t# N4 Z
很多文章都覺得受益良多
5 t( |+ N$ m6 L; u. k
; C+ b) s# |7 C& p+ e我也剛接觸這門領域不久
7 N9 k% j( o2 Q9 B3 H$ c; n( M4 Q2 y. ~2 }' K5 v
很多東西都似懂非懂2 z) |  {  P9 j. o3 E
* r) R2 c) {. v; {% X' ]0 u
不知對於一個新人而言+ U5 q4 d- j+ u% u
. g: K7 h/ U- x" n2 t
有沒有什麼好的訓練方式
$ e3 p; x9 W+ @8 k" B; k' p' U' t2 v0 B
可以及早進入狀況: B4 b# C* Q" r$ F$ A2 L* @
十月 03, 2007 5:53 上午  * e% K4 k4 L9 A1 ]& b9 h
5 }0 s' O. x2 O% K9 X3 M
Harrison 提到... . F9 J8 N& ~. Z+ _" C6 ^/ N
現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。
1 U! e% }' v1 S% v, G+ R5 H% t- o; `( X* e) w8 e# m
所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
( X+ u7 b: B9 g6 X$ ~
$ a- z! P8 B0 q+ e如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。
/ `4 I  X1 n! A9 S2 f) {十月 04, 2007 5:39 下午  
9 K" r& N% L# V& ~9 M2 g
6 f  \& ?" Z9 u, Mtonyya 提到... * P3 w4 P& V- [4 ?
首先感謝你的回覆* s$ V4 H3 ^# I- {4 ?8 C

" s, O# C7 C4 r( D1.目前接觸的是Legacy BIOS(組合語言)0 g* c, ]3 i- k4 |9 L# ?
$ T4 u! h0 M: [  L$ |
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
% @% a# f% d; i
1 e( x% i: l& U3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份6 v9 a" U* }. N3 a9 \
- V, l3 Y2 W. p  X8 l# I( ^; B
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!( p3 J5 A$ S& P

" ]1 A9 {9 R& p3 U$ H: Z; Y8 m# q6 x5.再次感謝你所提供的意見9 \5 Z4 f- w- H8 P" Q+ E. d
十月 05, 2007 8:09 上午  % l6 q: O; y' R6 B  n* h; r8 `* `; W& ]# F
3 D, [4 O8 C$ s3 z0 a1 ^# {
chiehlin@mail2000.com.tw 提到...
+ [: s+ U7 O. y% bPCI Register 是 cf8 cfc Index ,Data
/ M6 \+ Z7 C7 Y: ]十月 25, 2007 11:17 上午  * i- |, f) m. F
  Z% ?* U* F/ u
PT 提到... $ a2 Y( R+ v( B8 \' {3 s
關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3): j* s( q. k1 Z  E
mov eax, 80002750h9 b0 k0 D) Y1 k! q5 g
依照我的理解方式是
3 h) e& T* \$ e+ K0 _5 }4 h; V7 a10000000^00000000^00100^011^01010000, Y! v" D9 b1 n* C, B/ g
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2024-5-19 12:37 , Processed in 0.024823 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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