使用qemu 建立mini2440的模拟仿真环境

来源:互联网 发布:电脑顽固软件卸载 编辑:程序博客网 时间:2024/06/08 00:44
/****************************************************************************/ * *                  (c)    光明工作室  2017-2037  COPYRIGHT * *   光明工作室团队成员大部分来自全国著名985、211工程院校。具有丰富的工程实践经验, *本工作室热忱欢迎大家的光临。工作室长期承接嵌入式开发、PCB设计、算法仿真等软硬件设计。 * * *1)基于C8051、AVR、MSP430单片机开发。 *2)基于STM32F103、STM32F407等ARM处理器开发。(IIC、SPI、485、WIFI等相关设计) *3)基于C6678、DM388等DSP处理器开发。(视频、网络、通信协议相关设计) *4)基于QT、C#软件开发。 *5)基于OPENCV、OPENGL图像处理算法开发。(基于LINUX、WINDOWS、MATLAB等) *6)无人机飞控、地面站程序开发。(大疆、PIX、 qgroundcontrol、missionplanner、MAVLINK) *7) ROS机器人操作系统下相关开发。 *8)LINUX、UCOSII、VXWORKS操作系统开发。 * * *                                                 联系方式: *                                                 QQ:2468851091 call:18163325140 *                                                 Email:2468851091@qq.com *

/ ****************************************************************************/  

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

解压后,今日源代码的主目录中,

1
2
#  ./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-,保存退出,输入

1
2
#  make mini2440_config
#  make -j4

稍等两分钟,即在当前目录下生成名为 u-boot.bin 的文件,注意如果想在之后使用u-boot 的nfs下载文件功能,需要修改代码中的一部分,将net/nfs.c文件中的

NFS_TIMEOUT = 2UL 修改为 NFS_TIMEOUT = 20000UL 否则会造成nfs文件下载失败,如果不使用nfs下载功能,不改也可。

3. 下载 linux kernel for mini2440

(下载步骤略去)

进入源码目录

1
2
#  make mini2440_defconfig ARCH=arm
#make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

之后会在arch/arm/boot/目录下生成uImage 文件,将此文件复制到qemu目录下的mini2440文件夹下,并将mini2440文件夹中的mini2440_start.sh作如下修改

将 kernel 一行改为-kernel "$base/uImage" \,回到上层目录后运行

1
#  sh mini2440/mini2440_start.sh

这时应该看到qemu启动后进入了u-boot界面下,输入命令

1
#   bootm

就会看到linux内核启动的画面,但此时还没有根文件系统,我们稍候介绍采用nfs挂在根文件系统

4. 假设你用的操作系统为ubuntu,首先安装 nfs服务器

1
#  sudo apt-get install nfs-kernel-server

之后修改/etc/exports文件,添加如下一行

/home/username/nfs *(rw,sync,no_root_squash)

....................注意  /home/username/nfs 为你所要共享的目录

输入命令

1
#   sudo /etc/init.d/nfs-kernel-server restart

启动 nfs服务

测试 nfs服务是否成功启动

1
2
#  sudo mkdir /mnt/nfs
#  sudo mount -t nfs localhost:/home/username/nfs /mnt/nfs

查看/mnt/nfs文件是否于/home/username/nfs 中相同,若一样 ,OK

5. 将mini2440目录下的mini2440_start.sh修改为

1
2
3
4
5
6
7
#!/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, qemu-ifdown

qemu-ifup 脚本

1
2
3
#!/bin/sh
echo "Excuting qemu-ifup"
ifconfig $1 10.0.0.1

qemu-ifdown脚本

1
2
3
#!/bin/sh
echo "Close tap!"
sudo ifconfig $1 10.0.0.1 down

6. 当这些都配置好后,我们即可使用nfs根文件系统了

这里我们的根文件系统为 /home/username/nfs

在qemu的目录中输入

1
# ./mini2440/mini2440_start.sh

u-boot启动成功后输入设置linux kernel的引导参数

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环境在这仿真环境中跑起来,目前还没有成功,正在尝试中。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 白色皮鞋染了色怎么办 刺扎到手里拿不出来怎么办 军官证解锁片丢了怎么办 六安市人民医院药品停用了怎么办 信无法寄到该怎么办 5个月的宝宝光有屎沫怎么办 胸牌的别针坏了怎么办 工资表税金扣多了怎么办? 装修公司不发放工程怎么办 公司不给开收入证明怎么办 装修公司不付工人工资怎么办 收入证明少500元怎么办 dnf二级输错了怎么办 如果受到法律的伤害怎么办 86岁了还怕死怎么办 风衣的腰带丢了怎么办 成为伪娘身上的毛怎么办 军官升不上去了怎么办 王者荣耀代练封号怎么办 cf淘宝代练封号怎么办 买音乐会的票过期怎么办 十年多年前被怨错拘留了怎么办 与室友关系闹僵怎么办 开庭后被告威胁我们证人怎么办 开车撞了豪车怎么办 我把人撞了全责怎么办 开车撞伤人没钱赔怎么办 开车撞伤无证驾驶人怎么办 开车把人撞伤了只买交强险怎么办 开车撞伤人赔不起怎么办 如果车撞死人了怎么办 给车撞了跑了怎么办 开车把人撞死了怎么办 开车把人蹭了怎么办 驾照被扣54分怎么办? 驾照被扣了12分怎么办 驾驶证丢失后被扣分怎么办 驾照扣了三十分怎么办 一次被扣了12分怎么办 驾照被扣35分后怎么办 我驾驶证扣了6分怎么办