版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、QEMU 模擬 Cortex-A9 運行 U-boot 和 LinuxQEMU模擬Cortex-A9運行U-boot和Linux錯誤!未定義書簽。1. 實驗?zāi)康?.2. 實驗要求2.3. 實驗原理2.4. 實驗步驟4.4.1 VMware 虛擬機中安裝 Ubuntu4.4.2安裝QEMU模擬器.4.4.3編譯并運行U-boot5.4.4 編譯并運行 Linux7.4.5在目標機(Linux系統(tǒng))中運行應(yīng)用程序 1.0思考題13.1. 實驗?zāi)康?)熟練使用Linux操作系統(tǒng);2)認識一種新的核模擬器 QEMU3)掌握嵌入式Linux系統(tǒng)的開發(fā)流程;2. 實驗要求1)在PC機上安裝 VMware虛
2、擬機,并在 VMware中安裝Linux操作系統(tǒng)(Ubuntu 12.04 );2)在Ubuntu中安裝QEMU3)編譯U-boot,并在QEM上運行;4)編譯Linux核,并使用Busybox制作根文件系統(tǒng);5)在QEM上運行Linux操作系統(tǒng);6)在該Linux系統(tǒng)上運行應(yīng)用程序。3. 實驗原理1)VMware Workstation虛擬機是可以在 Windows/Linux系統(tǒng)上運行的應(yīng)用程序,它可 以模擬基于x86的標準PC環(huán)境。這個環(huán)境和真實的計算機一樣,都有芯片組、 CPU、存、 顯卡、聲卡、網(wǎng)卡、軟驅(qū)、硬盤、光驅(qū)、串口、并口、 USB控制器、SCSI控制器等設(shè)備。與 多啟動”系統(tǒng)
3、相比,VMWare采用了完全不同的概念,多啟動系統(tǒng)在一個時刻只能運行一 個系統(tǒng),在系統(tǒng)切換時需要重新啟動機器。而VMWare虛擬機軟件是一個 虛擬PC”軟件,它可以使你在一臺機器上同時運行多個 Windows、DOS、LINUX系統(tǒng),并且在系統(tǒng)切換時 不需要重啟計算機。在使用上,這臺虛擬機和真正的物理主機幾乎沒有區(qū)別,都需要分區(qū)、格式化、安裝操 作系統(tǒng)、安裝應(yīng)用程序和軟件,總之,一切操作都跟一臺真正的計算機一樣。2)QEMU模擬器:QEMU是一個面向完整PC系統(tǒng)的開源仿真器。除了可以仿真處理 器之外,QEMU還可以仿真所有必要的子系統(tǒng),如連網(wǎng)硬件和視頻硬件。它還允許實現(xiàn)高級概念上的仿真(如對稱
4、多處理系統(tǒng)(多達255個CPU)和對其他處理器架構(gòu)(如ARM和 PowerPC)的仿真。QEMU有兩種運行模式:* User mode模擬模式,亦稱作使用者模式。QEMU能啟動那些為不同中央處理器編譯 的Linux程序。* System mode模擬模式,亦稱作系統(tǒng)模式。QEMU能模擬整個電腦系統(tǒng),包括中央處 理器及其他周邊設(shè)備。它使得對跨平臺編寫的程序進行測試及調(diào)試變得容易。其亦能用來在 一部主機上虛擬多部不同的系統(tǒng)。3)嵌入式Linux系統(tǒng)的結(jié)構(gòu)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃?4個層次: 引導(dǎo)加載程序Bootloader。 核。完成對硬件設(shè)備的控制,Linux核的主要模塊分
5、為以下幾個部分:存儲管理、 CPU和進程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動、網(wǎng)絡(luò)通信、以及系統(tǒng)的初始化(引導(dǎo))、 系統(tǒng)調(diào)用等。 文件系統(tǒng)。它提供了用于管理系統(tǒng)的各種配置文件,以及為系統(tǒng)執(zhí)行用戶應(yīng)用程序 提供了良好的運行環(huán)境。 用戶應(yīng)用程序。根據(jù)不同的用戶需求而編寫的程序4) QEMU與宿主機之間的通信機制:QEMU提供了四種網(wǎng)絡(luò)通信模式:TAP、user、Sockets和VDE。利用user模式可以實現(xiàn)虛擬機和宿主機之間的通信且較為簡單易行,在這種通信模式中,虛擬機處于10.02*網(wǎng)段,該網(wǎng)段通過一個NAT服務(wù)器與外界通信,NAT服務(wù)器的 地址是,虛擬機的IP地址從開始分配4. 實驗步驟4.1 V
6、Mware虛擬機中安裝Ubuntu(1) 自行下載ubuntu12.04的.iso系統(tǒng)鏡像,并在 VMware中安裝。(2) Ubuntu安裝完成后,設(shè)置root密碼,以便后期編譯時獲取root權(quán)限。(3) 終端sudo即t-get update完成更新。(4) 安裝GNU的交叉編譯工具鏈。sudo apt-get in stall gcc-arm-l inu x-g nu eabisudo apt-get in stall g+-arm-li nu x-g nu eabi安裝完成后會在/usr/arm-linux-gnueabi/目錄下生成庫文件、頭文件等。4.2安裝QEMU模擬器sudo
7、apt-get in stall qemu qemu-system qemu-utils然后在終端中運行qemu-system-arm -version會顯示如下QEMU的版本信息:q&mu-5ystem-arn *-uerstanqlmu emulator version 1.0匚opyright (c): E)ea-2ees Fabrics Bellard4.3編譯并運行U-boot(1)在 windows 下到 下載最新版本的 U-Boot 源代碼,(參考 版本),下載完后將其放入 ubuntu中在該目錄下解壓:在當前目錄下會產(chǎn)生一個 u-boot-12.04的文件夾:I 畫 P
8、ictures£ VideosrikSystemS'RaihNetworkrootfsTemplatesve r set H led ni It amfstmprsVideos進入到u-boot-2012.04目錄下,修改其中的 Makefile,添加兩行(可放在文檔的開頭),ARCH ? =armCROSS_COMPILE ?= arm-li nu x-g nueabi-(2) 進入到u-boot-2012.04文件夾下,終端輸入命令:make ca9x4_ct_vxp_c onfigmake結(jié)果如下:e -p qiF -unjnr i-ij_fkh_ -nkr mu 1-
9、p r o - inn qiD' inifr war k -rnrch-arnvS Wall Wstrtct-prototypes -fno-stack protector -Wno-fornat-nonli.tcraL -Nrt0-forcnat-spcurtty -fstack-usase - Tno-toplevl-reorder -o stubsstubsx -crnLinux-gnuedbl-Ld -r -o Itbstubs.o stubs.aarn Linux qnueabi Ld g Ttext 9xcl0Ge0fl - a hello_i«orld -e h
10、ell_D_wor Id hello_Qrld.a ItbstutiE.o -L/ur/lib/gCc/arn-linux-grtueabV/4,6 -Igtcarm -Itnux-gnuedbl-Dbjcopy -0 sre匚 hello_world helloujurldrec 2>>de*j/ndll arn-Linux-gnueabi-Id -q -Ttext OxclQGOas -a snc91 lx_&epran -e snc9llx_eeprDm smt9l 15t_eepronxC lib'L/usr/llb/gcc/irn-iicuX'gn
11、tJbl/4.6 -Igccarn Linux gnueabi objeopy 0 srcc snc911x_ccprt>n smcllx eepron,srec 2>/de/null arn-Unux-gnueabl-obJcopy -o binary helLo world hello morid.birt 2>/dev/nullarn Linux gnueabi objeapy 0 binarv snc911x_ccprori sn匚911x_ceprom<btn 2*/dev/nul 1nakels Leaving directory '/hone/sy
12、Uu boot 2ftl2«64/eKanples/standalofw'nak« -c axanplesyapt allnakel: Entering directory L /hone/syl/u-boot - 012.6 4/exanp les/apt1mak 1 t nothing Tt> b電 done for ' all * .nakefl : Leaving dlrectcry 1 /hane/syl/u - boot - 2012,04/examples/api 1 raotubuntu:/ha'T.e/&yl/u-bo
13、ct-2012.04U |結(jié)果會在u-boot-2012.04文件夾下生成u-boot.bin等文件,如下圖所示:_卜hp協(xié)em* rrashNetworkBrowse Net.> LB- I* Mil由 IMakeFRernktonfig* Ci#初* ,README*fhfrlirj;es.rnkmitLbootSys tern.mapAkrbootJdsu-bootmdpUUj-booLsrec(3) 然后在終端中執(zhí)行下面的命令,來啟動 U-bootqemu-system-arm -M vexpress-a9 -m 256M -no graphic -ker nel u-boot或
14、者qemu-system-arm -M vexpress-a9 -m 256M -serial stdio -ker nel u-boot結(jié)果如下圖:lerminal盟 才夠 7:17Piv! 1 syl亠raotbubuntil: -/u-boat-20104am- llnun -gnuJbl' objcopy -Ollx cepror sncllx eeprcri.srcc 2 5-/dcv/fiull arn-HnuM-gnuAbt-abjcDpy -O bnry hfitlo_horlcl h#ll<i_rforId.btn ?*/dev/rull arn-ltnux
15、39;gmjabt-objcopy '0 binary snc$llK_eepron sHcJiix_eeprfln.bin 2/d«/riulI flB1 ; Leaving dlrector '/hnrw/l/ij-t»Dt -2ai2.64/standalone'nake -C exaFipl?s/api allf( nake 1J : Ente ring directcry /home / &/L/u-boot-2ei2.&4/exariples/api ' make 1:to be done far all .I
16、39;idkf 1 e Le jvtng MLrectcry ' /home/syl/u-boot-2612flfl/aKdples/jpl 'K1 rootfubuntu :-/u- boot-2012.04*rootubuntu: /u-bDot-2012.04*二 rootubuntu: -/u-boot-20iz.e4< qenu -am r vexprtss-9 *e 256H nographtc -kernel u-bootLFBOOt Z617.04 ( Feb IQ ien - 19:fl7; 25>ORAM; 250 MiBEARNING: Cac
17、hes not enabledFlash: if? unknown flash on h自nk i - stz* - exeaoeotiQO - a waUnknown flasfi »n Bank 2 SLrOkM&O0OO6 = 4 MB* feilrdHint EARDR jr# Pltase RESET IhE bwrd 替料此時是檢測 Flash failed后停止運行,是因為在arch/arm/lib/board.c里面boardnit_r()函數(shù)里檢測Flash失敗后調(diào)用了 hang(),暫時先把hang()去掉就可以運行下去了。正常的運行 結(jié)果如下:Ll
18、9;Boot 2012,G4 (Mar 13 2014 - 21:29:163RAM: 256 NIBRNIWC: Caches rot enabledsaiht 禰 unknown flash on Bank 1 - size = ox&oseeooa = o xbttn Unknown flash on Bank 2 亠 Size = 0x6OO&0ee& - G HB* failed *IC: MMCi e* Warntnq - bad <RC, usinq default ervironnentIn:sertaIOut:serialErrisertalUw
19、t: 5HC911X- 9Tit 日ny ke/ to top autoboot: flrong lnge Foririat for bootm corandERROR: con't get kernel inoqe!(/Express*/Express# printenvp«udrote30eoboolargs=root=/dev/sdai rw con5ole=ttyANA9,38400ns nem=iezM ntdparts=ar(nriashi1 OxBaGG&OtubootJMgexlOGOGGOCkerneDHGxZOOGGeQdnitrd) nnct.f
20、nax=19&000 制I 't 竹 dFw+EDLjrit = d 腫alltJU=2 占&忤4.4編譯并運行Linux(1) 到下載最新的Linux核源碼,(參考),解壓后得到文件夾,修改Makefile,修改的位置如下圖:¥ during conpi iaxon, uniy gc匚 ana reiaTen dip-utl is execuraoles # are prefixed with $(CRn5S_C0MPTLE).獻 CR0S5C0NPILE can be set on the v nake CROSS_cor<pIle-Xaod - h
21、nux - tt Altern#tively CRD55_OMPrLr cn 常 A third alternative is to store# 'nake,r tn the configured kernel# Default value for CROS5_COMPILEconriond lireb音 set in th nvironrnt,a setting in .config sc that plain build directory always uses that. is not to prefix executables常 Note: Sone archttectur
22、es 恥rlgn CHOSE COMPILE tn their arch/+Mjkcftie export KBUlLD_bUlLDHOST := $(SUBARCH)ARCHCROSSCOMPILtff ArchttecturEUlT5_IAIZHLNESRCAflCM7- S(SUBARCH)?= SCCONFlG-LRDSS-CDhPlLE:*- =«)as present tn coripile*h !=SCORCH)茁 Additional arch settings for x8b tfeq ($(ARCH)A38&)修改如下ARCH = armCROSS_COM
23、PILE=arm-li nux-g nueabi-在 目錄下 make vexpress_defconfig然后 make menuconfig -> System Type 把 Enable the L2x0 outer cache controller 取消, 否則Qemu會起不來。然后make,會在arch/arm/boot/目錄下生成zImage核映像文件,這就是我們需要的核 映像。(2) 制作根目錄系統(tǒng)1編譯 busybox 下載busybox源碼:解壓,還是在目錄下的Makefile中修改ARCH = armCROSS_COMPILE=arm-li nux-g nu eabi
24、- make menuconfig進行配置BusyBcx 1,22.0 ConftgurattohArr ow keys navlgd te the nenu* <Enter > selects stbrnerus Highlighted letters are hotkeys. Pressing Includes, excludes, niodular tzes features * Press <Esc5<Esc to exit, for relp. Search * Legend: * built-in excludednodule < >-apple
25、ts rchlvel utilities -? oreutlls > onsole Uttlttles > 亡Hl自n Utilities > dltor > trdlncj Uttlttleb -> ntt Utilities -*> ogin/Password Management utllttIts >< EXtt n在 Busybox Sett in g->Build Opdi on s-> 選擇Build BusyBox as a static binary (no sharedlibs)使用靜態(tài)編譯 make,會在目錄中產(chǎn)
26、生in stall文件, make inatall ,會在目錄中生成文件夾 _install,2. 制作根文件系統(tǒng)目錄mkdir rootfscd rootfs(1) 建立目錄結(jié)構(gòu)mkdir bin etc dev lib proc tmp root home sys usr sbin var mnt(2) 運行庫-來自工具鏈cp -a /usr/arm-li nu x-g nu eabi/lib/* lib(3) 配置文件-來自busyboxcp -a <busybox_dir>/examples/bootfloppy/etc/* etc(4) busybox 工具集cp -a
27、<busybox_dir>/_i nstall/* .(5) 設(shè)備文件/dev/zeroudo cp -a /dev/c on sole/dev/loopO /dev/loop1 /dev/null /dev/ramO /dev/tty /dev/ttyO /dev/tty1 dev(6) 修改mdev配置,mdev負責(zé)自動生成設(shè)備節(jié)點,mdev.conf是配置文件vim etc/mdev.c onfcontrolC0-9 0:0 0660 =snd/pcm.* 0:0 0660 =snd/seq.* 0:0 0660 =snd/mix.* 0:0 0660 =snd/timer
28、0:0 0660 =snd/其他特殊要求的設(shè)備文件,同樣道理即可.(7) 修改啟動配置vi etc/i nit.d/rcS增加mount -n -t proc none /procmount -n -t sysfs none /sysmdev -s這句很重要,生成所有的設(shè)備節(jié)點如果用nfs的話,有了以上目錄就可以了3.根文件系統(tǒng)鏡像dd if=/dev/zero of=rootfs.img bs=1M count=64 # 32M 的鏡像mkfs.ext3 rootfs.imgmkdir tmpfssudo mount -o loop rootfs.img tmpfssudo cp -a ro
29、otfs/* tmpfs/sudo umount tmpfsrootfs.img中就有了文件系統(tǒng)鏡像了,ext3格式.(3)QEMU運行Linux系統(tǒng)qemu-system-arm -M vexpress-a9 -m 256M -kernel運行結(jié)果如下:是放置核鏡像的路徑。H&fc 3D FT*滬山j(luò)ldJiPBKK 増上血 嚼沁# ytVMJf 2L£ . & H LBttmaaiai |>air < i'L LiMiiIctHid ipltrll Mj aal iinf's/1 I ihLer f4&.E Fljvlli 上5
30、>fSfllvwrtuwp.11*11 吟zrN-.lgrii w<r 匚 A; r UFO SiZ e-Mtirk£0 ( i| If IAS 1 nil ftrW/WFHM-f -KyiMF T : Hfhi ll h l-rrpd p-rrhE naMl f «'! ty 1 ?UFF- 3r li0 *3 r"-一-I pmii I ' I is'K bfcr 'Fvpr-lf:Hlb : r Lc : mu L-ft 1R-ni» c.to- 2M> II 4 03-4 1 * f* '
31、Ih E I:h- tairv- 3 r-t 1AE Jknt TCiMhm -m iili -hr -nh ' iw I I1-<9 I i tipw1! I iipw1! I 14 «.:s = s utc «m<7i»azEa >VIP呂fwli ts 4 innr Ek* L £>rim4.5在目標機(Linux系統(tǒng))中運行應(yīng)用程序用戶應(yīng)用程序在目標機上運行有兩種方法: 將編譯后的可執(zhí)行文件放入到根文件系統(tǒng)中,在做成根文件系統(tǒng)的鏡像后,由核調(diào)用 并執(zhí)行。 使用NFS (網(wǎng)絡(luò)文件系統(tǒng))在本地機和目標機之間建立通信。1
32、)QEMU與Ubuntu之間的通信1. 首先在 Ubu ntu 上安裝 NFS 網(wǎng)絡(luò)文件系統(tǒng) apt-get in stall n fs-kernel-server2. 在NFS服務(wù)的配置文件/etc/exports中添加:/ *(rw ,no_roo t_squash,i nsecure)3. 關(guān)閉Ubuntu的網(wǎng)關(guān),避免連接不上:在/etc/resolv.conf中全部注釋掉,不要 DNS服務(wù)器地址。4. 在宿主機Ubuntu中開啟NFS服務(wù):/etc/i nit.d/nfs-kernel-server start5. 再次啟動Qemu,在最后面添加如下命令-net user -net n
33、ic 6. 最后,在目標機中配置網(wǎng)絡(luò)、掛載NFS文件系統(tǒng)、切換根文件系統(tǒng):這樣就可將的主機的文件系統(tǒng)掛載到/mnt目錄下。(注:是我的Ubuntu的IP地址,可用ifconfig查看本地機的IP地址。)'、=m I- hb .AhrwrtPnTIIOIslb o n-etcl<I5l»rE3UHdpts b inusruuuluw1Fhhj1 lnMxrvfluiprut:lltv1 rwtPTiTZi-IClirdlTWt/BTOt»M'S,Z44O Za-nitltIsIk InliillrilpruutbiJmurfrinotetc)|brflf
34、itSt 1 imlUhl irwiKlavrnumlDFtrnws-rvsrDiwtMHYZItt /wrLB*圖(一)home Home qemusearchComputer皓 Home匚 np-.krnpj; Documents劭 Duwrlo<»ds心 VU5K> Pitlui 出H Videoshnct File ternu TrashNetwork*1 Browse Net.,.edromdevetcmedirootsrvvarmntruni Mt rdmg圖(二)liboptsbintmpvmhnu?hstToundprocsetinuxusr'ho
35、me" selected fcorUd ninq T item)圖(一)是查看/mnt目錄下所掛載的本地機的文件系統(tǒng),圖(二)是本地機的文件系統(tǒng),比較以上兩圖可知,本地機上的文件系統(tǒng)在目標機上掛載成功U ¥ «|.17丫 L E W h fX 1 JV 1 *m? /OErWptF沖 1©Eg*phitfb-sbMl WjmIdeluscriptumw: 1nlktCMpplilPcjTOgress.s l»Vvi卜nWyliadtipkfi 1. kutepfgrilEriusIaIWHlchcWtrd町沖IImmIZ-non nt葩SUMc
36、Jh<rDd-nsdonn |TWfl.Kbft hnstTAfliR:科untvEirt3U£ li nodduHuknaphudIrihidlref 口 EhiaeKUTH:比 h*|i伽血luilitntfilSTcdIsraurwltrtouch£;|1 iuJ |M«ldrlutLrriElEtjatranpat-£trueIruutvmw丿ZiUn cd zniiVbilii/(rnntPrlV1«hiiwll Mpaxbdrix-dana LomnErrtf s Is.XUIVnif»rtdHLiuwyrcnpkc
37、ijrfksbikntfsMOuetaiir"TKERLathivdntts LruraudiLEtar誡MirlUfSMipetenpf LlekiizJsrrqrepKhglopentouH-h"bzBsirepZOEktiEnptkpEtmrLtrue-hi«£xe:曲電皿1上M»rrpidorkHncHr3CFKrfre>hM Pit時繃LihMaOtUlTOf Iwlmtwutpoiirtpfiiny6irvi»«甘誕FfetierR(jjkyn&uitliW itwrFWserftrm ntHt-g
38、mup hjhc-j th-wsf ir-t-br idf|r亡 jlQrtSjctfaiclHVIK1 - HFIwirM冋LfflH&J如 Jclt:忙 t51|U輕 *pHCudiLdh科h«clMWWCKG WE 詼rcidll irndi1BttiZdLi*nyinlcM iniiaiMt!'-linuJhOTZ脖rndiiirXCdtdinwninit-ch«kconrniisdonicinwiarensano3CH>幀機ihitetlZdotthr-rttn-pwr-tK£difr9-ktf-s-an rrotenuimhiq2
39、0cf tnkMt-fs-JSTrSecMKl lit3<D(rep|dfl xlhkillIk為.ttLEi-MiauetfaclxfurceLent際泌34|VWbns-c iMiwirEocketEIcsEwhntfscksewpconzies?5bEKBfl lent flCL! til C terZflUPEdllU# UUkl|Lll9加陽ytfSCRrtJb.ditmb也*1曲Des&plprwt fdec:ry|)l5 ICCInnt flug I1! leU£MirIM外怕瀘sty| Uruijt«ffi2444 hliilS _2)測試 H
40、ello World. 在本地機上使用vim編輯Hello World測試程序hello.c; 編譯hello.c生成可執(zhí)行文件; 將可執(zhí)行文件在目標機上運行。思考題1、QEMU運行的Linux系統(tǒng)中是否需要安裝 gcc。2、 在本地機(Ubuntu)編譯應(yīng)用程序時,是使用 gcc還是arm-linux-gcc?為什么?3、如何將可執(zhí)行文件在系統(tǒng)開機后自啟動?4、QEMU運行的Linux系統(tǒng)是命令行模式,如何將它改成圖形用戶界面模式?從零使用 qemu 模擬器搭建 arm 運行環(huán)境為什么會有這篇文章早在2011年的時候,跟當時同事一起討論,做Linux系統(tǒng)開發(fā)正處于整個Linux開發(fā)中間層,沒
41、有上層的 C/C+業(yè)務(wù)和數(shù)據(jù)庫的開發(fā)經(jīng)驗,也沒有底層的 核和驅(qū)動開發(fā)經(jīng)驗,到底路該如何走基于對Linux系統(tǒng)開發(fā)的理解和核的興趣,認為選擇Linux核開發(fā)更適合自己。于是到淘寶上買了塊三星s3c2440(arm9)開發(fā)板,學(xué)起核開發(fā)。沒有過多久,機緣巧合,正式加入了公司的核開發(fā)部。 就這樣跟核和arm打上交道了。沒有想到這一做就是3年了,arm芯片只有在公司才能使用,回到家里就不 能訪問了。去年(2014 )開始覺得做核久了,應(yīng)該向核社區(qū)提交patch,提升知名度和影響力。但在公司提交 patch不方便,于是在家里通過 qemu方式搭建于 ARM A9的運行環(huán)境,進行開發(fā)和 測試驗證,一口氣提
42、交了好幾個 patch(link1 , link2 , link3 , link4 , link5 )并被社區(qū)接納了。最近在梳理Linux存機制,無論是深入理解 Linux核還是深入理解核 架構(gòu)這兩本紅寶書都無法告知你每個細節(jié)的時候,就需要查看代碼細節(jié),修改 代碼,甚致做行為分析。此時需要修改代碼輸出調(diào)試信息,以幫助更深入體會代 碼的邏輯。這該是qemu派上場的時候。其實我前前后后搭建qemu+arm 的運行環(huán)境已超過5次了,每次都要花上 很多時間。碰巧昨天有同事看到我再次搭建,他如搭珍寶,告訴我一定要將搭建 qemu的方法告訴他。所以,如果你想買個開發(fā)板來做 arm + linux 嵌入式開
43、發(fā),完全可以使用 qemu進行開發(fā)?;蛘吣阆裎乙粯?,對核機制關(guān)心,而不關(guān)心于具體的外設(shè)器件, 最多是關(guān)心arm架構(gòu)相關(guān)的功能,也可以使用 qemu進行開發(fā)。一句話:搭建qemu+arm 環(huán)境,用于做核開發(fā)和功能分析調(diào)試。搭建環(huán)境我整個搭建過程都是在筆記本上進行的,Ubuntu 12.04 系統(tǒng);如果是Fodera 環(huán)境,搭建過程可能略有不同,但關(guān)鍵步驟是不變的。qemu模擬得最好的arm芯片,要數(shù)ARM公司的vexpress A9開發(fā)板了, 本文的搭建過程都是圍繞這個開發(fā)板進行的。當然,如果你想搭其它開發(fā)板,也 不難,只要qemu和核對它有成熟的支持就夠了。下面是step by step的搭建
44、過程,建議沒有特別訴求的朋友,按照下在面的 步驟操作。或者先根據(jù)下面的步驟成功搭建vexpress運行環(huán)境之后,再根據(jù)自己的需求進行更改。下載Linux 核下載核有兩種方法,一種是用Git直接下載核代碼樹,方便后面的核開發(fā)。另一種是直接到核社區(qū)下載對應(yīng)版本的源碼包。我采用第一種方法,但后面發(fā)現(xiàn) 主線上3.18版本和后面版本的代碼,使用這種搭建方法運行不起來。目前未查明 問題的根因。如果讀者想快速搭建成功,建議選用3.16版本的核進行搭建。方法一:使用gitgitcion egit:/git.ker /pub/scm/l inu x/ker nel/git/torvalds/li
45、nu x.git方法二:直接下載3.16源代碼包安裝arm的交叉編譯工具鏈想必做嵌入式開發(fā)的朋友,對交叉編譯工具鏈不陌生。如果你訂制一個交叉 編譯工具鏈,建議你使用crosstool-ng開源軟件來構(gòu)建。但在這里建議直接安裝arm的交叉編譯工具鏈:sudo apt-get in stall gcc-arm-li nu x-g nu eabi編譯Linux核生成vexpress開發(fā)板子的config文件:make CROSS_COMPILE二arm-li nu x-g nueabi- ARCH二arm vexpress_defc onfig編譯:make CROSS_COMPILE=arm-li
46、 nu x-g nueabi- ARCH=arm生成的核鐿像位于arch/arm/boot/zlmage , 后續(xù)qemu啟動時需要使用 該鏡像。下載和安裝qemu模擬器其實Ubuntu 12.04 有qemu的安裝包,但由于版本較低,對 vexpress開 發(fā)板支持不友好,建議下載高版本的qemu:配置qemu前,需要安裝幾個軟件包:sudo apt-get install zlib1g-devsudo apt-get install libglib2.0-0sudo apt-get in stall libglib2.0-dev配置qemu ,支持模擬arm架構(gòu)下的所有單板:./con f
47、igure -target-list二arm-softmmu -audio-drv-list=編譯和安裝:makemake in stall測試qemu和核能否運行成功qemu已經(jīng)安裝好了,核也編譯成功了,至U這里最好是測試一下,編譯出來 的核是否0K,或者qemu對vexpress單板支持是否夠友好。運行命令很簡單:qemu-system-arm -M vexpress-a9 -m 512M -kernel/home/iva n/kernel_git/li nu x/arch/arm/boot/zImage -no graphic -appe nd"con sole二ttyAMA0
48、"如果看到核啟動過程中的打印,說明前的搭建是成功的。這里簡單介紹下qemu命令的參數(shù):-M vexpress-a9 模擬vexpress-a9單板,你可以使用-M ?參數(shù)來獲取該 qemu版本支持的所有單板-m 512M單板運行物理存512M-kernel /home/iva n/kernel_git/li nu x/arch/arm/boot/zlmage告訴qemu單板運行核鏡像路徑-n ographic不使用圖形化界面,只使用串口-append "console二ttyAMAO"核啟動參數(shù),這里告訴核 vexpress單板運行,串口設(shè)備是哪個tty。我每次搭建,都忘了核啟動參數(shù)中的console二參數(shù)應(yīng)該填上哪個tty,因為不同單板串口驅(qū)動類型不盡相同,創(chuàng)建的 tty設(shè)備名當然也是不相同的。那 vexpress單板的tty設(shè)備名是哪個呢?其實這個值可以從生成的.config文件CONFIG_CONSOLE 宏找到。如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國足爽祛臭劑數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國聚異氰酸酯膠數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國啪紐布帶數(shù)據(jù)監(jiān)測研究報告
- 2025年中國工業(yè)防爆型高壓清洗機市場調(diào)查研究報告
- BTF公司訂單準時交貨率提升策略研究
- 前置行政規(guī)范違反認定犯罪過失問題研究
- 2025年度個人短期擔(dān)保借款合同范本(十八)
- 二零二五美容院美容院加盟店經(jīng)營管理指導(dǎo)合同3篇
- 2025年度住宅小區(qū)電梯智能化升級改造服務(wù)合同4篇
- 二零二五年度產(chǎn)業(yè)園區(qū)廠房租賃與人才引進服務(wù)合同3篇
- 衛(wèi)生服務(wù)個人基本信息表
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年湖北省知名中小學(xué)教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- 燃氣行業(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識點
- 通用電子嘉賓禮薄
- 赤峰市海業(yè)礦產(chǎn)有限責(zé)任公司福合元礦區(qū)銅鉬礦2022年度礦山地質(zhì)環(huán)境治理與土地復(fù)墾方案
- 充電站監(jiān)理規(guī)劃
評論
0/150
提交評論