基于龍芯2F架構的PMON分析與優(yōu)化
摘要:基本輸入/輸出系統(BIOS)是現代計算機系統的重要組成部分,負責計算機系統的開(kāi)機自檢、板級初始化、加載操作系統內核以及基本I/O功能。以龍芯2F CPU架構為研究背景,在其基礎上分析了PMON的系統結構與工作流程,通過(guò)添加網(wǎng)絡(luò )驅動(dòng)程序,最終實(shí)現通過(guò)PMON加載Linux和VxWorks操作系統。進(jìn)行必要的功能完善與性能優(yōu)化,并經(jīng)過(guò)嚴格的測試以排除可能存在的深層次缺陷,實(shí)現了一個(gè)性能穩定、功能完善、高可靠性的能與國產(chǎn)龍芯2F處理器平臺緊密搭配的BIOS。
關(guān)鍵詞:BIOS;CPU;龍芯2F處理器;PMON
龍芯CPU使用PMON作為基本輸入輸出系統(BIOS)。PMON具有強大而豐富的功能,除基本的I/O功能外,還包括硬件初始化與檢測、操作系統引導和程序調試等功能。PMON早期的版本功能少且擴展性不好?,F在龍芯CPU上使用的PMON添加了硬盤(pán)和其他文件系統的支持,以及顯卡的支持等。本文在深入分析PMON源碼的前提下,添加了82551網(wǎng)卡驅動(dòng)以便以網(wǎng)絡(luò )下載加載操作系統內核,并對移植好的PMON系統進(jìn)行了功能、性能和穩定性等方面的測試以適應某些重要領(lǐng)域對計算機系統高可靠性要求。通過(guò)專(zhuān)門(mén)的測試程序來(lái)實(shí)現此任務(wù),并且盡量保證高的測試覆蓋性。
1 基于龍芯2F架構的PMON分析
1.1 PMON執行流程分析
在龍芯2F CPU上電之初,內存和內存控制器處于不確定狀態(tài),因此CPU開(kāi)始執行的BIOS代碼只能放在非易失性介質(zhì)中。PMON的二進(jìn)制代碼就存放于主板上一塊512 KB的FLASH芯片上,其虛擬地址為0xBFC00000,物理地址是0x1FC00000。
由于在ROM FLASH運行的速度比較慢,并且空間有限,不能隨時(shí)更改ROM中的內容,就需要把引導程序搬到內存里運行。因此,PMON的運行過(guò)程分為兩個(gè)階段:第一階段是在ROM FLASH中運行,主要進(jìn)行基本硬件初始化,如:北橋、南橋、內存控制器、緩存和串口初始化等;第二階段在內存中執行,主要完成環(huán)境變量和基本數據結構的初始化、PCI總線(xiàn)掃描和設備初始化,顯卡初始化、網(wǎng)絡(luò )協(xié)議和設備初始化,并對搜索到的PCI總線(xiàn)上的設備進(jìn)行驅動(dòng)程序的加載與配置等,最后加載操作系統內核。
1.2 PMON在ROM中的執行流程
龍芯CPU開(kāi)始執行的指令將CP0控制寄存器的狀態(tài)寄存器和原因寄存器清零,讓CPU處于內核模式。這是因為MIPS CPU啟動(dòng)時(shí),必須定義足夠的CPU控制寄存器狀態(tài),以使CPU能執行非緩存的指令。在對緩存初始化之前,不能訪(fǎng)問(wèn)緩存。非緩存的異常入口在0xBFC00000,但此處沒(méi)有足夠的空間存放啟動(dòng)代碼,于是設計了一個(gè)跳轉。這個(gè)跳轉可以測試CPU是否正常工作。如果硬件發(fā)生了某種嚴重的錯誤,可能會(huì )導致CPU嚴重的異常。如果CPU正常啟動(dòng)起來(lái)并跳轉到了正確的位置并執行了預先設計的指令,就可以相信CPU正常,某些硬件正常。跳轉之后,PMON進(jìn)行一系列的初始化與測試工作,這個(gè)過(guò)程如圖1所示。
評論