Bochs-X-PC模擬器原理與啟動流程分析熊海泉_第1頁
Bochs-X-PC模擬器原理與啟動流程分析熊海泉_第2頁
Bochs-X-PC模擬器原理與啟動流程分析熊海泉_第3頁
Bochs-X-PC模擬器原理與啟動流程分析熊海泉_第4頁
Bochs-X-PC模擬器原理與啟動流程分析熊海泉_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、熊海泉熊海泉2021-12-91主要內(nèi)容主要內(nèi)容 PC系統(tǒng)及系統(tǒng)及X86模擬器模擬器 模擬主控模塊模擬主控模塊 系統(tǒng)板的模擬系統(tǒng)板的模擬 內(nèi)存模塊的模擬內(nèi)存模塊的模擬 CPU的模擬的模擬 I/O模塊的模擬模塊的模擬 Bochs模擬器初始化啟動過程模擬器初始化啟動過程 基于基于Bochs的實驗環(huán)境的實驗環(huán)境 下一步工作思路下一步工作思路 參考資料參考資料Bochs X86 PC模擬器原理與啟動流程分析模擬器原理與啟動流程分析熊海泉熊海泉2021-12-92典型典型PC系統(tǒng)構成系統(tǒng)構成PC系統(tǒng)及系統(tǒng)及X86模擬器模擬器熊海泉熊海泉2021-12-93常見常見X86模擬器模擬器 比較典型的比較典型的

2、X86模擬器模擬器 Bochs PTLsim COTson Qemu PC系統(tǒng)及系統(tǒng)及X86模擬器模擬器熊海泉熊海泉Bochs模擬器模擬器 Bochs是一個是一個X86 PC的模擬器,它可以模擬幾乎所有的模擬器,它可以模擬幾乎所有類型的類型的X86 CPU,包括,包括16位,位,32位和位和64位位(X86_64),內(nèi)存以及內(nèi)存以及I/O設備,在其上可以運行設備,在其上可以運行Linux,Windows等操作系統(tǒng)。等操作系統(tǒng)。 其中模擬的其中模擬的X86_64的工作方式包括以下兩類:的工作方式包括以下兩類: IA-32模式模式:包括實模式,保護模式和虛擬包括實模式,保護模式和虛擬8086模式三

3、模式三個子模式個子模式 IA-32e模式模式:包括長模式和兼容模式包括長模式和兼容模式4PC系統(tǒng)及系統(tǒng)及X86模擬器模擬器熊海泉熊海泉Bochs模擬器基本構成模擬器基本構成5PC系統(tǒng)及系統(tǒng)及X86模擬器模擬器熊海泉熊海泉模擬主控模塊模擬主控模塊為用戶提供交互的系統(tǒng)為用戶提供交互的系統(tǒng)配置信息更改以及控配置信息更改以及控制制Bochs模擬器的運模擬器的運行行根據(jù)用戶的配置信息在根據(jù)用戶的配置信息在模擬主控對象中建立模擬主控對象中建立配置信息參數(shù)樹并初配置信息參數(shù)樹并初始化,為始化,為Bochs系統(tǒng)系統(tǒng)硬件的初始化提供輸硬件的初始化提供輸入入啟動啟動Bochs模擬器并進模擬器并進入客戶操作系統(tǒng)的引

4、導入客戶操作系統(tǒng)的引導將宿主機的外部事件如,將宿主機的外部事件如,鍵盤鍵擊,鼠標移動鍵盤鍵擊,鼠標移動等通過信號量機制從等通過信號量機制從而觸發(fā)而觸發(fā)Bochs模擬器模擬器相應設備進行響應相應設備進行響應(理理解不一定正確解不一定正確)6模擬主控模塊模擬主控模塊熊海泉熊海泉2021-12-97系統(tǒng)板主要功能系統(tǒng)板主要功能為系統(tǒng)外設,系統(tǒng)板等為系統(tǒng)外設,系統(tǒng)板等模塊提供工作時鐘,從模塊提供工作時鐘,從而驅(qū)動各功能模塊的正而驅(qū)動各功能模塊的正常工作常工作負責為外設向負責為外設向CPUCPU模塊模塊觸發(fā)中斷控制信號,總觸發(fā)中斷控制信號,總線請求信號等功能線請求信號等功能負責提供負責提供CPUCPU系

