999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QEMU的嵌入式系統(tǒng)仿真環(huán)境的構(gòu)建

2012-09-11 10:17:08陳宇星謝發(fā)榮
微處理機(jī) 2012年6期
關(guān)鍵詞:嵌入式環(huán)境系統(tǒng)

陳宇星,張 力,謝發(fā)榮

(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院,昆明 650500)

1 引言

在后PC時(shí)代和物聯(lián)網(wǎng)概念盛行的今天,嵌入式設(shè)備無(wú)所不在。其中ARM微處理器是一種低功率高性能的32位RISC微處理器,目前ARM微處理器已經(jīng)深入到無(wú)線通信、網(wǎng)絡(luò)應(yīng)用、工業(yè)控制、消費(fèi)類(lèi)電子產(chǎn)品、智能家居和汽車(chē)數(shù)碼等各個(gè)領(lǐng)域。而ARM9作為ARM系列中的主流產(chǎn)品,具有很高的性價(jià)比,在各個(gè)方面都有很廣的應(yīng)用,此處使用的MINI2440開(kāi)發(fā)板就是采用了基于ARM9架構(gòu)的S3C2440微處理器。

大多數(shù)嵌入式系統(tǒng)的開(kāi)發(fā),由于目標(biāo)機(jī)和宿主機(jī)使用的是不同體系結(jié)構(gòu)的處理器,因此無(wú)法在宿主機(jī)上運(yùn)行和測(cè)試目標(biāo)程序,通常需要建立一個(gè)交叉編譯環(huán)境,將編譯后的可執(zhí)行二進(jìn)制文件下載到目標(biāo)平臺(tái)上運(yùn)行。如此就使得只能在目標(biāo)操作系統(tǒng)移植系統(tǒng)設(shè)計(jì)完成之后,才能進(jìn)行嵌入式軟件的調(diào)試和開(kāi)發(fā)[1]。而又因?yàn)榍度胧介_(kāi)發(fā)一般需要邏輯分析儀、在線調(diào)試器和硬件設(shè)備這樣一套開(kāi)發(fā)調(diào)試組合平臺(tái),費(fèi)用常常高達(dá)數(shù)萬(wàn)元甚至十幾萬(wàn)元以上,所以對(duì)于想進(jìn)行嵌入式操作系統(tǒng)研究學(xué)習(xí)或應(yīng)用軟件設(shè)計(jì)開(kāi)發(fā)的研發(fā)人員而言,就可能存在以下兩個(gè)問(wèn)題:

1)由于經(jīng)費(fèi)不足,無(wú)法購(gòu)買(mǎi)必須的硬件設(shè)備和軟件來(lái)構(gòu)造學(xué)習(xí)和開(kāi)發(fā)的環(huán)境。

2)對(duì)硬件不太熟悉而在調(diào)試硬件方面耗費(fèi)太多精力,而高層次的軟件設(shè)計(jì)和開(kāi)發(fā)一般又不用太考慮底層硬件的實(shí)現(xiàn)細(xì)節(jié),如果直接處于一個(gè)實(shí)際的硬件環(huán)境中,在開(kāi)發(fā)和研究時(shí)就可能陷入硬件的具體細(xì)節(jié)中,不能把精力放在軟件開(kāi)發(fā)上。

因此有必要使用一種介于嵌入式操作系統(tǒng)和硬件之間的嵌入式仿真系統(tǒng)即仿真軟件,來(lái)模擬各種硬件設(shè)備,使得開(kāi)發(fā)者和學(xué)習(xí)者在此平臺(tái)上可模擬各種硬件設(shè)備,從而獲得一種高效且廉價(jià)(甚至是免費(fèi))的學(xué)習(xí)和開(kāi)發(fā)環(huán)境[2]。

2 仿真軟件與嵌入式系統(tǒng)

