QEMU模拟Mini2440开发板运行环境

前言

原创文章欢迎转载,请保留出处。
若有任何疑问建议,欢迎回复。
邮箱:Maxwell_nc@163.com

手头上只有一块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
  • 1
  • 2
  • 3
  • 4
  • 5

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

sudo apt-get install zlib1g-dev
sudo apt-get install libsdl-dev
 
 
  • 1
  • 2
  • 1
  • 2

安装完后,添加环境变量vi /etc/bash.bashrc 
添加一行export PATH=$PATH:$HOME/local/bin 
保存退出后,用source 生效或者注销重新登录,注意source只在当前终端有效,新开的均无效,然后使用qemu-system-arm --version测试是否正常,正常如下图所示:

测试qemu是否成功


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

首先下载buildroot的源代码,下载地址: 
http://buildroot.org/downloads/buildroot-2012.05.tar.gz 
(我使用这个版本2012.05)解压后,进入源代码目录中,make mini2440_defconfigmake menuconfig(可能出现的库问题用sudo apt-get install libncurses5-dev解决) 
出现如下画面: 
buildroot配置
其中以下需要修改,其他自己选择: 
- 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方便调试。 
GDB调试选项 
然后保存退出。 
接下来执行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
  • 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: 根文件系统源码打包

如下图所示: 
生成文件


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
  • 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,请全屏最大化终端,再次执行,这是由于分辨率问题造成)

Uboot模式

如上图启动后进入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
  • 1
  • 2
  • 3
  • 4
  • 5

启动后,输入默认密码root,即可成功登录,此时还没有配置网络。ifconfig发现没有网卡。 
qemu模拟arm成功 
如果你不需要网络功能,那么任务到此结束,你可以开始模拟2440的开发了。

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值