必赢手机app下载 / Blog / 必赢手机app下载 / 通过qemu模拟mini2440开发环境,建立mini2440的模拟仿真环境
必赢手机app下载 2

通过qemu模拟mini2440开发环境,建立mini2440的模拟仿真环境

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必赢手机app下载,  

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

必赢手机app下载 1

添加一行

必赢手机app下载 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

必赢手机app下载 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

 

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

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图