您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > QEMU模拟Cortex-A9运行U-boot和LinuxV0.2.0
QEMU模拟Cortex-A9运行U-boot和LinuxQEMU模拟Cortex-A9运行U-boot和Linux.........................................错误!未定义书签。1.实验目的...............................................................................................................................22.实验要求...............................................................................................................................23.实验原理...............................................................................................................................24.实验步骤...............................................................................................................................34.1VMware虚拟机中安装Ubuntu..................................................................................34.2安装QEMU模拟器....................................................................................................44.3编译并运行U-boot.....................................................................................................44.4编译并运行Linux.......................................................................................................64.5在目标机(Linux系统)中运行应用程序.............................................................10思考题......................................................................................................................................121.实验目的1)熟练使用Linux操作系统;2)认识一种新的内核模拟器QEMU;3)掌握嵌入式Linux系统的开发流程;2.实验要求1)在PC机上安装VMware虚拟机,并在VMware中安装Linux操作系统(Ubuntu12.04);2)在Ubuntu中安装QEMU;3)编译U-boot,并在QEMU上运行;4)编译Linux内核,并使用Busybox制作根文件系统;5)在QEMU上运行Linux操作系统;6)在该Linux系统上运行应用程序。3.实验原理1)VMwareWorkstation虚拟机是可以在Windows/Linux系统上运行的应用程序,它可以模拟基于x86的标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器、SCSI控制器等设备。与“多启动”系统相比,VMWare采用了完全不同的概念,多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。而VMWare虚拟机软件是一个“虚拟PC”软件,它可以使你在一台机器上同时运行多个Windows、DOS、LINUX系统,并且在系统切换时不需要重启计算机。在使用上,这台虚拟机和真正的物理主机几乎没有区别,都需要分区、格式化、安装操作系统、安装应用程序和软件,总之,一切操作都跟一台真正的计算机一样。2)QEMU模拟器:QEMU是一个面向完整PC系统的开源仿真器。除了可以仿真处理器之外,QEMU还可以仿真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称多处理系统(多达255个CPU))和对其他处理器架构(如ARM和PowerPC)的仿真。QEMU有两种运行模式:*Usermode模拟模式,亦称作使用者模式。QEMU能启动那些为不同中央处理器编译的Linux程序。*Systemmode模拟模式,亦称作系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得对跨平台编写的程序进行测试及调试变得容易。其亦能用来在一部主机上虚拟多部不同的系统。3)嵌入式Linux系统的结构嵌入式Linux系统从软件的角度看通常可以分为4个层次:①引导加载程序Bootloader。②内核。完成对硬件设备的控制,Linux内核的主要模块分为以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、以及系统的初始化(引导)、系统调用等。③文件系统。它提供了用于管理系统的各种配置文件,以及为系统执行用户应用程序提供了良好的运行环境。④用户应用程序。根据不同的用户需求而编写的程序。4)QEMU与宿主机之间的通信机制:QEMU提供了四种网络通信模式:TAP、user、Sockets和VDE。利用user模式可以实现虚拟机和宿主机之间的通信且较为简单易行,在这种通信模式中,虚拟机处于10.0.2.*网段,该网段通过一个NAT服务器与外界通信,NAT服务器的地址是10.0.2.2,虚拟机的IP地址从10.0.2.15开始分配。4.实验步骤4.1VMware虚拟机中安装Ubuntu(1)自行下载ubuntu12.04的.iso系统镜像,并在VMware中安装。(2)Ubuntu安装完成后,设置root密码,以便后期编译时获取root权限。(3)终端sudoapt-getupdate完成更新。(4)安装GNU的交叉编译工具链。sudoapt-getinstallgcc-arm-linux-gnueabisudoapt-getinstallg++-arm-linux-gnueabi安装完成后会在/usr/arm-linux-gnueabi/目录下生成库文件、头文件等。4.2安装QEMU模拟器sudoapt-getinstallqemuqemu-systemqemu-utils然后在终端中运行qemu-system-arm--version会显示如下QEMU的版本信息:4.3编译并运行U-boot(1)在windows下到下载最新版本的U-Boot源代码,(参考版本u-boot-2012.04.tar.bz2),下载完后将其放入ubuntu中在该目录下解压:tarjxvfu-boot-2012.04.tar.bz2,在当前目录下会产生一个u-boot-12.04的文件夹:进入到u-boot-2012.04目录下,修改其中的Makefile,添加两行(可放在文档的开头),ARCH?=armCROSS_COMPILE?=arm-linux-gnueabi-(2)进入到u-boot-2012.04文件夹下,终端输入命令:makeca9x4_ct_vxp_configmake结果如下:结果会在u-boot-2012.04文件夹下生成u-boot.bin等文件,如下图所示:(3)然后在终端中执行下面的命令,来启动U-bootqemu-system-arm-Mvexpress-a9-m256M-nographic-kernelu-boot或者qemu-system-arm-Mvexpress-a9-m256M-serialstdio-kernelu-boot结果如下图:此时是检测Flashfailed后停止运行,是因为在arch/arm/lib/board.c里面board_init_r()函数里检测Flash失败后调用了hang(),暂时先把hang()去掉就可以运行下去了。正常的运行结果如下:4.4编译并运行Linux(1)到下载最新的Linux内核源码,(参考linux-3.4.4.tar.bz2),解压后得到文件夹linux-3.4.4,修改Makefile,修改的位置如下图:修改如下ARCH=armCROSS_COMPILE=arm-linux-gnueabi-在linux-3.4.4目录下makevexpress_defconfig然后makemenuconfig--SystemType把EnabletheL2x0outercachecontroller取消,否则Qemu会起不来。然后make,会在arch/arm/boot/目录下生成zImage内核映像文件,这就是我们需要的内核映像。(2)制作根目录系统。1.编译busybox①下载busybox源码:解压,还是在busybox-1.21.0目录下的Makefile中修改ARCH=armCROSS_COMPILE=arm-linux-gnueabi-②makemenuconfig进行配置在BusyboxSetting---BuildOpdions--选择[]BuildBusyBoxasastaticbinary(nosharedlibs)使用静态编译③make,会在目录中产生install文件,④makeinatall,会在目录中生成文件夹_install,2.制作根文件系统目录mkdirrootfscdrootfs(1)建立目录结构mkdirbinetcdevlibproctmproothomesysusrsbinvarmnt(2)运行库-来自工具链cp-a/usr/arm-linux-gnueabi/lib/*lib(3)配置文件-来自busyboxcp-abusybox_dir/examples/bootfloppy/etc/*etc(4)busybox工具集cp-abusybox_dir/_install/*.(5)设备文件udocp-a/dev/console/dev/loop0/dev/loop1/dev/null/dev/ram0/dev/tty/dev/tty0/dev/tty1/dev/zerodev(6)修改mdev配置,mdev负责自动生成设备节点,mdev.conf是配置文件vimetc/mdev.confcontrolC[0-9]0:00660=snd/pcm.*0:00660=snd/seq.*0:00660=snd/mix.*0:00660=snd/timer0:00660=snd/其他特殊要求的设备文件,同样道理即可.(7)修改启动配置vietc/init.d/rcS增加mount-n-tprocnone/procmount-n-tsysfsnone/sysmdev-s这句很重要,生成所有的设备节点如果用nfs的话,有了以上目录就可以了3.根文件系统镜像ddif=/dev/zeroof=rootfs.imgbs=1Mcount=64#32M的镜像mkfs.ext3rootfs.imgmkdirtmpfssudomount-olooprootfs.imgtm
本文标题:QEMU模拟Cortex-A9运行U-boot和LinuxV0.2.0
链接地址:https://www.777doc.com/doc-6255177 .html