http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html 《使用qemu 建立mini2440的模拟仿真环境》
http://www.arm9home.net/read.php?tid-15861.html 《使用qemu 建立mini2440的模拟仿真环境》
http://www.arm9home.net/read.php?tid-15864.html 《使用qemu 建立mini2440的模拟仿真环境》补充修正说明
Using QEMU for Embedded Systems Developmen :
http://www.linuxforu.com/2011/06/qemu-for-embedded-systems-development-part-1/
http://www.linuxforu.com/2011/07/qemu-for-embedded-systems-development-part-2/
http://www.linuxforu.com/2011/07/qemu-for-embedded-systems-development-part-3/
0. 安装常用函数库
# sudo apt-get install libsdl-dev # sudo apt-get install zlib1g-dev
The error log from compiling the libSDL test is: /tmp/qemu-conf--3170-.c:1:17: fatal error: SDL.h: 没有那个文件或目录 compilation terminated. ERROR: QEMU requires SDL or Cocoa for graphical output To build QEMU without graphical output configure with --disable-gfx-check Note that this will disable all output from the virtual graphics card except through VNC or curses.
1. 首先下载qemu for mini2440
git clone git://repo.or.cz/qemu/mini2440.git qemu
http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz
解压后,今日源代码的主目录中,
# ./configure --target-list=arm-softmmu # make -j4
2. 下载u-boot for mini2440
git clone git://repo.or.cz/w/u-boot-openmoko/mini2440.git uboot
http://repo.or.cz/w/u-boot-openmoko/mini2440.git/snapshot/HEAD.tar.gz
(注意 采用打包下载的时候这几个包的文件名可能相同,注意区分)解压后,配置Makefile文件,打开Makefile文件,CROSS_COMPILE变量赋值,即自己所使用的交叉编译工具链,比如我的是arm-none-linux-gnueabi-,保存退出,输入
# make mini2440_config # make -j4
NFS_TIMEOUT = 2UL 修改为 NFS_TIMEOUT = 20000UL 否则会造成nfs文件下载失败,如果不使用nfs下载功能,不改也可。
3. 下载 linux kernel for mini2440
(下载步骤略去)
进入源码目录
# make mini2440_defconfig ARCH=arm # make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
将 kernel 一行改为-kernel "$base/uImage" \,回到上层目录后运行
# sh mini2440/mini2440_start.sh
# bootm
4. 假设你用的操作系统为ubuntu,首先安装 nfs服务器
# sudo apt-get install nfs-kernel-server
/home/username/nfs *(rw,sync,no_root_squash)
....................注意 /home/username/nfs 为你所要共享的目录
输入命令
# sudo /etc/init.d/nfs-kernel-server restart
测试 nfs服务是否成功启动
# sudo mkdir /mnt/nfs # sudo mount -t nfs localhost:/home/username/nfs /mnt/nfs
5. 将mini2440目录下的mini2440_start.sh修改为
#!/bin/sh sudo ../arm-softmmu/qemu-system-arm \ -M mini2440 \ -kernel mini2440/uImage -serial stdio \ -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=./qemu-ifup,downscript=./qemu-ifdown \ -show-cursor \ -usb -usbdevice keyboard -usbdevice mouse\
qemu-ifup 脚本
#!/bin/sh echo"Excuting qemu-ifup" ifconfig $1 10.0.0.1
#!/bin/sh echo"Close tap!" sudo ifconfig $1 10.0.0.1 down
这里我们的根文件系统为 /home/username/nfs
在qemu的目录中输入
# ./mini2440/mini2440_start.sh
# set bootargs noinitrd root=/dev/nfs rw nfsroot=10.0.0.1:/home/lizhao/ARM-pro/nfs/rootfs ip=10.0.0.10:10.0.0.1::255.255.255.0 console=ttySAC0,115200
# bootm
OK ! kernel就开始加载了,文件系统挂在成功后,就可以进行各种仿真工作了,下面是我挂载的由友善之臂提供的mini2440的qtopia文件系统的截图:
友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容清空即可。Enjoy yourself!
目前,我打算让GPE环境在这仿真环境中跑起来,目前还没有成功,正在尝试中。