QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx

上传人:b****2 文档编号:14109481 上传时间:2022-10-18 格式:DOCX 页数:17 大小:912.11KB
下载 相关 举报
QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx_第1页
第1页 / 共17页
QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx_第2页
第2页 / 共17页
QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx_第3页
第3页 / 共17页
QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx_第4页
第4页 / 共17页
QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx

《QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx》由会员分享,可在线阅读,更多相关《QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

QEMU模拟CortexA9运行Uboot和LinuxV020互联网+Word格式.docx

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-gnueabi

sudoapt-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下到 

ftp:

//ftp.denx.de/pub/u-boot/下载最新版本的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?

=arm

CROSS_COMPILE?

=arm-linux-gnueabi-

(2)进入到u-boot-2012.04文件夹下,终端输入命令:

makeca9x4_ct_vxp_config

make

结果如下:

结果会在u-boot-2012.04文件夹下生成u-boot.bin等文件,如下图所示:

(3)然后在终端中执行下面的命令,来启动U-boot

qemu-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)到http:

//www.kernel.org/下载最新的Linux内核源码,(参考linux-3.4.4.tar.bz2),解压后得到文件夹linux-3.4.4,修改Makefile,修改的位置如下图:

修改如下

ARCH=arm

CROSS_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中修改

makemenuconfig进行配置

在BusyboxSetting--->

BuildOpdions-->

选择[]BuildBusyBoxasastaticbinary(nosharedlibs)使用静态编译

make,会在目录中产生install文件,

makeinatall,会在目录中生成文件夹_install,

2.制作根文件系统目录

mkdirrootfs

cdrootfs 

(1)建立目录结构

mkdirbinetcdevlibproctmproothomesysusrsbinvarmnt

(2)运行库-来自工具链

cp-a/usr/arm-linux-gnueabi/lib/*lib

(3)配置文件-来自busybox

cp-a<

busybox_dir>

/examples/bootfloppy/etc/*etc

(4)busybox工具集

/_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.conf

controlC[0-9]0:

00660=snd/

pcm.*0:

seq.*0:

mix.*0:

timer0:

其他特殊要求的设备文件,同样道理即可. 

(7)修改启动配置

vietc/init.d/rcS

增加

mount-n-tprocnone/proc 

mount-n-tsysfsnone/sys 

mdev-s这句很重要,生成所有的设备节点

如果用nfs的话,有了以上目录就可以了 

3.根文件系统镜像

ddif=/dev/zeroof=rootfs.imgbs=1Mcount=64#32M的镜像

mkfs.ext3rootfs.img

mkdirtmpfs

sudomount-olooprootfs.imgtmpfs

sudocp-arootfs/*tmpfs/

sudoumounttmpfs

rootfs.img中就有了文件系统镜像了,ext3格式. 

(3)QEMU运行Linux系统

qemu-system-arm-Mvexpress-a9-m256M-kernel/home/syl/linux-3.4.4/arch/arm/boot/zImage-append"

root=/dev/mmcblk0console=tty0init=/linuxrc"

-sdrootfs.img

运行结果如下:

/home/syl/linux-3.4.4/arch/arm/boot/是放置内核镜像的路径。

4.5在目标机(Linux系统)中运行应用程序

用户应用程序在目标机上运行有两种方法:

将编译后的可执行文件放入到根文件系统中,在做成根文件系统的镜像后,由内核调用并执行。

使用NFS(网络文件系统)在本地机和目标机之间建立通信。

1)QEMU与Ubuntu之间的通信

1.首先在Ubuntu上安装NFS网络文件系统apt-getinstallnfs-kernel-server

2.在NFS服务的配置文件/etc/exports中添加:

*(rw,no_root_squash,insecure)

3.关闭Ubuntu的网关,避免连接不上:

在/etc/resolv.conf中全部注释掉,不要DNS服务器地址。

4.在宿主机Ubuntu中开启NFS服务:

/etc/init.d/nfs-kernel-serverstart

5.再次启动Qemu,在最后面添加如下命令

-netuser-netnic–s

6.最后,在目标机中配置网络、挂载NFS文件系统、切换根文件系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1