您的位置:首页 > 其它

QEMU模拟Mini2440开发板运行环境

2015-03-15 19:37 507 查看

前言

原创文章欢迎转载,请保留出处。
若有任何疑问建议,欢迎回复。
邮箱: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


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

sudo apt-get install zlib1g-dev
sudo apt-get install libsdl-dev


安装完后,添加环境变量
vi /etc/bash.bashrc


添加一行
export PATH=$PATH:$HOME/local/bin


保存退出后,用source 生效或者注销重新登录,注意source只在当前终端有效,新开的均无效,然后使用
qemu-system-arm --version
测试是否正常,正常如下图所示:



使用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
解决)

出现如下画面:




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

- 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方便调试。




然后保存退出。

接下来执行
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


如果一切顺利, 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


然后把我们生成的三个文件 : 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模式,此时的qemu还不能显示图形界面,输入下面指令加载内核和根文件系统。

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


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




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

如果你需要nfs和主机通讯,那得稍微期待下,我将会在下次发表采用的是挂在NFS根文件系统的方法,我们将不需要使用buildroot的根文件系统,而采用友善之臂提供的带Qtopia的根文件系统(请到mini2440附带的光盘找到rootfs_qtopia_qt4-20140103.tar.gz或者网上下载一份)你也可以使用buildroot生成的根文件系统,甚至可以用busybox自己***一个,敬请期待,另外在此感谢参考文章的作者们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: