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

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

[复制链接]
发表于 2010-7-1 11:31:10 | 显示全部楼层 |阅读模式
一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
+ d' G6 H7 Q4 z- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
0 z# ]6 c+ d% F1 `) ]& a: }' {- SB(即 PCI-ISA bridge)
% P* Q. f2 b# t- ACPI registers- n1 v7 k. B6 {
- USB registers! q8 r5 h) e, ~2 @/ y" `2 @
- SATA registers
8 f& l: n1 e/ @9 U6 L- PATA registers
# d, W0 O. E4 [9 I: p; _9 F2 \...# K! K1 l$ M+ y+ |! ~4 l3 O

* E3 V3 L. `1 G# l* 在此所謂的 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之處 !!!
" Q% R& }* ?. w2 R7 E4 ^1 v3 d; @+ m* n9 w% {6 ]# S( W
* ACPI registers通常透過 IO 來存取4 g9 W; C2 q5 w! F6 Z
Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
' C" P; u; ?- cmov dx, 855h
" z# u, c  _/ x; fin al, dx ; <- al = ACPI Reg55h's value
% ]% w  x0 j- b' W1 o( f1 ~: O8 L  L& {$ `6 [+ _/ o
* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers., d; W. h2 N5 b* s

8 X! k! k# p' OEx. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)) @! x% q/ {: l2 [
=> 簡單的 assembly can be:
7 E9 J* I0 [/ t4 x" U+ M0 F& h  `+ O0 W' c+ U$ Q5 Z( o
mov eax, 80002750h0 G. z' d. o. h& c1 O: m7 ]
mov dx, 0cf8h" _. k9 K: h9 i
out dx, eax. U2 N9 X* O5 M/ L' b4 T
: ^/ A! {) F5 d5 F6 ], x
mov dx, 0cfeh( H! V/ B. M! B9 k5 N
in al, dx
5 D  {+ k. T! c% L$ k( ?" Dor al, 00001000b& w+ t. j) R- C' E- N3 |
out dx, al   ^# ~) C9 s4 t) ^7 T" }- N
, N; D7 y/ F8 O1 b% \& x* X  M2 U6 X" X+ y
事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^
( @& n4 r* |8 b0 C- Y  l
0 t/ J- _2 x8 G& a! {*當有人要求改 register setting時,我們必須知道三件事:6 `6 i9 p7 J) b
1. why (為什麼要改?)3 K$ I* h. d/ b/ s
2. what(改成何值?)
1 D7 A) Q1 S/ [  G3. when(什麼點改?)" X  }  G; `* h/ x
" k* Q; n' b8 @2 X4 y3 E
*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護. ! ]+ k3 n1 w* _9 s; [+ N0 R
張貼者: HARRISON HSIEH 位於 8:41 下午   
; T8 t. l' J# k$ {標籤: BIOS相關
  T8 ~* C6 J- v0 G5 c7 p7 Q6 意見: ' ^4 a. `) C# U
9 {& z  Z0 y7 u; y0 c
tonyya 提到... + b2 E/ Q% z9 Q2 h  P8 Z
無意間發現你的部落格' R; e! b1 [5 ~- F5 {  x) w2 e$ c
1 r& v1 c0 k* n( J
很多文章都覺得受益良多
7 s+ L" |0 O. H1 g) ]% E; h7 o9 I8 F% J" S( h& L! ]) \. b$ D
我也剛接觸這門領域不久0 F/ A! s- E) s# z/ k# Y  X
% R8 z5 }- l: S3 p3 J5 K
很多東西都似懂非懂
4 k8 M+ B9 n0 J; l1 [
" h: d% V# J# \* h不知對於一個新人而言
5 r0 E' N, g1 w3 G
$ Z1 E% O, [) H4 i( y有沒有什麼好的訓練方式
1 W8 y5 M8 {7 m7 o* ~9 X# e/ x. Z# N. `4 g& ?% k* Y
可以及早進入狀況
, q; P) p; i/ y& a# F! e十月 03, 2007 5:53 上午  
7 D: X) q6 j1 S5 z7 b- o0 ] + |9 I! Y/ T1 w8 {3 g; G- N% X6 w
Harrison 提到...
, U* F0 M1 A" t現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。: P0 R* Y' e1 D9 g1 ?( p; ^

% i' u$ T$ Y! n所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。
# Q4 ?5 d5 G4 Y: M0 F: G
" I" W/ J$ K7 V5 e: R( D( g如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。: D1 ^, F3 \: J
十月 04, 2007 5:39 下午  6 ]% a' W2 {2 N3 t' R6 t# k

1 j4 d& W2 E0 C- h- o  Y: x/ V' ttonyya 提到... 1 j- M) m) v- ~5 i6 @% L4 L
首先感謝你的回覆! a8 e+ ]$ i: F/ _

! @5 K% ~' H0 H& J% ^1.目前接觸的是Legacy BIOS(組合語言)
; m# o! j5 v- N3 U; K* X
% A5 u$ V. Z9 L3 K  I3 b* w2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會6 j4 ?$ o) k% U. ]3 I8 h0 S

0 p8 x9 p. T; Z3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份
, O/ ^& `/ e7 F  _
) |: {9 @. l8 r4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!$ f' c: t7 U2 C, C
3 T, T' D. S# U. Z
5.再次感謝你所提供的意見
; e6 P1 G2 Z7 \  |# t2 _十月 05, 2007 8:09 上午  % w% f5 g; \* d, V
3 s/ `# [9 \& @5 c, Q; c! L
chiehlin@mail2000.com.tw 提到...
4 X: v: z$ A7 H0 \$ @; V3 EPCI Register 是 cf8 cfc Index ,Data
# U9 Y7 \. i0 A1 A0 V2 X十月 25, 2007 11:17 上午  ; Y! {6 Y4 G7 }4 e
6 E/ f# s' m# `1 Y8 j& Z& x
PT 提到...
% C+ P7 }6 @' G# y7 L關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)8 \2 I: C6 `% ^# h3 e2 ~- b# T
mov eax, 80002750h- Q1 e0 N' o; t6 q
依照我的理解方式是
. H) t" _" Y( Q0 h9 |10000000^00000000^00100^011^01010000$ B( {+ e' x- I
所以應該是80002350h
您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

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

GMT+8, 2025-12-1 01:27 , Processed in 1.761742 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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