快捷搜索:

您的位置:澳门新葡4473网站 > 新葡亰平台娱乐 > 使用QEMU 建立mini2440的模拟仿真环境

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

发布时间:2019-12-23 05:56编辑:新葡亰平台娱乐浏览(73)

    1 编译安装QEMU

    1. 首先下载qemu for mini2440

    首先下载qemu for mini2440,直接打包下载 

    git clone git://repo.or.cz/qemu/mini2440.git  qemu

     

    如果感觉速度慢,直接打包下载

    解压后,进入源代码目录中:

    sudo apt-get install zlib1g-dev
    sudo apt-get install libsdl-dev
    

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

    (prefix指定安装路径,这里是$HOME/work/mini2440)

    1. # ./configure --target-list=arm-softmmu # make -j4  

      # ./configure --target-list=arm-softmmu # make -j4

    2. 下载u-boot for mini2440

    ./configure --target-list=arm-softmmu --prefix=$HOME/work/mini2440
    make -j4
    make install 
    

    git clone  git://repo.or.cz/w/u-boot-openmoko/mini2440.git  uboot

     安装完后,添加环境变量:

    或者打包下载

    sudo vim /etc/bash.bashrc
    

     添加一行:

    (注意 采用打包下载的时候这几个包的文件名可能相同,注意区分)解压后,配置Makefile文件,打开Makefile文件,CROSS_COMPILE变量赋值,即自己所使用的交叉编译工具链,比如我的是arm-none-linux-gnueabi-,保存退出,输入

    export PATH=$PATH:$HOME/work/mini2440/bin 
    
    1. # make mini2440_config # make -j4  

      # make mini2440_config # make -j4

    保存退出后,用source 生效或者注销重新登录

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

    source /etc/bash.bashrc
    

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

    测试是否正常:

    1. 下载 linux kernel for mini2440
    qemu-system-arm --version
    

    (下载步骤略去)

     

    进入源码目录

    2 使用buildroot一键生成uboot和linux内核及根文件系统

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

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

    首先下载buildroot的源代码,下载地址: 

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

     

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

    解压后,进入源代码目录中:

    1. # sh mini2440/mini2440_start.sh  

      # sh mini2440/mini2440_start.sh

    sudo apt-get install libncurses5-dev
    patch configure <../configure.patch    /* 需要修改源码 打补丁 */
    make mini2440_defconfig
    make menuconfig
    

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

    安装库:

    1. # bootm  

      # bootm

    sudo apt-get install g++
    sudo apt-get install bison
    sudo apt-get install flex
    sudo apt-get install gettext
    sudo apt-get install patch
    sudo apt-get install git-core
    sudo apt-get install xz-utils
    sudo apt-get install automake
    

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

    安装texinfo 4.13

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

    tar -zxvf texinfo-4.13a.tar.gz
    cd texinfo-4.13
    ./configure
    make
    sudo make install
    
    1. # sudo apt-get install nfs-kernel-server  

      # sudo apt-get install nfs-kernel-server

    修改bug(注释下面文件中:_GL_WARN_ON_USE (gets,.......  这行代码):

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

    vim output/build/host-m4-1.4.16/lib/stdio.in.h
    vim output/build/host-m4-1.4.16/lib/stdio.h
    

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

    在安装 时间比较长(可以先用我提供的安装文件放到buildroot-2012.05/dl目录下,这样省去下载时间)

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

    链接: 密码:2dkz

    输入命令

    3 Flashimg制作nand.bin并启动系统

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

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

    下载flashimg源码 

    启动 nfs服务

     

    测试 nfs服务是否成功启动

    解压后,进入flashimg源码目录后

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

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

    ./autogen.sh (要求autoconf版本大于2.67)
    ./configure 
    make 
    sudo make install 
    

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

     然后把我们生成的三个文件 : u-boot.bin, uImage和rootfs.jffs2 拷贝到 flashimg文件夹下运行 

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

    2. #!/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  

      #!/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

    ./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512 
    

    在建立两个脚本,分别为qemu-ifup, qemu-ifdown

    即可生成nand.bin。启动方法为:

    qemu-ifup 脚本

    qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse 
    
    1. #!/bin/sh echo "Excuting qemu-ifup" ifconfig $1 10.0.0.1  

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

    (若出现错误:浮点数例外启动不了qemu,请全屏最大化终端,再次执行,这是由于分辨率问题造成)

    qemu-ifdown脚本

    输入下面指令加载内核和根文件系统:

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

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

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

    nboot kernel 
    setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 
    saveenv 
    bootm 
    

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

     启动后,输入默认密码root,即可成功登录,此时还没有配置网络。ifconfig发现没有网卡。

    在qemu的目录中输入

     4 NFS挂在根文件系统

    1. # ./mini2440/mini2440_start.sh  

      # ./mini2440/mini2440_start.sh

     首先安装nfs服务

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

    sudo apt-get install nfs-kernel-server 
    

    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

    新建nfsroot文件夹

    再输入命令

    mkdir ~work/nfsroot 
    

    bootm

    然后配置nfs目录 

    OK ! kernel就开始加载了,文件系统挂在成功后,就可以进行各种仿真工作了,下面是我挂载的由友善之臂提供的mini2440的qtopia文件系统的截图:

    sudo vi /etc/exports 
    

    图片 1

    添加一行

    图片 2

    /home/zwx/work/nfsroot *(rw,sync,no_root_squash,no_subtree_check
    

    友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容清空即可。Enjoy yourself!

    然后执行:

    目前,我打算让GPE环境在这仿真环境中跑起来,目前还没有成功,正在尝试中。

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

    图片 3

    进入NFS共享目录:

    cd /home/zwx/work/nfsroot/ 
    

     修改权限

    sudo chmod -R 777 ./ 
    

    解压根文件系统

    tar xvzf rootfs_qtopia_qt4-20140103.tar.gz
    

    注意:友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容删除即可(删除文件也可以)。

    sudo chmod -R 777 ./ 
    cd rootfs_qtopia_qt4
    cd etc/init.d/
    rm ifconfig-eth0
    

    创建虚拟网卡并配置ip

    sudo apt-get install uml-utilities //运行tunctl必须的工具
    sudo tunctl -u $USER -t tap0
    sudo ifconfig tap0 192.168.42.1
    

    带网络方式启动qemu

    cd /home/zwx/work/qemu/flashimgflashimg-fb97139
    qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -kernel uImage -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no,downscript=no
    

    启动后进入uboot模式,此时的qemu还不能显示,输入下面指令加载内核和根文件系统。

    set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.42.1:/home/zwx/work/nfsroot/rootfs_qtopia_qt4/,proto=tcp,nfsvers=3,nolock  ip=192.168.42.2:192.168.42.1::255.255.255.0 console=ttySAC0,115200
    bootm
    

    然后就可以启动了

     5 安装交叉编译工具链:

    arm-linux-gcc-4.4.3.tar.gz 
    

    安装库:

    sudo apt-get install lib32stdc++6
    sudo apt-get install lib32z1
    

     

     好了 到此就可以愉快的进行开发了。

     

    本文由澳门新葡4473网站发布于新葡亰平台娱乐,转载请注明出处:使用QEMU 建立mini2440的模拟仿真环境

    关键词:

上一篇:RPM包的版本号比较

下一篇:没有了