欢迎来到天天文库
浏览记录
ID:23631163
大小:281.50 KB
页数:22页
时间:2018-11-09
《使用qemu建立mini2440及模拟环境》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、使用qemu建立mini2440的模拟仿真环境1.首先下载qemuformini2440gitclonegit://repo.or.cz/qemu/mini2440.git qemu如果感觉速度慢,直接打包下载http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz解压后,今日源代码的主目录中,12# ./configure--target-list=arm-softmmu# make-j42.下载u-bootformini2440gitclone git://repo.or.cz/w/u-boot-openmoko/min
2、i2440.git uboot或者打包下载http://repo.or.cz/w/u-boot-openmoko/mini2440.git/snapshot/HEAD.tar.gz(注意采用打包下载的时候这几个包的文件名可能相同,注意区分)解压后,配置Makefile文件,打开Makefile文件,CROSS_COMPILE变量赋值,即自己所使用的交叉编译工具链,比如我的是arm-none-linux-gnueabi-,保存退出,输入12# makemini2440_config# make-j4稍等两分钟,即在当前目录下生成名为u-boot.bin的文件,注意如果想在之后使用u-bo
3、ot的nfs下载文件功能,需要修改代码中的一部分,将net/nfs.c文件中的NFS_TIMEOUT=2UL修改为NFS_TIMEOUT=20000UL否则会造成nfs文件下载失败,如果不使用nfs下载功能,不改也可。然后将u-boot.bin文件拷贝到qemu-mini2440/mini2440文件夹下。3.下载linuxkernelformini2440(可以使用原mini2440开发板的内核源代码)(下载步骤略去)进入源码目录12# makemini2440_defconfigARCH=arm#makeuImage之后会在arch/arm/boot/目录下生成uImage文件,将
4、此文件复制到qemu目录下的mini2440文件夹下,并将mini2440文件夹中的mini2440_start.sh作如下修改将kernel一行改为-kernel"$base/uImage",回到上层目录后运行1# shmini2440/mini2440_start.sh错误解决:一、1.如果在编译QEMU时没有安装,即makeinstall,那么需要打开mini2440/mini2440_start.sh,将第16行的qemu-img改为:$base/../qemu-img2.如果编译时安装了QEMU,即有makeinstall,不管这一步骤。二、期待的画面并没有出来,取而代之的
5、是:/etc/qemu-ifup:couldnotlaunchnetworkscriptCouldnotinitializedevice'tap'该错误一般是运行权限错误,使用根用户运行。三、使用根用户运行,依旧是:/etc/qemu-ifup:couldnotlaunchnetworkscript……。对qemu中的net.c在代码进行修改:staticintlaunch_script(constchar*setup_script,constchar*ifname,intfd){intpid,status;char*args[4];/*baconmodified*/char**par
6、g;/*trytolaunchnetworkscript*/pid=fork();if(pid>=0){if(pid==0){charpath[20];/*baconadd*/intopen_max=sysconf(_SC_OPEN_MAX),i;for(i=0;i7、/*parg++=(char*)setup_script;*parg++=(char*)ifname;*parg++=NULL;status=execv(path,args);/*baconadd*/fprintf(stderr,"error:%d%d%d%s%s/n",status,errno,ENOEXEC,setup_script,ifname);/*baconaddfordebug.*/_exit(1);}while(waitpid(p
7、/*parg++=(char*)setup_script;*parg++=(char*)ifname;*parg++=NULL;status=execv(path,args);/*baconadd*/fprintf(stderr,"error:%d%d%d%s%s/n",status,errno,ENOEXEC,setup_script,ifname);/*baconaddfordebug.*/_exit(1);}while(waitpid(p
此文档下载收益归作者所有