QEMU模拟Cortex-A9运行U-boot和LinuxV0.2.0_第1页
QEMU模拟Cortex-A9运行U-boot和LinuxV0.2.0_第2页
QEMU模拟Cortex-A9运行U-boot和LinuxV0.2.0_第3页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QEMU 模拟 Cortex-A9 运行 U-boot 和 LinuxQEMU模拟Cortex-A9运行U-boot和Linux错误!未定义书签。1. 实验目的2.2. 实验要求2.3. 实验原理2.4. 实验步骤4.4.1 VMware 虚拟机中安装 Ubuntu4.4.2安装QEMU模拟器.4.4.3编译并运行U-boot5.4.4 编译并运行 Linux7.4.5在目标机(Linux系统)中运行应用程序 1.0思考题13.1. 实验目的1)熟练使用Linux操作系统;2)认识一种新的核模拟器 QEMU3)掌握嵌入式Linux系统的开发流程;2. 实验要求1)在PC机上安装 VMware虚

2、拟机,并在 VMware中安装Linux操作系统(Ubuntu 12.04 );2)在Ubuntu中安装QEMU3)编译U-boot,并在QEM上运行;4)编译Linux核,并使用Busybox制作根文件系统;5)在QEM上运行Linux操作系统;6)在该Linux系统上运行应用程序。3. 实验原理1)VMware Workstation虚拟机是可以在 Windows/Linux系统上运行的应用程序,它可 以模拟基于x86的标准PC环境。这个环境和真实的计算机一样,都有芯片组、 CPU、存、 显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、 USB控制器、SCSI控制器等设备。与 多启动”系统

3、相比,VMWare采用了完全不同的概念,多启动系统在一个时刻只能运行一 个系统,在系统切换时需要重新启动机器。而VMWare虚拟机软件是一个 虚拟PC”软件,它可以使你在一台机器上同时运行多个 Windows、DOS、LINUX系统,并且在系统切换时 不需要重启计算机。在使用上,这台虚拟机和真正的物理主机几乎没有区别,都需要分区、格式化、安装操 作系统、安装应用程序和软件,总之,一切操作都跟一台真正的计算机一样。2)QEMU模拟器:QEMU是一个面向完整PC系统的开源仿真器。除了可以仿真处理 器之外,QEMU还可以仿真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称

4、多处理系统(多达255个CPU)和对其他处理器架构(如ARM和 PowerPC)的仿真。QEMU有两种运行模式:* User mode模拟模式,亦称作使用者模式。QEMU能启动那些为不同中央处理器编译 的Linux程序。* System mode模拟模式,亦称作系统模式。QEMU能模拟整个电脑系统,包括中央处 理器及其他周边设备。它使得对跨平台编写的程序进行测试及调试变得容易。其亦能用来在 一部主机上虚拟多部不同的系统。3)嵌入式Linux系统的结构嵌入式Linux系统从软件的角度看通常可以分为 4个层次: 引导加载程序Bootloader。 核。完成对硬件设备的控制,Linux核的主要模块分

5、为以下几个部分:存储管理、 CPU和进程管理、文件系统、设备管理和驱动、网络通信、以及系统的初始化(引导)、 系统调用等。 文件系统。它提供了用于管理系统的各种配置文件,以及为系统执行用户应用程序 提供了良好的运行环境。 用户应用程序。根据不同的用户需求而编写的程序4) QEMU与宿主机之间的通信机制:QEMU提供了四种网络通信模式:TAP、user、Sockets和VDE。利用user模式可以实现虚拟机和宿主机之间的通信且较为简单易行,在这种通信模式中,虚拟机处于10.02*网段,该网段通过一个NAT服务器与外界通信,NAT服务器的 地址是,虚拟机的IP地址从开始分配4. 实验步骤4.1 V

6、Mware虚拟机中安装Ubuntu(1) 自行下载ubuntu12.04的.iso系统镜像,并在 VMware中安装。(2) Ubuntu安装完成后,设置root密码,以便后期编译时获取root权限。(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中在该目录下解压:在当前目录下会产生一个 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结果如下: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 |结果会在u-boot-2012.04文件夹下生成u-boot.bin等文件,如下图所示:_卜hp协em* rrashNetworkBrowse Net.> LB- I* Mil由 IMakeFRernktonfig* Ci#初* ,README*fhfrlirj;es.rnkmitLbootSys tern.mapAkrbootJdsu-bootmdpUUj-booLsrec(3) 然后在终端中执行下面的命令,来启动 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结果如下图: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()函数里检测Flash失败后调用了 hang(),暂时先把hang()去掉就可以运行下去了。正常的运行 结果如下: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) 制作根目录系统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)使用静态编译 make,会在目录中产

26、生in stall文件, make inatall ,会在目录中生成文件夹 _install,2. 制作根文件系统目录mkdir rootfscd rootfs(1) 建立目录结构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) 设备文件/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负责自动生成设备节点,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/其他特殊要求的设备文件,同样道理即可.(7) 修改启动配置vi etc/i nit.d/rcS增加mount -n -t proc none /procmount -n -t sysfs none /sysmdev -s这句很重要,生成所有的设备节点如果用nfs的话,有了以上目录就可以了3.根文件系统镜像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中就有了文件系统镜像了,ext3格式.(3)QEMU运行Linux系统qemu-system-arm -M vexpress-a9 -m 256M -kernel运行结果如下:是放置核镜像的路径。H&fc 3D FT*沪山jldJiPBKK 増上血 嚼沁# 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系统)中运行应用程序用户应用程序在目标机上运行有两种方法: 将编译后的可执行文件放入到根文件系统中,在做成根文件系统的镜像后,由核调用 并执行。 使用NFS (网络文件系统)在本地机和目标机之间建立通信。1