5、統(tǒng)復系統(tǒng)復位,外設復位以及位,外設復位以及A20A20地址線開啟與關閉,地址線開啟與關閉,I/OI/O端口讀寫的相關功端口讀寫的相關功能能系統(tǒng)板的模擬系統(tǒng)板的模擬熊海泉熊海泉2021-12-98系統(tǒng)板的實現(xiàn)模型系統(tǒng)板的實現(xiàn)模型64個定時器資源個定時器資源定時器實現(xiàn)的控制字定時器實現(xiàn)的控制字段,其中段,其中currCountdown為為0時將觸發(fā)時將觸發(fā)CountdownEvent時間,從而執(zhí)行某時間,從而執(zhí)行某一個定時器函數(shù),一個定時器函數(shù),這個函數(shù)通常是這個函數(shù)通常是I/O設備注冊的回設備注冊的回調(diào)函數(shù)調(diào)函數(shù)系統(tǒng)板定時器實系統(tǒng)板定時器實現(xiàn)的激勵來源現(xiàn)的激勵來源I/O設備初始化設備初始化時注冊

6、的定時時注冊的定時器回調(diào)函數(shù)器回調(diào)函數(shù)實現(xiàn)一些系統(tǒng)控實現(xiàn)一些系統(tǒng)控制功能的字段,制功能的字段,如如HRQ代表示代表示否向否向CPU發(fā)出發(fā)出總線請求等總線請求等系統(tǒng)板的模擬系統(tǒng)板的模擬熊海泉熊海泉系統(tǒng)板與系統(tǒng)板與CPU及及I/O模塊的相互關系模塊的相互關系set_HRQ (用于用于DMA向系統(tǒng)發(fā)出總線請求向系統(tǒng)發(fā)出總線請求) set_INTR (調(diào)用調(diào)用CPU的的set_INTR ) MemoryMappingChanged(TLB刷新)刷新)invlpg(清除頁表)(清除頁表)Reset(CPU復位復位)在在CPU每次指令執(zhí)行循環(huán)每次指令執(zhí)行循環(huán)cpu_loop中通過調(diào)用調(diào)用中通過調(diào)用調(diào)用系統(tǒng)

7、板的系統(tǒng)板的tick來實現(xiàn)系統(tǒng)板上各個定時器來實現(xiàn)系統(tǒng)板上各個定時器系統(tǒng)復位系統(tǒng)復位Reset或或CPU的中斷響應的中斷響應IAC向系統(tǒng)板注冊工作驅(qū)動的定時器及中斷向系統(tǒng)板注冊工作驅(qū)動的定時器及中斷9系統(tǒng)板的模擬系統(tǒng)板的模擬熊海泉熊海泉2021-12-910系統(tǒng)板初始化系統(tǒng)板初始化此時可以建立的概念就是,此時可以建立的概念就是,系統(tǒng)板的定時器資源已系統(tǒng)板的定時器資源已經(jīng)生成,可以供經(jīng)生成,可以供I/O設設備注冊使用,同時備注冊使用,同時I/O設備通過系統(tǒng)板向設備通過系統(tǒng)板向CPU發(fā)送系統(tǒng)控制信號的功發(fā)送系統(tǒng)控制信號的功能已經(jīng)準備就緒能已經(jīng)準備就緒系統(tǒng)板的模擬系統(tǒng)板的模擬熊海泉熊海泉內(nèi)存模塊的基

