基本輸入/輸出系統(BIOS)研究指導老師: 陳德生學生 : 楊逸翔 曾成濱班級 : 資訊四甲目錄目錄 (I)摘要 (III)致謝 (IV)第一部份 x86基本硬體架構 (1)Chapter 1 基本輸入/輸出系統(BIOS) -Introduction (1)1.1什麼是 BIOS? (2)1.2 BIOS in ROM (3)1.3 執行BIOS的目的與基本流程 (3)Chapter 2 重要之硬體介紹 (5)2.1 主要的集成電路(IC) (6)2.1.1 中央處理器(CPU) (6)2.1.2 晶片組(Chip-set) (8)2.1.3 整合中低速率介面(Super I/O) (9)2.1.4 鍵盤控制器(Keyboard Controller) (9)2.1.5 CMOS(RTC/CMOS 計時/參數晶片) (11)2.1.6 其它一般IC (11)2.2 匯流排系統(BUS System) (12)2.2.1 週邊元件介面匯流排PCI (Peripheral Component Interface Bus)122.2.2 系統管理匯流排SMBus (System Management Bus) (13)2.2.3 低針腳數LPC (Low pin count) (14)2.2.4 GP I/O(General Purpose I/O) (14)2.3 電源管理(Power management) (14)2.3.1 系統管理模式SMM (System Management Mode) (14)2.3.2 進階電源管理APM (Advanced Power Management) (15)2.3.3 進階設定與電源介面ACPI (Advanced Configuration and PowerInterface) (15)Chapter 3 BIOS實際在硬體上位置 (16)&運作機制 (16)3.1 當開機時(Power-ON) (16)3.2 晶片組(Chipset) 定址空間分配 (16)3.3 映射記憶體Shadow Ram (17)3.4 Flat mode & Big real mode (18)第二部份 Trace BIOS 流程 (20)Chapter 4 Trace BIOS所需資源 (21)Chapter 5 第一階段(開機啟動區塊: 記憶體使用不可與無壓縮程序) (23)5.1簡述此階段的工作 (23)5.2 選寫此皆段程序需注意之特點 (24)5.3 BIOS 流程 (24)Chapter 6 第二階段(記憶體可用POST&解壓縮) (33)Chapter 7 第三階段(CMOS 設定之後 POST續) (50)第三部份(附錄) (59)附錄 1 診斷碼 (59)附錄 2 縮寫名詞對照表 (66)附錄 3參考資料 (72)心得 (74)摘要這個專題是藉由研究BIOS了解電腦的硬體架構,進而對未來踏入嵌入式系統的研究能有更進一步的幫助。
主要內容包括:․BIOS簡介․電腦硬體簡介․TRACE BIOS的BOOTING流程․BIOS燒入實作致謝首先感謝 陳德生指導教授,長期以來給予我們的協助,與讓我們有機會作這個專題,雖然面對這個專題,有時會感覺像茫然大海,可是陳德生老師會給我們一些提示、方向,不論專題成果是否與目標一致,我們都很慶幸參與這個專題,最後再謝謝老師 老師辛苦了。
接著我們還要感謝,在作專題的過程中,曾經提供我們方向與意見的 王益文老師 以及 林志敏老師,還有待在實驗室期間 曾提供我們協助的吳季穎、吳維揚學長。
第一部份 x86基本硬體架構Chapter 1 基本輸入/輸出系統(BIOS) –Introduction概述BIOS的目的和存放的實體位置Chapter 2 重要之硬體介紹X86系統的硬體與特殊執行機制Chapter 3 BIOS實際在硬體上位置&運作機制Chapter 1 基本輸入/輸出系統(BIOS) -Introduction1.1什麼是 BIOS?民航機在起飛前,機長必需先按 Check-list 啟動&檢查 電門、機身、控制面板..等,而x86電腦就如同民航機,CPU在開機時會像機長一樣按BIOS(Check-list) 指示依序初&檢查電腦,待電腦可正常運作後(起飛),再把電腦交給OS (自動駕駛系統)。
下面清楚定義了BIOS:一個韌體程式( Firmware program),儲存在惟讀記憶體(ROM Memory),提供最基本的硬體初始化(initialize)、周邊控制的必要程式碼(通常由組合語言寫成)。
1.2 BIOS in ROMBIOS 就存放在主機板上的一顆Rom裡,而x86硬體特性就是設計成,在開機的一瞬間,CPU從主機板上的BIOS 晶片內取得程式碼,也就是由BIOS 內部的程式碼掌控電腦的初始動作。
而BIOS Rom平時是設定成唯讀狀態,必需藉由特定工具才可以加以修改、抹除。
注意: 其它的週邊也有自已的BIOS Rom 像是顯示卡(video-card)、高階網路卡(NIC)..等,因為較複雜的外接週邊硬體設計差異很大,各自有其獨特初始動作,所以廠商會另外加上BIOS Rom。
1.3 執行BIOS的目的與基本流程一般BIOS最重要的工作有下列幾點:.開機自我檢測POST(Power On Self Test):一開機時系統將控制權交給BIOS 時,它會先檢查CPU 暫存器(Registers)、旗標(Flags)是否運作正常,接著檢查像是8254 計時器(timer)、8259A可程式中斷控制器(Programmable Interrupt Controller)、8237直接記憶體存取控制器(DMA controller)。
.初使化&測試(Initial&Test):初使化晶片組(Chipset)、記憶體(RAM)、Video-card 還有相關周邊的暫存器,並測試是否可正常工作。
初使化(Initialize):依照該晶片組的技術文件的規定,對暫存器填值、改位元或旗標的動作,使其可正常工作。
.記錄系統的設定值:把系統設定值像是日期、時間、硬體設定..等,存入CMOS。
.將常駐程式(Runtime Program) 常駐於記憶體(Memory):以提供作業系統(OS)或應用程式呼叫。
-基本BIOS流程圖-Chapter 2 重要之硬體介紹2.1 主要的集成電路(IC)2.1.1 中央處理器(CPU)中央處理器(CPU)有兩種主要模式, 分別如下:.真實模式(Real-Mode).保護模式(Protect-Mode)真實模式(Real mode):在最初的8086處理器被釋出時,它只有一種記憶體定址模式。
而它使用了節區暫存器(segment register)和位移暫存器(offset register)作定址,其定址方式如下: .記憶體定址(Memory Addressing): segment: offsetCS << 4 + IP = 指令的線性位址(Linear Address OfInstruction).位址線(Address-Lines) : 20條(1024KB)這種定址模式稱為真實模式定址(Real mode addressing),而它允許8x86定址至1MB的記憶體。
接著說明真實模式的特性:1. 捲繞(8086 記憶體特性)當記憶體位址超過0FFFFFh 時,會捲繞回00000h。
2. A20 開關(switch)X86 CPU在268時,位址線增加至24條(16MB超過1024KB)。
為了相容性,在位址線A20~A23設計了一個開關(A20 switch),它可切換兩種定址方式: .強制歸零: (Real-Mode)模擬8086的記憶體捲繞特性。
.可進位: (Protect-Mode)可以在0FFFFFh進位。
最後明確定義真實模式:當IA-32 CPU在使用真實模式定址狀態下執行時,稱為真實模式(Real Mode)。
保護模式(Protect mode): 它允許8x86定址至4 GB(32條位址線)的記憶體。
但從保護模式切回真實模式時,必需重置(Reset),那麼不就等於又重新開機,也就使得之前所執行的部份又得重新執行一遍,這樣將會永無止境的執行下去,為了解決這個問題,發展出了一個機制,下面詳細說明其步驟:解決從保護模式切回真實模式必須 重置(Reset)! 的問題8042鍵盤控制器(近似一顆簡單小型的CPU,也有自已的韌體負責keyboard、A20 開關 和 重置)。
Step1. 把關機(shutdown) 返回指示位元組 & 返回位址寫入CMOS。
Step2. 然後下令打開A20切到保護模式。
------------- 切到保護模式 -----------------------:------------- 回到真實模式 -----------------------Step3. 重置鍵盤控制器(KBC),因為鍵盤控制器有自已的韌體,不受系統重置影嚮。
Step4. CPU-> 0FFFFF:00000h 做簡單CPU 測試。
Step5. 從CMOS 讀入關機返回指示位元判斷此次為何種關機:.硬體正常開機(power-on、reset)。
.重保護模式返回(軟體重置(Soft reset)) -> 讀取返回位址。
注意:至386以後以設計可直接從保護模式返回真實模式,但還是保留A20開關、軟體重置(為了向下相容性)。
2.1.2 晶片組(Chip-set)早期主機板上焊滿大量電阻、電容、IC和複雜電路, 這樣才能達成一個功能.. 不但成本高, 也很難完成很多功能或除錯, 所以借由半導體技術,將這些電子元件、線路微縮至幾個大型晶片內,以化簡主機板設計,稱為系統晶片組,到現在主要分為兩大晶片:.北橋晶片(North-Bridge): intel稱之為記憶體控制集線器MCH(Memory Control Hub),集線器(Hub)也就是把其它裝置集中連線到北橋晶片上,而北橋是靠近CPU的一端,所以它主要連接高速的裝置,像是CPU、Memory、顯示卡,並且它也包含了記憶體控制器(MemoryController),所以顧名思義命名為記憶體控制集線器(Memory ControlHub)。
.南橋晶片(South-Bridge):輸入/輸出控制集線器ICH(I/O Control Hub),不同於MCH主導高速裝置,它相業負責較低速的I/O週邊,像是鍵盤、Printer、USB..等,並集成了部份I/O 週邊的控制晶片(super I/O、USB控制器、鍵盤控制器..等)、CMOS。