使用QEMU建立Mini2440的模拟环境
使用qemu 建立mini2440的模拟仿真环境 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 # ./configure --target-list=arm-softmmu 2 # 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 # make mini2440_config 2 # make -j4 稍等两分钟,即在当前目录下生成名为 u-boot.bin 的文件,注意如果想在之后使用u-boot 的nfs下载文件功能,需要修改代码中的一部分,将net/nfs.c文件中的NFS_TIMEOUT = 2UL 修改为 NFS_TIMEOUT = 20000UL 否则会造成nfs文件下载失败,如果不使用nfs下载功能,不改也可。
然后将u-boot.bin文件拷贝到qemu-mini2440/mini2440文件夹下。
3. 下载 linux kernel for mini2440(可以使用原mini2440开发板的内核源代码) (下载步骤略去) 进入源码目录 1 # make mini2440_defconfig ARCH=arm 2 #make uImage 之后会在arch/arm/boot/目录下生成uImage 文件,将此文件复制到qemu目录下的mini2440文件夹下,并将mini2440文件夹中的mini2440_start.sh作如下修改 将 kernel 一行改为-kernel \回到上层目录后运行 1 # sh mini2440/mini2440_start.sh 错误解决: 一、
1.如果在编译QEMU时没有安装,即 make install,那么需要打开mini2440/mini2440_start.sh,将第16行的 qemu-img 改为:$base/../qemu-img
2.如果编译时安装了QEMU,即有make install,不管这一步骤。 二、
期待的画面并没有出来,取而代之的是:
/etc/qemu-ifup:could not launch network script
Could not initialize device 'tap'
该错误一般是运行权限错误,使用根用户运行。 三、
使用根用户运行,依旧是:/etc/qemu-ifup:could not launch network script ……。 对qemu中的net.c在代码进行修改:
static int launch_script(const char *setup_script, const char *ifname, int fd) {
int pid, status;
char *args[4]; /* bacon modified */ char **parg;
/* try to launch network script */ pid = fork(); if (pid >= 0) {
if (pid == 0) {
char path[20];/* bacon add */
int open_max = sysconf (_SC_OPEN_MAX), i; for (i = 0; i < open_max; i++) if (i != STDIN_FILENO && i != STDOUT_FILENO && i != STDERR_FILENO && i != fd) close(i); parg = args;
strcpy(path, \ *parg++ = (char *)path; /*bacon add*/ *parg++ = (char *)setup_script; *parg++ = (char *)ifname; *parg++ = NULL;
status = execv(path, args);/*bacon add*/
fprintf(stderr, \%d %d %s %s/n\status, errno, ENOEXEC, setup_script, ifname);/*bacon add for debug.*/
_exit(1);
}
while (waitpid(pid, &status, 0) != pid); if (!WIFEXITED(status) ||
WEXITSTATUS(status) != 0) {
fprintf(stderr, \ setup_script); return -1; } } return 0;
}
这时应该看到qemu启动后进入了u-boot界面下,输入命令。 1 # bootm 就会看到linux内核启动的画面,但此时还没有根文件系统,我们稍候介绍采用nfs挂在根文件系统。
4. 开启NFS服务,假设你用的操作系统为ubuntu,首先安装 nfs服务器 1 # sudo apt-get install nfs-kernel-server 之后修改/etc/exports文件,添加如下一行 /home/wuxia *(rw,sync,no_root_squash)
....................注意 /home/wuxia 为你所要共享的目录。 输入命令 1 # sudo /etc/init.d/nfs-kernel-server restart 启动 nfs服务
测试 nfs服务是否成功启动 1 # sudo mkdir /mnt/nfs 2 # sudo mount -t nfs localhost:/home/username/nfs /mnt/nfs 查看/mnt/nfs文件是否于/home/username/nfs 中相同,若一样 ,OK 5. 将mini2440目录下的mini2440_start.sh修改为 1 #!/bin/sh 2 sudo ../arm-softmmu/qemu-system-arm \\ 3 4 5 6 -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 \\ 7 -usb -usbdevice keyboard -usbdevice mouse\\ 在建立两个脚本,分别为qemu-ifup, qemu-ifdown qemu-ifup 脚本 1 #!/bin/sh 2 echo \3 ifconfig $1 10.0.0.1 qemu-ifdown脚本 1 #!/bin/sh 2 echo \3 sudo ifconfig $1 10.0.0.1 down 6. 当这些都配置好后,我们即可使用nfs根文件系统了
这里我们的根文件系统为 /home/wuxia/mini2440/image/rootfs 在qemu的目录中输入 1 # ./mini2440/mini2440_start.sh u-boot启动成功后输入设置linux kernel的引导参数 set
bootargs
noinitrd
root=/dev/nfs
rw
nfsroot=192.168.135.190:/home/wuxia/mini2440/image/rootfs
ip=192.168.135.135:192.168.135.190::255.255.255.0 console=ttySAC0,115200 再输入命令
bootm
OK ! kernel就开始加载了,文件系统挂在成功后,就可以进行各种仿真工作了。友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容清空即可。
redboot on QEMU for mini2440
分类: eCos on mini2440 qemu2011-03-01 16:13 603人阅读 评论(0) 收藏 举报 (原创文章,欢迎转载,请注明出处,谢谢。)
最近有空呼吸新鲜空气,重新拿起来了eCos,做点东西共享给大家。
rt-thread最近很火,在mini2440的qemu平台上发表了测试和代码,这无疑给更多的爱好者以新的学习机会。
这段时间一直在研究ecos,所以有了把ecos移植到mini2440的qemu平台的想法。经过几天的折腾,终于可以在qemu的上面看到redboot的命令了。
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