通常,仿真軟件是指通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離的環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。仿真軟件能夠在其運(yùn)行的計(jì)算機(jī)系統(tǒng)上創(chuàng)建一個(gè)封閉的隔離環(huán)境,并能夠保證虛擬環(huán)境中計(jì)算行為的安全性。而嵌入式系統(tǒng)作為一種特殊的軟件和硬件綜合體,其普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)業(yè)計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)一般由嵌入式微處理器、外網(wǎng)硬件設(shè)備、嵌入式操作系統(tǒng)和特定的應(yīng)用程序所組成。其中硬件平臺(tái)的多樣性是嵌入式系統(tǒng)的主要特點(diǎn),不同的應(yīng)用通常有不同的硬件環(huán)境[3]。而嵌入式操作系統(tǒng)則具有相當(dāng)不變性,主要完成嵌入式應(yīng)用的任務(wù)調(diào)度和控制等核心功能,具有內(nèi)核較精簡(jiǎn)、可配置、與高層應(yīng)用緊密關(guān)聯(lián)等特點(diǎn)。嵌入式應(yīng)用程序運(yùn)行于操作系統(tǒng)之上,利用操作系統(tǒng)提供的機(jī)制完成特定的嵌入式應(yīng)用[4]。

仿真軟件和嵌入式系統(tǒng)的以上特征決定了此處所描述的嵌入式仿真系統(tǒng)需要在通用的LINUX和WINDOWS平臺(tái)上實(shí)現(xiàn)一個(gè)如圖1所示的仿真集成開(kāi)發(fā)環(huán)境,模擬ARMLinux、uCOS-II、WinCE 等常見(jiàn)嵌入式計(jì)算機(jī)系統(tǒng)和TCP/IP、圖形子系統(tǒng)和文件子系統(tǒng)等系統(tǒng)軟件,并可對(duì)它們進(jìn)行源碼級(jí)別的分析和測(cè)試。

圖1 仿真平臺(tái)結(jié)構(gòu)圖

3 基于ARM9的仿真軟件

由于此處需要對(duì)ARM9-S3C2440微處理器嵌入式系統(tǒng)(簡(jiǎn)稱(chēng)ARM2440)進(jìn)行模擬仿真,而目前可以模擬ARM2440的指令級(jí)仿真軟件有以下幾款:QEMU、ARMulator、國(guó)內(nèi)清華大學(xué)研發(fā)的 Skyeye,還有2010年國(guó)內(nèi)慧至科技公司研發(fā)的Realboard仿真軟件平臺(tái)。

鑒于從方便性、靈活性、成熟度和發(fā)展前景來(lái)分析比較,文章選擇了QEMU。因?yàn)镼EMU系統(tǒng)是目前較為先進(jìn)的可開(kāi)發(fā)源代碼的具有動(dòng)態(tài)二進(jìn)制翻譯技術(shù)的跨平臺(tái)仿真軟件,它可以模擬IA32(x86)、ARM、AMD64、MIPS R4000、SPARC sun3 與 PowerPC(Prep及Power Macintosh)等架構(gòu)。而QEMU的原理是首先將ELF格式的可執(zhí)行文件翻譯成中間形式,然后根據(jù)中間形式,拷貝編譯好的微操作代碼(由C語(yǔ)言實(shí)現(xiàn)),形成目標(biāo)基本塊,最后再執(zhí)行此基本塊。它的總體結(jié)構(gòu)如圖2所示[5]。

圖2 QEMU總體結(jié)構(gòu)圖