8、本功能內(nèi)存模塊的基本功能根據(jù)系統(tǒng)配置,一次性根據(jù)系統(tǒng)配置,一次性的向宿主機分配一片的向宿主機分配一片存儲空間存儲空間(應該不是應該不是物理內(nèi)存物理內(nèi)存),建立一,建立一套與實際機器類似的套與實際機器類似的內(nèi)存空間映像內(nèi)存空間映像在在X86中,有些中,有些I/O設備可能以內(nèi)存映設備可能以內(nèi)存映射的方式存取而不射的方式存取而不是通過傳統(tǒng)的是通過傳統(tǒng)的in或或out指令實現(xiàn),如指令實現(xiàn),如果有這需求,相應果有這需求,相應的的I/O設備必須向設備必須向內(nèi)存模塊注冊內(nèi)存模塊注冊I/O讀寫程序,這樣當讀寫程序,這樣當使用使用readPhysicalPage等接口時會判斷等接口時會判斷是否是是否是I/O設備

9、空設備空間而進行不同的存間而進行不同的存取操作取操作內(nèi)存的一個主要功能就內(nèi)存的一個主要功能就是向是向CPU提供存取指提供存取指令和數(shù)據(jù),以便令和數(shù)據(jù),以便CPU能夠不停的取指,執(zhí)能夠不停的取指,執(zhí)行及回寫,實現(xiàn)各種行及回寫,實現(xiàn)各種指令的功能指令的功能在在Bochs硬件初始化時硬件初始化時向向Bochs模擬的內(nèi)存模擬的內(nèi)存空間的空間的ROM地址空間地址空間加載可運行的加載可運行的BIOS二二進制程序,以為后序進制程序,以為后序Bochs復位運行作準復位運行作準備備11內(nèi)存模塊的模擬內(nèi)存模塊的模擬熊海泉熊海泉內(nèi)存模塊的實現(xiàn)模型內(nèi)存模塊的實現(xiàn)模型2021-12-9122,記載目前系,記載目前系統(tǒng)內(nèi)

10、存使用情統(tǒng)內(nèi)存使用情況的一些字段,況的一些字段,用于實現(xiàn)內(nèi)存用于實現(xiàn)內(nèi)存的分配管理的分配管理3,實現(xiàn),實現(xiàn)I/O內(nèi)存映射的注內(nèi)存映射的注冊管理服務,其中包含了冊管理服務,其中包含了地址信息,當系統(tǒng)通過地址信息,當系統(tǒng)通過readPhyicalPagewritePhysicalPage等存取函數(shù)時會判斷是否是等存取函數(shù)時會判斷是否是一個一個I/O內(nèi)存映射,如果內(nèi)存映射,如果是則執(zhí)行是則執(zhí)行I/O內(nèi)存映射處內(nèi)存映射處理函數(shù)理函數(shù)1,初始化時,根,初始化時,根據(jù)據(jù).bochsrc配置文件中的配置文件中的(memory guest=512 host=256 )從宿主機中預從宿主機中預先分配好先分配好B

11、ochs模擬器所需模擬器所需的內(nèi)存,并用的內(nèi)存,并用vector,rom等保存相應的起始地址等保存相應的起始地址4,內(nèi)存模塊為,內(nèi)存模塊為CPU提供了存提供了存取指令數(shù)據(jù)以取指令數(shù)據(jù)以及為及為I/O提供提供了內(nèi)存映射服了內(nèi)存映射服務務內(nèi)存模塊的模擬內(nèi)存模塊的模擬熊海泉熊海泉內(nèi)存模塊與內(nèi)存模塊與CPU及及I/O交互關系交互關系 為為CPU模塊提供的服務模塊提供的服務 數(shù)據(jù)和指令的存取數(shù)據(jù)和指令的存取 MMU地址變換地址變換 為為I/O提供的服務提供的服務 I/O內(nèi)存映射讀寫處理注冊內(nèi)存映射讀寫處理注冊管理管理 實現(xiàn)實現(xiàn)I/O內(nèi)存映射的存取內(nèi)存映射的存取13內(nèi)存模塊的模擬內(nèi)存模塊的模擬熊海泉熊海泉

