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

发布时间:2024-06-25  

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 # 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 # 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. # 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. # 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. #!/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. #!/bin/sh echo "Excuting qemu-ifup" ifconfig $1 10.0.0.1  

qemu-ifdown脚本

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>