32、)QEMU与Ubuntu之间的通信1. 首先在 Ubu ntu 上安装 NFS 网络文件系统 apt-get in stall n fs-kernel-server2. 在NFS服务的配置文件/etc/exports中添加:/ *(rw ,no_roo t_squash,i nsecure)3. 关闭Ubuntu的网关,避免连接不上:在/etc/resolv.conf中全部注释掉,不要 DNS服务器地址。4. 在宿主机Ubuntu中开启NFS服务:/etc/i nit.d/nfs-kernel-server start5. 再次启动Qemu,在最后面添加如下命令-net user -net n

33、ic 6. 最后,在目标机中配置网络、挂载NFS文件系统、切换根文件系统:这样就可将的主机的文件系统挂载到/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目录下所挂载的本地机的文件系统,图(二)是本地机的文件系统,比较以上两图可知,本地机上的文件系统在目标机上挂载成功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生成可执行文件; 将可执行文件在目标机上运行。思考题1、QEMU运行的Linux系统中是否需要安装 gcc。2、 在本地机(Ubuntu)编译应用程序时,是使用 gcc还是arm-linux-gcc?为什么?3、如何将可执行文件在系统开机后自启动?4、QEMU运行的Linux系统是命令行模式,如何将它改成图形用户界面模式?从零使用 qemu 模拟器搭建 arm 运行环境为什么会有这篇文章早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没

41、有上层的 C/C+业务和数据库的开发经验,也没有底层的 核和驱动开发经验,到底路该如何走基于对Linux系统开发的理解和核的兴趣,认为选择Linux核开发更适合自己。于是到淘宝上买了块三星s3c2440(arm9)开发板,学起核开发。没有过多久,机缘巧合,正式加入了公司的核开发部。 就这样跟核和arm打上交道了。没有想到这一做就是3年了,arm芯片只有在公司才能使用,回到家里就不 能访问了。去年(2014 )开始觉得做核久了,应该向核社区提交patch,提升知名度和影响力。但在公司提交 patch不方便,于是在家里通过 qemu方式搭建于 ARM A9的运行环境,进行开发和 测试验证,一口气提

42、交了好几个 patch(link1 , link2 , link3 , link4 , link5 )并被社区接纳了。最近在梳理Linux存机制,无论是深入理解 Linux核还是深入理解核 架构这两本红宝书都无法告知你每个细节的时候,就需要查看代码细节,修改 代码,甚致做行为分析。此时需要修改代码输出调试信息,以帮助更深入体会代 码的逻辑。这该是qemu派上场的时候。其实我前前后后搭建qemu+arm 的运行环境已超过5次了,每次都要花上 很多时间。碰巧昨天有同事看到我再次搭建,他如搭珍宝,告诉我一定要将搭建 qemu的方法告诉他。所以,如果你想买个开发板来做 arm + linux 嵌入式开

43、发,完全可以使用 qemu进行开发。或者你像我一样,对核机制关心,而不关心于具体的外设器件, 最多是关心arm架构相关的功能,也可以使用 qemu进行开发。一句话:搭建qemu+arm 环境,用于做核开发和功能分析调试。搭建环境我整个搭建过程都是在笔记本上进行的,Ubuntu 12.04 系统;如果是Fodera 环境,搭建过程可能略有不同,但关键步骤是不变的。qemu模拟得最好的arm芯片,要数ARM公司的vexpress A9开发板了, 本文的搭建过程都是围绕这个开发板进行的。当然,如果你想搭其它开发板,也 不难,只要qemu和核对它有成熟的支持就够了。下面是step by step的搭建

44、过程,建议没有特别诉求的朋友,按照下在面的 步骤操作。或者先根据下面的步骤成功搭建vexpress运行环境之后,再根据自己的需求进行更改。下载Linux 核下载核有两种方法,一种是用Git直接下载核代码树,方便后面的核开发。另一种是直接到核社区下载对应版本的源码包。我采用第一种方法,但后面发现 主线上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的交叉编译工具链想必做嵌入式开发的朋友,对交叉编译工具链不陌生。如果你订制一个交叉 编译工具链,建议你使用crosstool-ng开源软件来构建。但在这里建议直接安装arm的交叉编译工具链:sudo apt-get in stall gcc-arm-li nu x-g nu eabi编译Linux核生成vexpress开发板子的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 , 后续qemu启动时需要使用 该镜像。下载和安装qemu模拟器其实Ubuntu 12.04 有qemu的安装包,但由于版本较低,对 vexpress开 发板支持不友好,建议下载高版本的qemu:配置qemu前,需要安装几个软件包:sudo apt-get install zlib1g-devsudo apt-get install libglib2.0-0sudo apt-get in stall libglib2.0-dev配置qemu ,支持模拟arm架构下的所有单板:./con f

47、igure -target-list二arm-softmmu -audio-drv-list=编译和安装:makemake in stall测试qemu和核能否运行成功qemu已经安装好了,核也编译成功了,至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命令的参数:-M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该 qemu版本支持的所有单板-m 512M单板运行物理存512M-kernel /home/iva n/kernel_git/li nu x/arch/arm/boot/zlmage告诉qemu单板运行核镜像路径-n ographic不使用图形化界面,只使用串口-append "console二ttyAMAO"核启动参数,这里告诉核 vexpress单板运行,串口设备是哪个tty。我每次搭建,都忘了核启动参数中的console二参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的 tty设备名当然也是不相同的。那 vexpress单板的tty设备名是哪个呢?其实这个值可以从生成的.config文件CONFIG_CONSOLE 宏找到。如果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论