王健 劉雪花
摘要:隨著嵌入式系統(tǒng)的廣泛應用,嵌入式系統(tǒng)下的軟件開發(fā)日新越益,而高層次的嵌入式軟件設計很少涉及到底層的硬件細節(jié),同時嵌入式硬件平臺的搭建存在成本較高,硬件不穩(wěn)定等問題,本文介紹了一種基于SkyEye虛擬硬件技術下的嵌入式平臺仿真技術,并成功將Linux系統(tǒng)的內(nèi)核移植到基于SkyEye虛擬的ARM體系的硬件結構平臺下,為嵌入式學習與研究找到了一種新的途徑。
關鍵詞:SkyEye 虛擬;仿真 Linux
1 引言
目前,以消費類電子產(chǎn)品和移動終端應用為代表的嵌入式系統(tǒng)應用開發(fā)正在快速發(fā)展,市場需求的不斷變化與多種異構硬件體系結構的并存,給嵌入式系統(tǒng)開發(fā)與教學帶了一系列挑戰(zhàn),面對嵌入式系統(tǒng)開發(fā)與教學過程中存在的研發(fā)成本過高、硬件環(huán)境不穩(wěn)定等問題,引入一種快速、高效和低成本的開發(fā)環(huán)境,對于提高嵌入式系統(tǒng)的開發(fā)效率和開發(fā)質量具有重要意義。
2 SkyEye概述
SkyEye是一個由清華大學陳渝博士開發(fā)并建立的開源軟件項目,中文名稱為“天目”。SkyEye的目標是在常規(guī)的Linux和Windows平臺上仿真多種主流的嵌入式開發(fā)板和外部設備,實現(xiàn)一個可擴展的硬件模擬框架。SkyEye屬于一個指令級模擬器,可以模擬多種嵌入式開發(fā)板,可支持多種CPU指令集,在SkyEye上運行的操作系統(tǒng)意識不到它是在一個虛擬的環(huán)境中運行,而且開發(fā)人員可以通過SkyEye調試操作系統(tǒng)和系統(tǒng)軟件,其硬件模擬邏輯結構圖下圖1所示。目前SkyEye只提供Linux 和Windows兩種平臺下的安裝程序。
3 基于SkyEye嵌入式開發(fā)環(huán)境的建立
SkyEye共包含兩個軟件包,一個為SkyEye的發(fā)布版本包,另外一個為SkyEye的測試套件包,其中測試套件包用來對相應版本的SkyEye軟件包進行測試。
3.1 安裝SkyEye
(1)從source網(wǎng)站上下載SkyEye的最新版本1.3.3的源代碼,以root權限登錄Linux后解壓
# tar xvjf SkyEye-1.3.3_rel.tar.gz
(2)編譯程序
# ./configure
#make lib
#make
這里需要說明的是,其中make lib用來編譯第三方的庫,make來編譯SkyEye的源代碼
(3)安裝SkyEye到opt目錄下
# make install_lib
# make install
3.2 SkyEye的目錄與文件分析
安裝成功后會在opt目錄下生成以下目錄
Bin:存放SkyEye的工具。其中mknandflashdump用來制作nandflash鏡像文件,SkyEye為命令行應用程序,prof_convert用來把代碼覆蓋率的結果文件進行格式轉換,uart_instance可以通過一個xterm終端來顯示串口的輸出。
Include: SkyEye開發(fā)插件時所用到的頭文件,這些頭文件定義了SkyEye提供的API函數(shù)的原型
Info:info格式的文檔
Lib:存放SkyEye的核心庫libcommon.,so和其他一些以動態(tài)庫存在的插件
Testsuite:存放測試用例
4 在SkyEye中模擬基于S3C2440內(nèi)核的移植
4.1 構建基于ARM S3C2440仿真環(huán)境,建立配置文件skyeye.config,內(nèi)容如下
cpu: arm920t
mach: s3c2440x
# physical memory
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00800000
mem_bank: map=M, type=RW, addr=0xc0800000, size=0x00800000, file=./initrd.img
mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
lcd: type=s3c2440x, mod=gtk
#dbct:state=on
4.2 裁減編譯Linux內(nèi)核
# make xconfig
# make
4.3 將編譯生成的內(nèi)核鏡像文件和配置文件復制到/opt/bin/下,執(zhí)行SkyEye
#./skyeye-e vmlinux skyeye.config
5 結束語
目前,筆者移植的內(nèi)核版本為2.6.30.4的Linux已經(jīng)能穩(wěn)定地運行在SkyEye虛擬平臺上,為嵌入式軟件設計和嵌入式系統(tǒng)教學節(jié)約了大量的硬件平臺的搭建時間,并有效的結約了成本。當然由于SkyEye的目標不是驗證硬件邏輯,而是協(xié)助開發(fā)、調試和學習系統(tǒng)軟件,所以在實現(xiàn)上SkyEye與真實的硬件環(huán)境相比還是有一定差別的。SkyEye在時鐘節(jié)拍的時序上也不保證與硬件完全相同,對軟件透明的一些硬件仿真進行了一定的簡化。相信隨著該開源項目的不斷發(fā)展,SkyEye的易用性和通用性會得到提高,并成為嵌入式領域開發(fā)的有效工具。
參考文獻
[1] 李明,陳渝.一個開放源碼的嵌入式仿真環(huán)境——SkyEye.單片同與嵌入式系統(tǒng)應用.2003
[2] 宋靖,吳慶波.嵌入式系統(tǒng)仿真環(huán)境運行環(huán)境SkyEye應用研究.微處理機.2007
[3] 周兆豐,候向峰. 基于SkyEye的嵌入式系統(tǒng)仿真環(huán)境的構建. 單片同與嵌入式系統(tǒng)應用.2010
[4] skyeyev3_usermanual-v6.http://sourceforge.net/
[5] Li Ming.Analysis and Comparison of Two Simulation Environment of Embedded Software.IC&Components.2003