12、內(nèi)存模塊的初始化內(nèi)存模塊的初始化2021-12-914為為Bochs模擬器準備好了內(nèi)存空間,模擬器準備好了內(nèi)存空間,可以為可以為CPU提供存取指令數(shù)據(jù)服提供存取指令數(shù)據(jù)服務,同時也為需要實現(xiàn)務,同時也為需要實現(xiàn)I/O內(nèi)存內(nèi)存映射的設備準備好了注冊使用功映射的設備準備好了注冊使用功能能內(nèi)存模塊的模擬內(nèi)存模塊的模擬熊海泉熊海泉CPU模塊的主要功能模塊的主要功能根據(jù)根據(jù)X86指令的邏輯功指令的邏輯功能分別實現(xiàn)各類能分別實現(xiàn)各類X86指令,大部分指令按指令,大部分指令按其功能分別用不同的其功能分別用不同的源代碼文件實現(xiàn)源代碼文件實現(xiàn)通過通過prefetch,fetchDecode以及以及具體指令處理函

13、數(shù)及具體指令處理函數(shù)及異常處理等實現(xiàn)異常處理等實現(xiàn)Bochs指令執(zhí)行循環(huán)指令執(zhí)行循環(huán)邏輯邏輯為為CPU指令的執(zhí)行提供數(shù)據(jù)指令的執(zhí)行提供數(shù)據(jù)和指令地址的變換,安全和指令地址的變換,安全保護等功能,最終實現(xiàn)對保護等功能,最終實現(xiàn)對內(nèi)存模塊的存取,具體主內(nèi)存模塊的存取,具體主要通過要通過translate_linear,access_linear,dtranslate_linear,itranslate_linear主要包括系統(tǒng)復位,系主要包括系統(tǒng)復位,系統(tǒng)初始化等功能統(tǒng)初始化等功能實現(xiàn)實現(xiàn)X86系統(tǒng)的各類系統(tǒng)系統(tǒng)的各類系統(tǒng)寄存器和通用寄存器寄存器和通用寄存器以及其狀態(tài)的變換邏以及其狀態(tài)的變換邏輯輯

14、在系統(tǒng)中設置一個全局在系統(tǒng)中設置一個全局標志信息表示異步中標志信息表示異步中斷異常是否有發(fā)生,斷異常是否有發(fā)生,相應的異常請發(fā)生只相應的異常請發(fā)生只要將其進行相應設置要將其進行相應設置即可即可15CPU的模擬的模擬熊海泉熊海泉X86架構架構CPU的模擬的模擬-實現(xiàn)邏輯實現(xiàn)邏輯結構結構CPU的核心邏輯就是指的核心邏輯就是指令執(zhí)行循環(huán)令執(zhí)行循環(huán)16CPU的模擬的模擬熊海泉熊海泉CPU指令循環(huán)指令循環(huán)檢測系統(tǒng)是否有異常、中斷等檢測系統(tǒng)是否有異常、中斷等事件發(fā)生,這種事件的來源事件發(fā)生,這種事件的來源有有APIC,INIT,SMI,INTR,reset,bx_stop_simulation,系統(tǒng)板系統(tǒng)

15、板DMA總線請求以及某總線請求以及某些產(chǎn)生異常的指令些產(chǎn)生異常的指令根據(jù)邏輯地址獲取線性地址,再由根據(jù)邏輯地址獲取線性地址,再由線性地址變換到物理地址,這樣線性地址變換到物理地址,這樣就準備好了就準備好了CPU存取一條指令存取一條指令IP地址指針,可以由地址指針,可以由CPU通過內(nèi)存通過內(nèi)存模塊獲取指令了模塊獲取指令了根據(jù)上一步獲取的地址開根據(jù)上一步獲取的地址開始從內(nèi)存模塊中獲取指始從內(nèi)存模塊中獲取指令并譯碼填充在待處理令并譯碼填充在待處理的指令變量的指令變量i中,供下中,供下一步調(diào)用一步調(diào)用對譯碼好的指令進行調(diào)研對譯碼好的指令進行調(diào)研執(zhí)行,完成指令的邏輯執(zhí)行,完成指令的邏輯功能功能驅(qū)動系統(tǒng)板

