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

发布者:清新心情最新更新时间:2024-06-25 来源: elecfans关键字: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 # 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环境在这仿真环境中跑起来,目前还没有成功,正在尝试中。


关键字:QEMU  mini2440 引用地址:使用QEMU 建立mini2440的模拟仿真环境

上一篇:MaxWit及其中的g-bios 在mini2440的初次使用
下一篇:uCOS_II 移植到友善之臂mini2440

推荐阅读最新更新时间:2024-11-13 06:35

Mini2440开发板与PC机连接方式汇总
拿到开发板的时候,附件中已经自带了一些连接线,主要有串口直连线、USB线、网线、JTAG烧写器。对于开发板的这些连线的使用,对于初学者来说肯定会很迷茫,现在一一讲解它们的用途。 JTAG烧写器 JTAG烧写器主要在开发板第一次下载bootloader的时候用的,一旦开发板里面已经存有bootloader,那么后面的下载bootloader以及内核和文件系统都可以通过串口和USB实现,这时JTAG烧写器就可以不用了。因为刚买来的开发板一般都已经下载了bootloader,所以可以说这个JTAG烧写器在后续的开发中几乎用不上。JTAG烧写器的外观如图1所示。 图1 JTAG烧写器 JT
[单片机]
mini2440系统移植篇之u-boot分析
1. Bootloader概念 系统上电后,需要一段程序来初始化重要的硬件,有些程序是固化在固件firmwware上的,如PC的BIOS。然后是Bootloader,如PC上的GRUB。对于嵌入式系统来说,一般只有Bootloader,它负责初始化内核运行的硬件环境,如内存,然后调用操作系统内核。一般最终产品它只需要启动内核就足够了,为了方便开发,还可以增强Bootloader功能,比如网络功能,通过网络下载文件,烧写文件到Flash中。 2. 嵌入式系统结构 嵌入式系统一般包含4部分。 1、引导加载程序,包括固化在固件的boot代码(可选)和Bootloader。 2、Linux内核 3、文件系统,包括根文件系统和其他挂载
[单片机]
mini2440系统移植篇之kernel启动流程
1.1. 第1阶段 arch/arm/kernel/vmlinux.lds --------------------Makefile 2.1 arch/arm/boot/compressed/start.S 解压代码 2.2 arch/arm/kernel/head.S 2.2.1 __lookup_machine_type 机器ID àMACH_START àmachine_desc //放在__arch_info_begin…__arch_info_end 2.2.2 __create_page_tables 创建页表 2.2.3 使能MMU 2.2.4 __switch_data àb start_kerne
[单片机]
<font color='red'>mini2440</font>系统移植篇之kernel启动流程
mini2440硬件篇之MMU
MMU是内存管理单元,负责虚拟地址到物理地址的映射和内存访问权限检查。本文只讲地址映射,地址映射长度有段1MB、大页64KB、小页4KB、极小页1KB,本文只讲段1MB的情况,其它类似。我们每个进程的空间都是4G,不同的进程的变量地址有可能一样,这就是虚拟地址,其实它们对应到物理地址是不一样的。这种虚拟地址到物理地址的转换就是MMU做的事。所以开启MMU之后,cpu发出的地址就是虚拟地址,关闭MMU,cpu发出的地址就是物理地址,关闭MMU的时刻,一般是boot阶段。 首先要建立一张映射表,按1M映射的话,4G共有4096个1M的段,每个需要4字节存储映射的地址,所以映射表的大小是4096*4字节(即16k),映射表的地址放
[单片机]
mini2440 按键驱动添加输入子系统,让按键可以真正当做键盘一样用
这个实验没有添加太多的东西,就只是在原来的基础上添加了输入子系统的支持,按键的中断发生的时候,会向内核发送event,使得evinput.c和keboard.c等文件里面实现的handler可以对按键事件进行相应,六个按键分别向内核发送KEY_L, KEY_S, KEY_3,KEY_4,KEY_5,KEY_ENTER这六个event,加载驱动之后不需要运行任何自己写的用户层程序,只需要运行cat /dev/tty1(要先在/etc/init.d/rcS里面设置不启动Qt),就可以用按键输入上面的六种字符了,之后输入一次回车之后,缓存在tty1里面的输入数据才会一次全部显示出来。 驱动代码: #include linux/m
[单片机]
<font color='red'>mini2440</font> 按键驱动添加输入子系统,让按键可以真正当做键盘一样用
mini2440硬件篇之RTC
硬件原理 实时时钟(RTC)的主要功能是在系统掉电的情况下,利用后备电源使时钟继续运行,从而不会丢失时间信息。 1.1. 时间的设置和获取 s3c2440内部集成了RTC模块,而且用起来也十分简单。其内部的寄存器BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON和BCDYEAR分别存储了当前的秒,分,小时,星期,日,月和年,表示时间的数值都是BCD码。这些寄存器的内容可读可写,并且只有在寄存器RTCCON的第0位为1时才能进行读写操作。为了防止误操作,当不进行读写时,要把该位清零。当读取这些寄存器时,能够获知当前的时间;当写入这些寄存器时,能够改变当前的时间。另外需要注意的是,因为有
[单片机]
u-boot-2009.08在mini2440上的移植(七)---增加LCD显示功能
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,参考文章: http://blogold.chinaunix.net/u3/101649/showart.php?id=2105215 http://blog.chinaunix.net/space.php?uid=23787856&do=blog&id=1153
[单片机]
u-boot-2009.08在<font color='red'>mini2440</font>上的移植(七)---增加LCD显示功能
linux-2.6.32在mini2440开发板上移植-移植Nand驱动并修改分区信息
编者:linux中的nand的移植由于使用了MTD技术,所以就没有想象的那么复杂了。 1 Linux-2.6.32.2 内核所支持的Nand Flash 类型 Linux2.6.32.2 已经自带了大部分Nand Flash 驱动, 在linux-2.6.32.2/drivers/mtd/nand/nand_ids.c 文件中,定义了所支持的各种Nand Flash 类型。 2 修改Nand Flash 分区表 但是系统默认的分区不是我们所需的,所以要自已修改,除此之外,还有Nand Flash的结构信息需要增加填写,以便能够适合系统自带的Nand Flash 驱动接口,这可以参考SMDK2440 中关于Nand Flash 设备
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved