• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2012-09-11 10:17:08陳宇星謝發(fā)榮
    微處理機 2012年6期
    關(guān)鍵詞:宿主機源碼文件夾

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

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

    1 引言

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

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

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

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

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

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

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

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

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

    3 基于ARM9的仿真軟件

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

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

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

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

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

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

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

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

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

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

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

    此時,宿主機操作系統(tǒng)安裝了QEMU編譯工具GCC和必備的函數(shù)庫。接著執(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//進入root根用戶模式

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

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

    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í)行下面的命令行操作對QEMU進行編譯:

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

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

    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

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

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

    make mini2440_config

    make-j4

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

    最后,會在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 可以自由切換運行的雙圖形系統(tǒng)。使用以下命令將它解壓[10]:

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

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

    #/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ù)器,并啟動之:

    sudo apt-get install nfs-kernel-server

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

    進入qemu/mini2440這個文件夾中,修改mini2440_start.sh這個文件,改為下面的語句:

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

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

    sudo ./mini2440/mini2440_start.sh

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

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

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

    移植成功后,仿真實驗效果如圖3所示。

    6 結(jié)束語

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

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

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

    [2]張雪燕.嵌入式仿真系統(tǒng)在嵌入式開發(fā)中的應(yīng)用[J].寧波廣播電視大學(xué)學(xué)報,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)仿真運行環(huán)境SkyEye應(yīng)用研究[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開發(fā)[J].昆明理工大學(xué)學(xué)報(理工版),2005,30(z1):362 -365.

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

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

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

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

    猜你喜歡
    宿主機源碼文件夾
    基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
    基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測方法
    計算機時代(2023年6期)2023-06-15 17:49:09
    磁力文件夾
    企業(yè)如何保護源碼
    虛擬網(wǎng)絡(luò)實驗室在農(nóng)村職校計算機網(wǎng)絡(luò)技術(shù)教學(xué)中的應(yīng)用研究
    嵌入式計算機軟件測試關(guān)鍵技術(shù)的思考
    調(diào)動右鍵 解決文件夾管理三大難題
    基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實驗課程改革
    計算機教育(2016年4期)2016-05-20 02:36:05
    嵌入式計算機軟件測試關(guān)鍵技術(shù)研究
    TC一鍵直達常用文件夾
    電腦迷(2015年1期)2015-04-29 21:24:13
    米易县| 丽江市| 武乡县| 林口县| 敦煌市| 望城县| 邵阳县| 连云港市| 东安县| 金塔县| 苗栗县| 昌都县| 疏勒县| 锦州市| 漳平市| 定远县| 二连浩特市| 江华| 清镇市| 南丰县| SHOW| 铁力市| 体育| 竹山县| 鸡泽县| 曲麻莱县| 锡林郭勒盟| 武鸣县| 尼木县| 沁阳市| 永年县| 酒泉市| 来安县| 岳阳县| 秀山| 增城市| 新和县| 陇川县| 札达县| 榆林市| 鱼台县|