16、中的定時器,驅(qū)動系統(tǒng)板中的定時器,從而為驅(qū)動從而為驅(qū)動Bochs其余其余設備等模塊工作。設備等模塊工作。17CPU的模擬的模擬熊海泉熊海泉CPU模塊的初始化模塊的初始化2021-12-918CPU會在會在bx_init_hardware中中由系統(tǒng)板復位觸發(fā)由系統(tǒng)板復位觸發(fā)CPU的的復位,從而使得復位,從而使得CPU中各中各寄存器回到寄存器回到Intel手冊手冊上關于處理器初始化的上關于處理器初始化的初值,之后系統(tǒng)將會從初值,之后系統(tǒng)將會從0XFFFFFFF0處開始執(zhí)處開始執(zhí)行行熊海泉熊海泉I/O模塊的主要功能模塊的主要功能負責負責Bochs模擬設備實例的創(chuàng)模擬設備實例的創(chuàng)建與初始化,到底要創(chuàng)建

17、哪建與初始化,到底要創(chuàng)建哪些設備是根據(jù)模擬主控對象些設備是根據(jù)模擬主控對象初始化時收集的系統(tǒng)配置信初始化時收集的系統(tǒng)配置信息決定息決定在在X86架構中有專門的架構中有專門的I/O指令,指令,負責對各類設備寄存器的操作,負責對各類設備寄存器的操作,此功能就是提供此功能就是提供I/O地址空間管地址空間管理的,為不同的端口根據(jù)設備需理的,為不同的端口根據(jù)設備需要提供不同的讀寫函數(shù)要提供不同的讀寫函數(shù)負責外部設備資源的分配負責外部設備資源的分配管理,供各外設使用管理,供各外設使用為為CPU I/O指令提供的指令提供的具體實現(xiàn)具體實現(xiàn)各類具體外設的功能的邏各類具體外設的功能的邏輯模擬,一般包括初始輯模擬

18、,一般包括初始化,復位,以及設備?;?,復位,以及設備專用功能的模擬用功能的模擬熊海泉熊海泉Bochs I/O模塊的實現(xiàn)模型模塊的實現(xiàn)模型作為與其它作為與其它Bochs模塊模塊如如CPU,系統(tǒng)板的接,系統(tǒng)板的接口,通過它可以找到口,通過它可以找到所有所有Bochs的設備,的設備,此外也在其中集中實此外也在其中集中實現(xiàn)了現(xiàn)了I/O地址空間的地址空間的管理管理具體設備的模擬實具體設備的模擬實現(xiàn),根據(jù)各設備現(xiàn),根據(jù)各設備功能,為每一個功能,為每一個設備單獨構建一設備單獨構建一個個C+類來實現(xiàn)類來實現(xiàn)20I/O模塊的模擬模塊的模擬熊海泉熊海泉Bochs模擬器設備基本結構模擬器設備基本結構向設備集注冊向設

19、備集注冊I/O地址地址空間、中斷以及向系空間、中斷以及向系統(tǒng)板注冊定時器資源統(tǒng)板注冊定時器資源將設備復位至到其初始將設備復位至到其初始化的狀態(tài)化的狀態(tài)為為CPU執(zhí)行執(zhí)行I/O指令時指令時提供的具體的設備讀提供的具體的設備讀寫函數(shù)寫函數(shù)設備的具體功設備的具體功能函數(shù)服務接能函數(shù)服務接口口21I/O模塊的模擬模塊的模擬熊海泉熊海泉Bochs I/O設備集設備集2021-12-922I/O模塊的模擬模塊的模擬I/O地址空間資源,共地址空間資源,共65536,分讀寫各一,分讀寫各一個向量數(shù)組,每個元個向量數(shù)組,每個元素指向相應端口號的素指向相應端口號的讀寫處理函數(shù),各種讀寫處理函數(shù),各種外設在初始化時

20、會在外設在初始化時會在其中注冊它們的端口其中注冊它們的端口資源資源I/O端口資源的處理數(shù)端口資源的處理數(shù)據(jù)結構,每個外設對據(jù)結構,每個外設對應的讀寫處理不一樣,應的讀寫處理不一樣,各自具體實現(xiàn)各自具體實現(xiàn)中斷資源注冊,各外設中斷資源注冊,各外設如有需求也會在其中如有需求也會在其中申請注冊相應的中斷申請注冊相應的中斷資源資源根據(jù)系統(tǒng)配置創(chuàng)建的設根據(jù)系統(tǒng)配置創(chuàng)建的設備實例,在設備集中備實例,在設備集中存儲有這些實例的指存儲有這些實例的指針,以便針,以便Bochs其它其它模塊可以存取模塊可以存取某些典型設備在沒有初某些典型設備在沒有初始化時,缺省的設備始化時,缺省的設備實例實例提供集中管理各具體設提

