天天看点

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

QEMU模拟Mini2440开发板运行环境

2015年03月15日 19:37:09

阅读数:3816

前言

原创文章欢迎转载,请保留出处。
若有任何疑问建议,欢迎回复。
邮箱:[email protected]
           
  • 1
  • 2
  • 3
  • 4

手头上只有一块Smart210(Tiny210V2),无奈网上的资料多数是2440的资料,又不想再花钱买一块2440,后来发现qemu可以模拟arm,参考各种文章后成功模拟,留下博文作为笔记。

参考文章

本文主要参考 

http://bbs.51cto.com/thread-970787-1-1.html 

http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html 

http://blog.csdn.net/zeroboundary/article/details/12657215 

这三篇文章,虽然按照他们的做的出现了不少错误,但是非常感谢他们给出了路的方向,通过自己另外摸索成功了,在此和大家分享方法,如果你遇到问题也不妨再看看参考的网站或许会有意外的收获。

开发环境

虚拟机:VMware 10.0.3简体中文绿色版(含VMware Tools) 

操作系统:Ubuntu 10.04 32位 

不保证能在其他开发环境下正常实现本文最终结果,建议使用相同开发环境。另外本文不讨论如何搭建虚拟机Linux环境,一些库丢失问题请自行apt-get,另外我的所有终端操作均在超级用户下进行。 

安装VMware Tools后鼠标捕获有问题的试试

sudo apt-get install xserver-xorg-input-vmmouse

后重启虚拟机。

编译安装QEMU

首先下载qemu for mini2440,直接打包下载 

http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz 

解压后,进入源代码目录中,

./configure --target-list=arm-softmmu --prefix=$HOME/local 
(prefix指定安装路径,这里是/root/local)
make -j4
(同时允许4个任务,据网友所说设置成2倍CPU核心数更快)
make install 
           
  • 1
  • 2
  • 3
  • 4
  • 5

可能会出现的库问题解决:

sudo apt-get(或者用aptitude) install zlib1g-dev
sudo apt-get(或者用aptitude) install libsdl-dev
           
  • 1
  • 2

安装完后,添加环境变量

vi /etc/bash.bashrc

添加一行

export PATH=$PATH:$HOME/local/bin

保存退出后,用source 生效或者注销重新登录,注意source只在当前终端有效,新开的均无效,然后使用

qemu-system-arm --version

测试是否正常,正常如下图所示:

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

使用buildroot一键生成uboot和linux内核及根文件系统

首先下载buildroot的源代码,下载地址: 

http://buildroot.org/downloads/buildroot-2012.05.tar.gz 

(我使用这个版本2012.05)解压后,进入源代码目录中,

make mini2440_defconfig

make menuconfig

(可能出现的库问题用

sudo apt-get install libncurses5-dev

解决) 

出现如下画面: 

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

其中以下需要修改,其他自己选择: 

- Kernel :内核版本改选为 3.3.7版本 

- Package Selection for the target : Busybox已经包含在里面了,我们也可以选择更多的项目,比如 Qt, EFL, directfb之类的图形库。在 Graphic libraries and application子目录里选择。 

- Filesystem images :在 Flash Type这项,改为 NAND flash with 512B Page and 16 KB erasesize 。 

- Toolchain:我选上了GDB和GDBServer方便调试。 

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

然后保存退出。 

接下来执行

make

(注意这里不要加-j4之类参数,否则后面编译会出错),网上很多文章都对此过程轻描淡写,实际上这个过程会遇到一大堆问题。另外这个过程需要联网下载各种源码。

本人主要遇到的问题: 

1. 遇到automake出错,使用

apt-get install automake

后重新

make

解决。 

2. make不能加-j4参数,否则会中途报错停止编译退出。 

3. 中途编译QT会问你选择商业版还是开源版,选择O后输入yes同意条款编译开源版。 

4. 库问题,会遇到一大堆,本人总结一个列表。

apt-get install g++   
apt-get install g++
apt-get install bison
apt-get install flex
apt-get install gettext
apt-get install texinfo
apt-get install patch
apt-get install git-core
apt-get install xz-utils
apt-get install automake
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果一切顺利, make 结束后,在 buildroot-2012.05目录的 output/images/ 子目录下可以找到生成的四个文件: 

u-boot.bin: bootloader的镜像 

uImage: u-boot格式的(用mkimage命令生成的)Linux内核镜像 

rootfs.jffs2: jffs2格式的根文件系统镜像 

rootfs.tar: 根文件系统源码打包

如下图所示: 

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

Flashimg制作nand.bin并启动系统

这里参考上文给出的参考网站里的使用flashimg制作nand.bin 

具体方法为: 

下载flashimg源码 

git clone git://gitorious.org/flashimg/flashimg.git

解压后,进入flashimg源码目录后:

./autogen.sh (要求autoconf版本大于2.67)
./configure 
make 
sudo make install 
           
  • 1
  • 2
  • 3
  • 4

然后把我们生成的三个文件 : u-boot.bin, uImage和rootfs.jffs2 拷贝到 flashimg文件夹下运行 

./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512

即可生成nand.bin。启动方法为: 

qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse

(若出现错误:浮点数例外启动不了qemu,请全屏最大化终端,再次执行,这是由于分辨率问题造成)

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

如上图启动后进入uboot模式,此时的qemu还不能显示图形界面,输入下面指令加载内核和根文件系统。

/*注意这里的“MINI2440 #”是提示符,不用输入。*/
MINI2440 # nboot kernel 
MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 
MINI2440 # saveenv 
MINI2440 # bootm 
           
  • 1
  • 2
  • 3
  • 4
  • 5

启动后,输入默认密码root,即可成功登录,此时还没有配置网络。

ifconfig

发现没有网卡。 

QEMU模拟Mini2440开发板运行环境 QEMU模拟Mini2440开发板运行环境

如果你不需要网络功能,那么任务到此结束,你可以开始模拟2440的开发了。

如果你需要nfs和主机通讯,那得稍微期待下,我将会在下次发表采用的是挂在NFS根文件系统的方法,我们将不需要使用buildroot的根文件系统,而采用友善之臂提供的带Qtopia的根文件系统(请到mini2440附带的光盘找到rootfs_qtopia_qt4-20140103.tar.gz或者网上下载一份)你也可以使用buildroot生成的根文件系统,甚至可以用busybox自己制作一个,敬请期待,另外在此感谢参考文章的作者们。

继续阅读