另外目前的QEMU仿真速度已經(jīng)越來(lái)越快,不需要像skyeye一樣必須使用配置文件設(shè)置內(nèi)存地址等信息,而是可以直接使用腳本命令進(jìn)行修改操作,其中更重要的一點(diǎn)就是其網(wǎng)絡(luò)配置十分方便,它有三種網(wǎng)絡(luò)模式可供選擇,其中的TUN/TAP模式在Linux系統(tǒng)中模擬網(wǎng)絡(luò)是很標(biāo)準(zhǔn)的做法,這就與vmware和vitualbox等常用虛擬機(jī)的橋接網(wǎng)絡(luò)配置方式是一樣的。這種網(wǎng)絡(luò)配置方式特別有利于進(jìn)行U-Boot中的TFTP傳輸燒寫(xiě)內(nèi)核和掛載NFS網(wǎng)絡(luò)文件系統(tǒng)的實(shí)驗(yàn)[6]。

4 建立嵌入式開(kāi)發(fā)環(huán)境

此處所使用的宿主機(jī)平臺(tái)為發(fā)行版Linux免費(fèi)操作系統(tǒng)Ubuntu 11.10,主要是為了方便編譯工具的安裝制作,減少編譯源碼時(shí)產(chǎn)生的函數(shù)庫(kù)依賴問(wèn)題。當(dāng)然宿主機(jī)平臺(tái)也可以使用其他的操作系統(tǒng)搭建編譯環(huán)境,例如在WINDOWS上安裝MinGW和MSYS以及CodeSourcery ARM EABI交叉編譯工具鏈,由于在這些環(huán)境中建立仿真平臺(tái)比在Ubuntu上更為復(fù)雜,因此這里就不予闡述了。

雖然在Ubuntu上使用軟件源自動(dòng)安裝的標(biāo)準(zhǔn)QEMU仿真軟件中的qemu-system-arm命令并不支持基于ARM920T的S3C2440處理器,但是可以從http://repo.or.cz/這個(gè)網(wǎng)站里面下載到專(zhuān)門(mén)支持S3C2440處理器的QEMU for MINI2440仿真軟件源碼和U-Boot for MINI2440引導(dǎo)程序源碼,還有Linux kernel for MINI2440的內(nèi)核源碼。

其中Qemu for MINI2440是已經(jīng)經(jīng)過(guò)修改專(zhuān)門(mén)為MINI2440開(kāi)發(fā)板定制并且以u(píng)-boot為引導(dǎo)程序的專(zhuān)用性很強(qiáng)的源碼。引導(dǎo)程序U-Boot for MINI2440也是把架構(gòu)清晰、可移植性強(qiáng)的U-Boot開(kāi)源程序經(jīng)過(guò)修改使之適應(yīng)于MINI2440的網(wǎng)卡和NAND FLASH等硬件驅(qū)動(dòng)。而Linux kernel for MINI2440則是將MINI2440開(kāi)發(fā)板上的各種特殊硬件驅(qū)動(dòng)程序加入到了標(biāo)準(zhǔn)linux內(nèi)核源碼中。

4.1 QEMU仿真環(huán)境的建立

首先,進(jìn)入 Ubuntu宿主機(jī)系統(tǒng),執(zhí)行以下命令[7]:

sudo apt-get install build-essential ddd cpio libncurses5-dev libsdl-dev zlib1g-dev

此時(shí),宿主機(jī)操作系統(tǒng)安裝了QEMU編譯工具GCC和必備的函數(shù)庫(kù)。接著執(zhí)行下列命令安裝TUN/TAP虛擬網(wǎng)絡(luò)仿真模塊:

sudo apt-get install kernel-package linuxsource//下載內(nèi)核源碼

cd/usr/src/linux-source-‘uname -r’

sudo tar xjvf linux-source-‘uname -r’

cd linux-source-‘uname -r’

sudo-s//進(jìn)入root根用戶模式

cp/boot/config-[kernel-version]./.config make menuconfig//配置內(nèi)核,將 TUN/TAP選擇(M)編譯模塊

make modules//重新只編譯(M)模塊選項(xiàng),不編譯(*)選項(xiàng)支持的功能

cp ./driver/net/tun.ko/lib/module/’uname -r’/kernel/driver/net

depmod//重新建立模塊依賴關(guān)系

modprobe tun//加載TUN虛擬網(wǎng)絡(luò)模塊