21、供集中管理各具體設備的功能,此外還管備的功能,此外還管理理I/O地址空間的功地址空間的功能能熊海泉熊海泉Bochs I/O設備、設備集與系設備、設備集與系統(tǒng)板的邏輯關系統(tǒng)板的邏輯關系23I/O模塊的模擬模塊的模擬熊海泉熊海泉Bochs I/O設備、設備集與系設備、設備集與系統(tǒng)板的邏輯關系統(tǒng)板的邏輯關系1,通過調(diào)用設備集通過調(diào)用設備集init初始初始化方法創(chuàng)建系統(tǒng)配置時的設化方法創(chuàng)建系統(tǒng)配置時的設備并保存各設備的指針,以備并保存各設備的指針,以使得使得Bochs可以通過設備集可以通過設備集訪問到所有訪問到所有I/O設備設備initinitinit24I/O模塊的模擬模塊的模擬熊海泉熊海泉Boch

22、s I/O設備、設備集與系設備、設備集與系統(tǒng)板的邏輯關系統(tǒng)板的邏輯關系2,設備集設備集init初初始化方法在創(chuàng)建始化方法在創(chuàng)建各具體設備之后,各具體設備之后,再依次調(diào)用各具再依次調(diào)用各具體設備的體設備的init方法來向設備集方法來向設備集注冊注冊I/O端口,端口,中斷請求以使得中斷請求以使得將來將來CPU存取到存取到對應的端口時能對應的端口時能夠找到具體設備夠找到具體設備讀寫的處理函數(shù),讀寫的處理函數(shù),此外還可能系統(tǒng)此外還可能系統(tǒng)板注冊定時器資板注冊定時器資源,作為設備工源,作為設備工作的觸發(fā)機制,作的觸發(fā)機制,為設備正常工作為設備正常工作做好準備做好準備25I/O模塊的模擬模塊的模擬熊海泉熊

23、海泉Bochs I/O設備初始化后狀態(tài)設備初始化后狀態(tài) 各類在系統(tǒng)啟動時配置的設備都已經(jīng)創(chuàng)建好了,并由各各類在系統(tǒng)啟動時配置的設備都已經(jīng)創(chuàng)建好了,并由各類具體設備的類具體設備的init初始化函數(shù)根據(jù)其各自的功能需求注初始化函數(shù)根據(jù)其各自的功能需求注冊好了冊好了I/O地址空間及定時器,中斷等資源,從而各個地址空間及定時器,中斷等資源,從而各個設備都具有驅(qū)動其工作的時鐘。設備都具有驅(qū)動其工作的時鐘。26I/O模塊的模擬模塊的模擬熊海泉熊海泉Bochs模擬器初始化啟動過程模擬器初始化啟動過程-整體概括整體概括 Bochs的整體流程邏輯上可以分為以下幾個階段的整體流程邏輯上可以分為以下幾個階段 主控模

24、擬對象主控模擬對象SIM的創(chuàng)建,根據(jù)系統(tǒng)配置信息生成的創(chuàng)建,根據(jù)系統(tǒng)配置信息生成Bochs模擬器系統(tǒng)運行時的硬件配置參數(shù)樹形結構并初始化模擬器系統(tǒng)運行時的硬件配置參數(shù)樹形結構并初始化 Bochs X86 PC模擬器模擬器PC系統(tǒng)的生成初始化系統(tǒng)的生成初始化(等效于實現(xiàn)等效于實現(xiàn)一臺可以工作的一臺可以工作的PC機機) Bochs X86 PC模擬器系統(tǒng)的開機與操作系統(tǒng)的啟動模擬器系統(tǒng)的開機與操作系統(tǒng)的啟動27Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs X86 PC模擬器系統(tǒng)啟模擬器系統(tǒng)啟動總體流程動總體流程注冊注冊BochsBochs模擬主控模擬主控對象的配置接口回

