1樓
wangxinxin 發(fā)表于:2010-11-19 9:08:18
本文章主要介紹了SkyEye硬件模擬平臺(tái)的實(shí)現(xiàn)細(xì)節(jié),主要內(nèi)容包括SkyEye的總體設(shè)計(jì)、SkyEye的可擴(kuò)展框架、SkyEye的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)、SkyEye對(duì)各種CPU的模擬實(shí)現(xiàn)、SkyEye對(duì)各種外設(shè)的模擬實(shí)現(xiàn)、如何安裝使用SkyEye以及如何擴(kuò)展SkyEye的仿真模塊等。對(duì)SkyEye的深入了解,有助于對(duì)嵌入式硬件系統(tǒng)有更深入的認(rèn)識(shí),特別是對(duì)操作系統(tǒng)、驅(qū)動(dòng)程序如何與嵌入式硬件系統(tǒng)進(jìn)行交互有更深刻的了解。
一、 SkyEye目標(biāo)模擬模塊功能劃分:
如上所示。SkyEye目標(biāo)模擬模塊從功能上可分為如下幾大模塊:
●配置選項(xiàng)解析和初始化模塊:在模擬硬件開始運(yùn)行前,根據(jù)配置文件的選項(xiàng),控制對(duì)模擬硬件的配置和初始化。相關(guān)文件包括:
arminit.c:控制各種模擬硬件的初始化
skyeye_config.[ch]:解析配置文件的選項(xiàng)行
skyeye_options.c:根據(jù)各種硬件的選項(xiàng),完成各種配置
● 處理器模擬宏模塊:主要完成與處理器體系結(jié)構(gòu)相關(guān)的模擬,它可細(xì)分為:CPU指令模擬執(zhí)行模塊、MMU/CACHE模擬模塊、CoProcessor(又稱協(xié)處理器)模擬模塊。
CPU指令模擬執(zhí)行模塊:其主要任務(wù)是:當(dāng)模擬硬件開始運(yùn)行,完成指令讀取,指令譯碼,指令執(zhí)行的工作;如果CPU狀態(tài)發(fā)生了改變,調(diào)整指令和各種寄存器值;在指令執(zhí)行前,調(diào)用開發(fā)板IO模擬模塊的io_do_cycle驅(qū)動(dòng)模擬各種外設(shè)的行為。主要的文件包括:
armemu.[ch]:模擬CPU的3級(jí)流水線,并具體執(zhí)行各種指令
MMU/CACHE模擬模塊:本模塊分為兩部分:與具體CPU類型無關(guān)的MMU/CACHE模擬子模塊和與具體CPU類型相關(guān)的模擬子模塊。主要的任務(wù)是:根據(jù)配置文件進(jìn)行初始化;進(jìn)行MMU/CACHE模擬;執(zhí)行與MMU/CACHE相關(guān)的指令。如果CPU指令模擬模塊執(zhí)行讀寫存儲(chǔ)器的操作指令,則轉(zhuǎn)到MMU/CACHE模擬模塊。如果模擬的CPU類型不支持MMU(如ARM7TDMI),則SkyEye會(huì)根據(jù)將訪問的地址,直接轉(zhuǎn)到MEMORY模擬模塊或開發(fā)板IO模擬模塊;否則轉(zhuǎn)到具體CPU類型相關(guān)的模擬子模塊進(jìn)行MMU/CACHE模擬。主要的文件包括兩部分:
與具體CPU類型無關(guān)的MMU/CACHE模擬子模塊:
armvirt.c、armmmu.c、mmu/*.[ch]
與具體CPU類型相關(guān)的MMU/CACHE模擬子模塊:
sa_mmu.[ch]:模擬strongarm的MMU/CACHE
arm7100_mmu.[ch]:模擬arm7[12]0T的MMU/CACHE
xscale_copro.c:模擬xscale的MMU/CACHE
arm920t_mmu.[ch]:模擬arm920t的MMU/CACHE
CoProcessor(又稱協(xié)處理器)模擬模塊:其主要任務(wù)是:完成各種協(xié)處理器的初始化;執(zhí)行各種協(xié)處理器的指令。實(shí)際上MMU/CACHE模擬模塊的一部分工作是模擬ARM的第15號(hào)協(xié)處理器,它的主要功能是配置MMU/CACHE等。主要的文件包括:
armcopro.c:根據(jù)配置信息,完成對(duì)ARM協(xié)處理器的初始化配置
xscale_copro.c:模擬xscale的協(xié)處理器cp13、cp14、cp15
sa_mmu.[ch]、arm7100_mmu.[ch]:模擬strongarm、ep7312的協(xié)處理器cp15
arm920t_mmu.[ch]:模擬arm920t的協(xié)處理器cp13、cp14、cp15
● IO模擬宏模塊:本模塊包含各種邏輯行為各異的外設(shè)模擬,主要包括系統(tǒng)IO模擬模塊、網(wǎng)絡(luò)芯片模擬模塊、LCD模擬模塊等。
系統(tǒng)IO模擬模塊:本模塊的主要任務(wù)包括:根據(jù)配置文件進(jìn)行IO和外設(shè)初始化;完成各種外部IO設(shè)備的模擬(如時(shí)鐘計(jì)數(shù)器累加、產(chǎn)生中斷、LCD顯示等);進(jìn)行各種特定CPU和外設(shè)的IO寄存器讀寫的模擬。本模塊與各種具體的開發(fā)板和CPU有很緊密的聯(lián)系,主要的文件包括:
armio.[ch]:建立在各個(gè)特定模擬子模塊上的抽象層模塊
skyeye_mach_at91.c:模擬Atmel AT91X40開發(fā)板
skyeye_mach_ep7312.c:模擬cirrus ep7312開發(fā)板
skyeye_mach_pxa.c:模擬intel xscale lubbock開發(fā)板
skyeye_mach_s3c4510b.c:模擬基于samsung s3c4510b的開發(fā)板
skyeye_mach_s3c44b0.c:模擬基于samsung s3c44b0的開發(fā)板
skyeye_mach_sa.c:模擬基于intel strongam的adsbitsy開發(fā)板
skyeye_mach_lpc.c:模擬基于philip lpc2249的開發(fā)板
skyeye_mach_sharp.c:模擬基于sharp lh7a400的開發(fā)板
skyeye_mach_at91rm92.c:模擬基于atmel at91rm9200的開發(fā)板
skyeye_mach_cs89712.c:模擬基于cs89712的開發(fā)板
網(wǎng)絡(luò)芯片模擬模塊:本模塊主要完成了對(duì)8019AS網(wǎng)絡(luò)芯片的模擬工作,主要任務(wù)包括:模擬8019AS的控制邏輯、8019AS與具體開發(fā)板IO模擬模塊的接口、虛擬網(wǎng)絡(luò)輸入輸出接口處理。主要的文件包括:
skyeye-ne2k.[ch]:8019AS的硬件邏輯模擬
skyeye_mach_at91.c:部分內(nèi)容完成接收虛擬網(wǎng)絡(luò)輸入處理模擬
skyeye_net_tuntap.c:配置tuntap虛擬網(wǎng)絡(luò)的接口
skyeye_net_vnet.c:配置vnet虛擬網(wǎng)絡(luò)的接口
vnet.c、if_vnet.h:獨(dú)立存在的軟件包,vnet虛擬網(wǎng)絡(luò)的具體實(shí)現(xiàn)
LCD/TouchScreen模擬模塊:本模塊主要完成LCD/TouchScreen控制邏輯的模擬,是目前唯一需要GUI支持的模塊,它的主要任務(wù)是:配置LCD/TouchScreen硬件模擬、模擬LCD/TouchScreen控制邏輯。有關(guān)LCD/TouchScreen模擬相關(guān)的文件包括:
skyeye_lcd.[ch]: LCD/TouchScreen配置和LCD/TouchScreen模擬的通用控制邏輯
skyeye_mach_*.c:與開發(fā)板相關(guān)LCD/TouchScreen的控制邏輯和中斷處理,目前支持ep7312和pxa255的skyeye模擬。
MEMORY模擬模塊:本模塊與具體的CPU和開發(fā)板無關(guān),它的主要任務(wù)包括:根據(jù)配置文件進(jìn)行內(nèi)存初始化,并加載binary image文件;進(jìn)行RAM/ROM讀寫的模擬。主要的文件包括:
armmem.[ch]:主要完成RAM/ROM讀寫模擬