lsmod|grep tun//檢查若出現(xiàn) tun 87040則成功加載TUN模塊

然后到 http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz 下載 qemu for mini2440源碼包,解壓后,在源代碼的主目錄中執(zhí)行下面的命令行操作對(duì)QEMU進(jìn)行編譯:

./configure- -target-list=arm-softmmu Make-j4

最后,在arm-softmmu文件夾內(nèi)將生成qemu-system-arm這個(gè)二進(jìn)制程序。

4.2 編譯移植U-Boot

首先,使用以下命令安裝交叉編譯工具:

tar jxvf arm-2008q3-72-arm-none-linuxgnueabi-i686-pc-linux-gnu.tar.bz2-C/

export PATH=$PATH:/opt/arm-2009q1/bin/

使用以上最后一條命令將交叉編譯工具目錄加入環(huán)境變量,則交叉工具鏈 arm-none-linuxgnueabi-將在此終端命令行中產(chǎn)生作用。

然后下載U-Boot源碼包,使用下列命令將它解壓編譯:

mv HEAD.tar.gz uboot.tar.gz

tar xzvf uboot.tar.gz

cd uboot

打開(kāi)Makefile配置文件,將CROSS_COMPILE變量修改賦值為現(xiàn)有的交叉編譯工具鏈的名稱(chēng):arm-none-linux-gnueabi-

再執(zhí)行下列命令進(jìn)行編譯:

make mini2440_config

make-j4

編譯完畢后,即在當(dāng)前目錄下生成名為uboot.bin的文件。注意如果在之后需要使用 uboot的nfs下載文件功能,需要修改代碼中的一部分,將net/nfs.c文件中的 NFS_TIMEOUT=2UL修改為NFS_TIMEOUT=20000UL,這樣就可以添加延時(shí)時(shí)間,從而避免NFS文件下載失敗。還有最好將其中初始化IP地址的代碼修改為和自己宿主機(jī)當(dāng)前的IP地址同屬一個(gè)網(wǎng)段,以方便以后的TFTP和NFS 聯(lián)網(wǎng)實(shí)驗(yàn)[8]。

最后,將編譯好的 u-boot.bin拷貝到 qemu/mini2440文件夾中去。

4.3 編譯移植Linux kernel for MINI2440

首先,使用以下命令安裝Uimage制作工具:sudo apt-get install uboot-mkimage

然后編譯Linux kernel for mini2440:make mini2440_defconfig ARCH=arm

make-j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

最后,會(huì)在arch/arm/boot目錄下生成uImage文件,將此文件復(fù)制到qemu目錄下面的mini2440文件夾下,并將 mini2440文件夾中的 mini2440_start.sh作如下修改,將 kernel一行改為 – kernel“$base/uImage”即可[9]。

4.4 掛載rootfs-qtopia-qt4文件系統(tǒng)

首先,在友善之臂公司的官網(wǎng) http://www.arm9.net/download.asp上可以下載到基于 Linux kernel for mini2440的Rootfs-Qtopia-Qt4這樣的目標(biāo)文件系統(tǒng)壓縮包,它是基于 Busybox-1.13.3,包含 Qtopia-2.2.0 和 QtE -4.6.3 可以自由切換運(yùn)行的雙圖形系統(tǒng)。使用以下命令將它解壓[10]:

sudo tar xzvf rootfs_qtopia_qt4 -20100816.tar.gz-C/opt/nfs

然后,進(jìn)入/opt/nfs/rootfs_qtopia_qt4這個(gè)文件夾中,修改etc/init.d/rcS這個(gè)文件,將下面兩個(gè)語(yǔ)句按照如下方式注釋掉即可:

#/sbin/ifconfig lo 127.0.0.1

#/etc/init.d/ifconfig - eth0

其次,修改/etc/exports文件,在文件末尾添加如下一行:

/opt/nfs/rootfs_qtopia_qt4*(rw,sync,no_root_squash)

并按照如下命令安裝NFS服務(wù)器,并啟動(dòng)之:

sudo apt-get install nfs-kernel-server

sudo/etc/init.d/nfs- kernel- server restart

進(jìn)入qemu/mini2440這個(gè)文件夾中,修改mini2440_start.sh這個(gè)文件,改為下面的語(yǔ)句:

-net tap,vlan=0,ifname=tap0,script="$base/qemu-ifup",downscript="$base/qemu-ifdown"

最后,當(dāng)做完以上修改后,在命令行中進(jìn)入qemu目錄,并輸入以下命令:

sudo ./mini2440/mini2440_start.sh

就可以看到終端中kernel開(kāi)始加載的信息,當(dāng)文件系統(tǒng)成功掛載后,可以在QEMU軟件中看到Qtopia2圖形操作系統(tǒng)。

5 移植QT4應(yīng)用程序

本rootfs-qtopia-qt4文件系統(tǒng)之中有一個(gè)友善公司制作的名稱(chēng)為Start Qt4.6.3的軟件,點(diǎn)擊后可以自動(dòng)切換進(jìn)入QT4圖形環(huán)境。本實(shí)驗(yàn)移植了一個(gè)基于QT4開(kāi)發(fā)的電子詞典qt-dict[11]。由于本部分涉及的代碼修改過(guò)程和移植方法細(xì)節(jié)較多,在這里就不做詳細(xì)介紹了[12]。

移植成功后,仿真實(shí)驗(yàn)效果如圖3所示。

6 結(jié)束語(yǔ)

隨著社會(huì)的快速發(fā)展,嵌入式在人們生活的方方面面扮演著越來(lái)越重要的角色,ARM微處理器已經(jīng)出現(xiàn)在人們周?chē)魇礁鳂拥脑O(shè)備中。而QEMU作為一個(gè)純軟件的開(kāi)源跨平臺(tái)硬件仿真平臺(tái)已經(jīng)得到了越來(lái)越多的應(yīng)用,例如最近比較流行的智能移動(dòng)終端操作系統(tǒng)Android的開(kāi)發(fā)模擬平臺(tái)使用的就是QEMU仿真軟件。QEMU的出現(xiàn)為嵌入式軟件設(shè)計(jì)節(jié)約了大量的開(kāi)發(fā)時(shí)間。此處建立的開(kāi)發(fā)環(huán)境,使得開(kāi)發(fā)人員可以在沒(méi)有開(kāi)發(fā)板的情況下進(jìn)行前期軟件開(kāi)發(fā)、調(diào)試和試運(yùn)行,大大提高了開(kāi)發(fā)效率,是對(duì)嵌入式軟件開(kāi)發(fā)的有力支持。

圖3 基于QT4圖形界面的電子詞典

[1]江樂(lè)斌.嵌入式MCU仿真的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2007.

[2]張雪燕.嵌入式仿真系統(tǒng)在嵌入式開(kāi)發(fā)中的應(yīng)用[J].寧波廣播電視大學(xué)學(xué)報(bào),2006,4(1):82-84.

[3]Wei Chen.An Emulator for Executing IA - 32 Applications on ARM - Based Systems[J].JOURNAL OF COMPUTERS,2010,5(7):1133 -1135.

[4]宋靖,吳慶波.嵌入式系統(tǒng)仿真運(yùn)行環(huán)境SkyEye應(yīng)用研究[J].微處理機(jī),2007,28(2):94-97.

[5]Fabrice Bellard.QEMU,a Fast and Portable Dynamic Translator[C].2005 USENIX Annual Technical Conference,2005.

[6]Wolfgang Mueller.1st International QEMU Users Forum[C].Alpexpo,Grenoble,F(xiàn)rance,2011.

[7]Leao.使用qemu建立mini2440的模擬仿真環(huán)境[EB/OL].2011. http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html