25、調(diào)對象的配置接口回調(diào)函數(shù)函數(shù)ci_callbackci_callback至此為止,已經(jīng)完成了至此為止,已經(jīng)完成了系統(tǒng)配置信息的提取系統(tǒng)配置信息的提取并將其存儲在模擬主并將其存儲在模擬主控對象控對象SIM中,供中,供Bochs模擬器模擬器PC系統(tǒng)系統(tǒng)的構建的構建28Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs模擬主控對象的初始化模擬主控對象的初始化2021-12-929創(chuàng)建模擬主控對象,為創(chuàng)建模擬主控對象,為構建系統(tǒng)配置參數(shù)樹構建系統(tǒng)配置參數(shù)樹做好準備做好準備Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)配置初始化系統(tǒng)配置初始化2021-

26、12-930建立建立bochsrcbochsrc系統(tǒng)配置系統(tǒng)配置文件相對應的參數(shù)樹形文件相對應的參數(shù)樹形數(shù)據(jù)結構數(shù)據(jù)結構命令行參數(shù)選項處理命令行參數(shù)選項處理作,根據(jù)情況作不同的作,根據(jù)情況作不同的處理,如顯示幫助等或處理,如顯示幫助等或讀取系統(tǒng)配置文件讀取系統(tǒng)配置文件根據(jù)實際配置重新設置根據(jù)實際配置重新設置模擬主控對象在上面建模擬主控對象在上面建立的參數(shù)樹,作為后立的參數(shù)樹,作為后續(xù)硬件的初始化的輸入續(xù)硬件的初始化的輸入Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉由由bx_init_optionsbx_init_options建立的系建立的系統(tǒng)配置參數(shù)樹統(tǒng)配置參數(shù)樹31Boc

27、hs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)的運行準備系統(tǒng)的運行準備32Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)的運行準備系統(tǒng)的運行準備2021-12-933Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)硬件初始化系統(tǒng)硬件初始化34Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)硬件初始化系統(tǒng)硬件初始化2021-12-935系統(tǒng)板初始化,完成之系統(tǒng)板初始化,完成之后可以為設備等需要后可以為設備等需要的定時器注冊做好了的定時器注冊做好了準備準備根據(jù)系統(tǒng)配置文件信息根據(jù)系統(tǒng)配置文

28、件信息初始化內(nèi)存模塊,之初始化內(nèi)存模塊,之后就準備好了后就準備好了Bochs所需的內(nèi)存資源及讀所需的內(nèi)存資源及讀寫服務接口寫服務接口根據(jù)系統(tǒng)配置信息將根據(jù)系統(tǒng)配置信息將將將BIOS及其它可選及其它可選的的ROM二進制程序二進制程序預先燒寫進入預先燒寫進入Bochs的內(nèi)存系統(tǒng)的內(nèi)存系統(tǒng)中,整個燒寫結構中,整個燒寫結構比照實際機器進行比照實際機器進行CPU初始化完成指初始化完成指令系統(tǒng)譯碼表,令系統(tǒng)譯碼表,各類內(nèi)部寄存器各類內(nèi)部寄存器等的初始化,此等的初始化,此時時CPU相當于處相當于處于沒有時鐘脈沖于沒有時鐘脈沖的等待狀態(tài)的等待狀態(tài)根據(jù)系統(tǒng)配置信息根據(jù)系統(tǒng)配置信息完成各類完成各類I/OI/O設備

