• 
    

    
    

      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
      云阳县| 彰化市| 泰州市| 澜沧| 安龙县| 泰州市| 云龙县| 淮滨县| 观塘区| 太仓市| 香格里拉县| 辽源市| 石景山区| 无为县| 竹北市| 土默特左旗| 澎湖县| 苏尼特左旗| 武汉市| 营山县| 郁南县| 阿巴嘎旗| 全州县| 蓝田县| 普兰县| 砚山县| 高雄市| 保定市| 祁阳县| 太保市| 南安市| 方正县| 武安市| 华阴市| 许昌市| 呼玛县| 元氏县| 枞阳县| 哈巴河县| 花莲县| 澜沧|