[8]陳璇.嵌入式Linux開(kāi)發(fā)[J].昆明理工大學(xué)學(xué)報(bào)(理工版),2005,30(z1):362 -365.

[9]盛惠興,王海濱,姚家坤.嵌入式Linux系統(tǒng)的開(kāi)發(fā)與優(yōu)化[J].微電子學(xué)與計(jì)算機(jī),2007,24(6):94 -96.

[10]陳峰,李濱滔,戈志華.基于S3C2410的嵌入式Linux系統(tǒng)構(gòu)建[J].現(xiàn)代電子技術(shù),2007,30(20):55 -57.

[11]周?chē)?guó)華,陸德波,朱荊洲.基于Linux的嵌入式應(yīng)用開(kāi)發(fā)策略[J].計(jì)算機(jī)與數(shù)字工程,2005,33(3):42-45.

[12]王存健,張建正.嵌入式Linux下Qt/Embedded的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(11):179 -181.

猜你喜歡
嵌入式環(huán)境系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
長(zhǎng)期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
一種用于自主學(xué)習(xí)的虛擬仿真環(huán)境
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
孕期遠(yuǎn)離容易致畸的環(huán)境
環(huán)境
搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 中文字幕亚洲乱码熟女1区2区| 国产99免费视频| 欧美区国产区| 91尤物国产尤物福利在线| 成人91在线| 草逼视频国产| 四虎影视无码永久免费观看| 伊人国产无码高清视频| 国产白浆一区二区三区视频在线| 青青青伊人色综合久久| 久久综合九九亚洲一区| 国产欧美日韩91| 婷婷亚洲视频| 毛片一级在线| 欧美日韩久久综合| 91香蕉视频下载网站| 综合久久久久久久综合网| 亚洲va视频| 8090成人午夜精品| 青草国产在线视频| 一本色道久久88| 午夜免费视频网站| www精品久久| 日本高清在线看免费观看| 青青热久麻豆精品视频在线观看| 精品午夜国产福利观看| 免费在线观看av| 18黑白丝水手服自慰喷水网站| 国产精品午夜福利麻豆| 男女男免费视频网站国产| 国产草草影院18成年视频| 无码高清专区| 欧美日韩va| 中文字幕永久视频| www成人国产在线观看网站| 专干老肥熟女视频网站| 亚洲综合婷婷激情| av一区二区三区高清久久| 亚洲视频二| 久久香蕉国产线看观看亚洲片| 国产97色在线| 亚洲第一成年免费网站| 久久亚洲高清国产| 无码精品国产dvd在线观看9久| 久久夜夜视频| 国产粉嫩粉嫩的18在线播放91| 国产精品自在线天天看片| 天天婬欲婬香婬色婬视频播放| 一本久道久久综合多人| 91成人精品视频| 综合色在线| 欧美成人第一页| 欧美成人精品一级在线观看| 91精品视频在线播放| 91在线激情在线观看| 日韩欧美中文字幕在线精品| 亚洲视频黄| 亚洲区欧美区| 国产女同自拍视频| 色婷婷视频在线| 国产美女精品一区二区| 国产精品毛片在线直播完整版 | 伊人久久福利中文字幕| 久久五月视频| 丰满人妻中出白浆| 日韩欧美中文亚洲高清在线| 国产福利小视频在线播放观看| 久久人人爽人人爽人人片aV东京热| 日韩 欧美 国产 精品 综合| 久久人搡人人玩人妻精品一| 久久性视频| 被公侵犯人妻少妇一区二区三区 | 国产精品蜜芽在线观看| 一级香蕉视频在线观看| 亚洲成A人V欧美综合天堂| 国产精品第一区在线观看| 99免费视频观看| 伊人丁香五月天久久综合| 国内精品九九久久久精品| 成人在线观看不卡| 亚洲Av激情网五月天| 久久久久青草大香线综合精品|