29、設備的創(chuàng)建并根據(jù)各的創(chuàng)建并根據(jù)各設備的具體要求設備的具體要求注冊注冊I/OI/O地址空間地址空間地址、中斷以及地址、中斷以及定時器資源定時器資源注冊模擬主控對象注冊模擬主控對象的信號處理函數(shù),的信號處理函數(shù),以便相應來自用以便相應來自用戶界面的操作事戶界面的操作事件,如用戶可以件,如用戶可以中途關閉中途關閉Bochs模擬器等操作模擬器等操作系統(tǒng)板復位系統(tǒng)板復位(CPU及外設及外設復位復位)(類似于按類似于按實際機器的復位實際機器的復位按鈕,按鈕,),Bochs系統(tǒng)開始系統(tǒng)開始進入真正的指令進入真正的指令解釋執(zhí)行模擬過解釋執(zhí)行模擬過程,從程,從0 xFFFFFFF開開始執(zhí)行始執(zhí)行Bochs模擬器

30、初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉Bochs系統(tǒng)系統(tǒng)CPU指令運行循環(huán)指令運行循環(huán)2021-12-936Bochs模擬器初始化啟動過程模擬器初始化啟動過程熊海泉熊海泉2021-12-937基于基于Bochs的實驗環(huán)境的實驗環(huán)境 環(huán)境搭建及實驗方法環(huán)境搭建及實驗方法 Bochs模擬器的編譯模擬器的編譯 基于基于Bochs模擬器系統(tǒng)運行環(huán)境的搭建模擬器系統(tǒng)運行環(huán)境的搭建 添加新指令集的方法添加新指令集的方法(今后有時間或需要時分析研究今后有時間或需要時分析研究) 增加新設備的方法步驟增加新設備的方法步驟(今后有時間或需要時分析研究今后有時間或需要時分析研究) 基于基于Bochs的實驗環(huán)

31、境的實驗環(huán)境熊海泉熊海泉2021-12-938Bochs模擬器的編譯模擬器的編譯從從http:/ 2.4.5.tar.gz并解壓并解壓tar zxvf bochs-2.4.5.tar.gz進入進入Bochs源代碼目錄執(zhí)行如下命令顯示可以配置的源代碼目錄執(zhí)行如下命令顯示可以配置的所有選項所有選項cd bochs-2.4.5./configure -help如果要支持如果要支持64位架構,則可以使用如下配置命令位架構,則可以使用如下配置命令./configure enable-x86-64編譯編譯make安裝安裝make install基于基于Bochs的實驗環(huán)境的實驗環(huán)境熊海泉熊海泉2021-1

32、2-939Bochs模擬器運行環(huán)境模擬器運行環(huán)境-基本基本構成構成根據(jù)實際需要進行根據(jù)實際需要進行配置,確定系統(tǒng)的配置,確定系統(tǒng)的硬件配置情況硬件配置情況有多種方式來制作,其中用于實有多種方式來制作,其中用于實驗的方法:驗的方法:利用利用LinuxLinux開發(fā)主機由開發(fā)主機由LinuxLinux源代碼編譯內(nèi)核、源代碼編譯內(nèi)核、BusyboxBusybox以及以及unetbootinunetbootin工具生成工具生成系統(tǒng)自帶系統(tǒng)自帶基于基于Bochs的實驗環(huán)境的實驗環(huán)境熊海泉熊海泉2021-12-940Bochs模擬器運行環(huán)境模擬器運行環(huán)境-配置配置信息信息 基本功能基本功能類似于自己去電腦市場配一臺計算機,例如類似于自己去電腦市場配一臺計算機,例如配幾個配幾個CPU,幾個硬盤,幾個光驅(qū),軟盤,串口,并口,幾個硬盤,幾個光驅(qū),軟盤,串口,并口,聲卡,網(wǎng)卡等聲卡,網(wǎng)卡等 具體可以參考具體可以參考bochs源代碼目錄下的源代碼目錄下的.bochsrc模板文模板文件件 重要的幾個配置重要的幾個配置 內(nèi)存信息的配置內(nèi)存信息的配置 軟硬盤,光盤配置及啟動順序軟硬盤,光盤配置及啟動順序 基于基于Bochs的實驗環(huán)境的實驗環(huán)境熊海泉熊海泉2021-12-941Bochs模擬器運行環(huán)境模擬器運行環(huán)境-操作操作系統(tǒng)啟動鏡像獲取與制作系統(tǒng)啟動鏡像獲取與制作 網(wǎng)絡下載

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論