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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:0 m! f( e4 \  M! @2 C; l
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
" z+ r" K- a( A) b  V- SB(即 PCI-ISA bridge)
$ ?3 y" ?/ N, \; T* h- ACPI registers
/ Q9 r; k( e* |- USB registers
% Q# @. U" O' C* q: l- SATA registers
* o9 u7 d6 {; h; ]+ `- PATA registers( k, S" }9 _8 P6 e" g1 n7 N* a1 U
...
( K: @4 \7 D! f- ^! [; x! {+ q" u: s& f; H  C2 J
* 在此所謂的 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之處 !!!5 \. T5 }) j3 F! v8 J3 D- S  Y0 a

: ?. |; M1 _+ ^) X* ACPI registers通常透過 IO 來存取
4 {) J- Z2 s  ]; G! z4 G" {Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
- `" z. s. Y2 w' F# xmov dx, 855h
/ Y0 S) y) N: Y2 Sin al, dx ; <- al = ACPI Reg55h's value7 c" q. q2 N% m" R
$ P7 N7 W% Q8 X" o! u/ E
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.$ d' ~, q5 Z& g

0 s9 N! _4 J  Q2 l1 t* MEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)3 p' I6 t, ]3 f+ |0 k( V& y) h
=> 簡單的 assembly can be:
; T. j: c+ V% P* e7 N
* \0 o: m4 T. X- V' nmov eax, 80002750h/ _$ L# r" h3 W- v
mov dx, 0cf8h
* c( b" B8 t- Lout dx, eax; o3 |$ e5 Z1 ]! T

6 ~6 x/ f) i9 F( {1 zmov dx, 0cfeh
  ?4 Y; H4 s, B/ C$ K+ g6 m7 \in al, dx
2 t: j8 B% a) e7 l* y9 qor al, 00001000b
3 H6 a: b& _: {1 E! _out dx, al 9 n8 d, b9 c/ S. G" q7 F
( r/ j, ]0 u2 ^5 W8 Z4 e
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^& L8 g0 ?9 o2 \: S* Y9 f6 Y2 ~

3 M3 W, i* E1 d/ `' ~*當有人要求改 register setting時,我們必須知道三件事:
7 F7 B2 i& m* p) U1. why (為什麼要改?)( {; I0 K9 ?1 W. O# V% J
2. what(改成何值?)
. t# q5 l: P0 c3 n3 S& X: J3. when(什麼點改?)( k7 A; Y' E& \5 _: G

! M; [) g% Q$ C9 y% e*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. * t6 Z9 o$ c, I% Z( k- o
張貼者: HARRISON HSIEH 位於 8:41 下午   2 ~" V5 C9 L0 b" Q8 h1 [0 ^
標籤: BIOS相關 " m! s/ _8 {, I+ m+ s3 d
6 意見: ! H2 u' z. N7 t2 O& @6 O. \! n
6 R0 i! b# b8 ~" y. r% E+ Q
tonyya 提到... " Y- z) Q. ~( Y9 i, f2 X
無意間發現你的部落格
2 v5 l9 T9 v2 o% b( t% f! [6 {) r* V( L" N6 H
很多文章都覺得受益良多1 @8 F# j4 G# d& k

+ u& k5 ]! B4 i* O9 U. r' k: t3 I6 W我也剛接觸這門領域不久
7 p' y! S+ r* q5 o
( e+ P# l" h8 L1 c9 t, u" _3 w很多東西都似懂非懂
* f9 \% g7 J2 B0 m  b* C3 b8 x; W7 O. I
不知對於一個新人而言
6 i' n2 ^6 B. N: z1 k' W& ~) j2 f/ V. S9 |
有沒有什麼好的訓練方式6 X: A2 o, Y4 [8 C& O% y% b

8 H& l1 t$ C1 }& j7 @2 |% _可以及早進入狀況
4 L' L! [* g, g2 l7 p十月 03, 2007 5:53 上午  6 q8 e& I# e6 N2 {( ~$ b% c! y
+ J5 y6 n+ C% r1 D( ^
Harrison 提到...
/ B! |0 M+ k7 a現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。% D; i& |3 ?# c

1 D$ e* e* H+ z& S0 v' ~所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。. F4 H, a) [6 w/ v

! k+ g% w& g' U: N6 G: u0 E如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。* F9 s& `9 B+ Y! c" J  v& f4 t
十月 04, 2007 5:39 下午  
3 Q9 ~& h- r. ~0 E: h 6 ?! {- M- v$ [" o" f6 l
tonyya 提到... 4 @2 |$ \1 \; o- _6 a) [) O
首先感謝你的回覆
/ n8 N  A! V5 w1 l7 W, y- t. i3 _
2 [7 g; k4 s1 @$ ?2 h! Z) u1.目前接觸的是Legacy BIOS(組合語言)
4 J# j0 K5 e8 S* n6 |! h) c" \# Q. p* a, q% p* @1 n( t+ _+ ^; j
2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會
8 G9 C2 c8 \$ E, S3 h, l5 S! Z. V8 B) z( w1 k; [/ m
3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份3 P0 E( B1 e' T3 F2 c
9 p; p4 V5 K" A: _) P
4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!: {3 R- H8 V9 t" z9 O" F5 ?$ K
. d! T' x- s% }# j+ y9 c7 P' N; q
5.再次感謝你所提供的意見. ]9 i& E" D: E
十月 05, 2007 8:09 上午  4 z2 A7 D, G% G9 k

7 s! g* |; a, ^, }' k# W8 ichiehlin@mail2000.com.tw 提到... # a5 N! D8 {* Y7 S+ E" G! l, a7 D
PCI Register 是 cf8 cfc Index ,Data
8 t" }$ f  w2 g7 c* k* E2 J2 l3 D十月 25, 2007 11:17 上午  $ k- t- T$ v/ V# }+ w! a) i  V

- Q$ I5 {! L5 Z+ P; jPT 提到...
8 S& k) k$ r% F  g, M8 W關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)! q1 }/ F3 Q, c1 z8 q% i' H- s
mov eax, 80002750h* T- n7 e( ?/ R, N! Z& V. y  ]
依照我的理解方式是
' N+ R4 m6 A% d( ]8 _" X10000000^00000000^00100^011^01010000& F. |+ G/ W& w  G
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2024-5-9 15:57 , Processed in 0.097273 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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