|
任何 firmware 都有相對應的硬體;也唯有深入瞭解硬體,才能寫出好的 firmware ! (當然,對 programming language 很熟,有技巧的的人可以寫出好的 firmware,但是,另一個層面是:對硬體很瞭解,所以所寫的firmware 與 H/W 搭配良好,這也是另一種值得追求的地步)
& O' _* {' x1 ^$ ^
& V% ?* @; L( tBIOS 就是 "主機板的 F/W". 所以,它的對象就是主機板上的所有 devices. (為了後續的解說,我只列出一些,其他的坊間書上都可找到)0 N) I, o1 t! A
2 s) H# e' W9 t7 M8 {- [CPU]
1 B: |$ g; c; \: T. @=> central process unit. 依架構不同有分 Intel or AMD cpu. 其工作之一是: fetch code->decode it->fetch operands->calculate->store result.7 Z2 j: B) a) @/ Y: Y
d" |3 B% j* z j8 N- [North bridge]! J& E0 W: M0 N6 L
=> 即俗稱的北橋. 常見的 Intel 945/P/G,965 等是其北橋晶片代號. 它可以約略區分成四個 blocks(H/W view)
7 N8 u0 M: K4 N5 ?1. Host interface: 即 與 CPU interface 的部分. & _; u/ b: x& D8 C
2. DRAM interface: 即與 DRAM interface的部分
, B- X, I$ h2 y7 m8 r" c: V" G3. Display interface: 即與 AGP/PCIe VGA interface的部分
5 A4 j! \; X' U+ V; } O4. Link interface: 即與 South bridge(南橋) interface的部分- _! R- ^7 \( m' M5 ?+ n
1 I: P! E. E$ h) p' C) ]1 i5 P6 r) S& N
簡單說,North bridge的功能是: Host block 承接 CPU 所 issue 的 cycle, 辨認(identify),並且將之 forward至 "正確的接收者" ( Ex. DRAM block, display block, or Link block )
! |0 l' W5 {. W
5 } m+ ]2 J" F5 @5 S! t. Z所以,它像交通警察一樣,接收中央的命令,將來自四面八方的車流引導至正確的地方,讓整個城市的各部分各角落可以相互交流無虞.6 @: P8 e+ H, O* v- y9 N
; E3 ^4 J' m. P/ B# q v-[South bridge]
' k( P5 b) i1 X8 g& [=> 及俗稱的南橋. 常見的 Intel ICH7/8為其南橋晶片代號. 它"可能"包含以下的 blocks:
' l' S8 h0 \/ u( k1. Link interface: 即呼應北橋的部分.
2 U1 T0 ?4 o- @' U# l3 H' ?/ S$ t2. PCI block: 處理 PCI request部分(即 implement PCI spec H/W part)2 W( [# n& i+ \. K5 j3 o
3. ACPI block: implement ACPI H/W part
. W3 {4 ?- g: V" [5 J5 q, w4. USB
# _, ]" |% E. z) J: J6 h' C$ u. A5. Audio
# P# G! Y+ J- M# z7 r0 K, h. I; z0 A6. SATA(AHCI)
, N5 ~" f: w, r% O7. ...; X9 q' y" g% P Z' S
6 K' W( ]) B! W9 |+ I( w% C
所以, 南橋裡面包含許多我們常見的名詞, USB/1394/SATA/HDA/TPM/PCIE...等
% X5 X0 z; _: K! c2 H" w9 C3 E; g" O% \: L, {' E
-[BIOS ROM]
6 e; b/ G0 o0 Z=> 儲存 BIOS image的device. 常見的有 ISA ROM/LPC ROM/SPI ROM. 編譯出來的 BIOS binary file透過燒錄器或是 flash tool 燒錄到此 ROM中. 內容是0101...的 binary code
, Y/ i$ T0 C' w4 n- [( B/ _$ ~) k1 r$ j
所以,總結來說: BIOS code被CPU fetch, 經過 decode後, 會轉發給NB.NB接到後也會自行decode 此 request;若是 與 DRAM有關的,則 forward to DRAM block;若與 display有關,則forward to display block;若是與 PCI有關的,則將之轉發給 SB(透過兩者中間的Link),請SB再找適合的人 Ex. USB, SATA, or 1394 controller ! ( 別忘了 PCI H/W是在SB裡...), _4 w3 @0 q. |5 E6 x* ?: h
* W4 t8 d0 E5 E" |1 ~* _
以上依序所講到的 CPU->NB->SB->ROM,將在後面的敘述中用來說明一些觀念及flow.8 B: M: q8 A2 g1 p4 {0 t
, }, C- l) I' c4 C
Summary:
' a% w t3 O M T2 y1. BIOS可以說是 chipset's driver !!!7 `; `. w X2 K- v
2. CPU所 issue 的 cycle會先抵達NB,由NB判定是給誰的;若不是 for DRAM or display,則會再轉發給SB,由它判定是要給誰的 |
|