之前详细搭建过程应该是烂尾了,后面有些许的具体具体步骤没有来得及记录。建议读者,可直接使用本文所搭建好的环境。

下面将分别介绍QEMU搭建好的两种开发环境:

1、QEMU仿真的MINI2440开发板开发环境
2、QEMU仿真的Vexpress V9开发板开发环境

所有的命令尽量在root模式下进行!!!


一、QEMU在Xubuntu仿真Mini2440 使用方法

交叉编译工具链:arm-linux-gcc-4.3.2
linux内核:2.6.32

下载搭建好的环境可到网盘下载,<传送门>提取码:fn9q

【虚拟机版本是15.5.0 build-14665864,一并上传云盘】

1、下载并安装虚拟机、解压Xubuntu镜像到合适的目录

2、开启虚拟机并打开镜像文件,其中若提示是否移动虚拟机的对话框,选择“我已复制该虚拟机”类似的选项。【开机密码:111111】

3、启动后,可以看到如下界面(终端已进入root模式,终端密码:111111)

QEMU定制android虚拟机 qemu虚拟机教程_开发板

接下来可按照虚拟机桌面文档详细操作,或者按照本文继续操作。

【切记】:
①、终端要最小化,并放到屏幕右下角
②、要进入root模式操作。
否则会发生不可预知的错误!!!

4、在终端输入cd /opt/micro2440/mini2440

QEMU定制android虚拟机 qemu虚拟机教程_开发板_02

5、输入./mini2440_start.sh

QEMU定制android虚拟机 qemu虚拟机教程_交叉编译_03

6、在终端继续输入如下内容

set bootargs noinitrd root=/dev/nfs rw nfsroot=10.0.0.1:/opt/root_qtopia ip=10.0.0.10:10.0.0.1::255.255.255.0 console=ttySAC0,115200 mini2440=1tb

QEMU定制android虚拟机 qemu虚拟机教程_QEMU定制android虚拟机_04

7、输入bootm,即可运行成功。

QEMU定制android虚拟机 qemu虚拟机教程_QEMU定制android虚拟机_05

8、按下ctrl+shift+t打开另一个终端,输入ping 10.0.0.10测试板子和虚拟机之间的通信。

QEMU定制android虚拟机 qemu虚拟机教程_交叉编译_06

【输入ctrl+c结束ping】

9、ping通之后,输入telnet 10.0.0.10登录到虚拟的开发板上,当出现FriendlyARM login:输入root

QEMU定制android虚拟机 qemu虚拟机教程_linux_07

10、虚拟开发板运行hello world

再开启一个终端,进入宿主机(虚拟机)的/opt/micro2440/code/app目录下,可以看到有一个main.c

QEMU定制android虚拟机 qemu虚拟机教程_交叉编译_08

输入arm-linux-gcc main.c,进行交叉编译main.c,并生成a.out的ARM可执行文件。

QEMU定制android虚拟机 qemu虚拟机教程_开发板_09

显然这个可执行文件在我们的虚拟机,即×86架构上是不能运行的。

QEMU定制android虚拟机 qemu虚拟机教程_QEMU定制android虚拟机_10

读者若有兴趣,可尝试使用gcc main.c生成a.out文件,看看是否可以在虚拟机上运行。

但是当我们把它放到虚拟开发板上时,便可以运行。将a.out拷贝到根文件系统目录下,即cp a.out /opt/root_qtopia/work/

QEMU定制android虚拟机 qemu虚拟机教程_开发板_11

回到telnet登录开发板的终端界面,并进入work目录,即cd work,发现a.out确实拷贝过来了。

QEMU定制android虚拟机 qemu虚拟机教程_QEMU定制android虚拟机_12

然后输入./a.out,可以看到输出了结果!

QEMU定制android虚拟机 qemu虚拟机教程_linux_13

说明了我们的环境搭建移植是成功的。

二、QEMU在Xubuntu仿真VexpressV9 使用方法

大体跟Mini2440类似,主要是文件所在目录的差异,下面一并详细列出

1、同前所述,正确下载并打开镜像。开机密码是123456,ROOT密码123456

2、输入cd /home/tftpboot

3、输入sudo ./boot-nfs.sh即可运行!

QEMU定制android虚拟机 qemu虚拟机教程_linux_14

4、虚拟开发板运行输出hello world

打开另一个终端,进入/home/tftpboot/code/app,然后输入arm-linux-gnueabi-gcc main.c交叉编译生成a.out文件,随后输入cp a.out /home/nfs/work,将生成的a.out文件拷贝到文件系统中的work文件夹。

然后在虚拟开发板所在终端输入,cd work,随后输入./a.out即可看到输出结果!