Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203590
  • 博文数量: 93
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 978
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-10 15:46
个人简介

青春无悔

文章分类

全部博文(93)

文章存档

2015年(16)

2014年(77)

我的朋友

分类: 嵌入式

2014-11-10 16:46:11

一、安装eqmu-system-arm
二、安装Buildroot (2012.05)的使用
三、运行eqmu的mini2440

一、安装eqmu-system-arm
通过下面步骤可以在qemu/arm-softmmu/qemu-system-arm命令(支持mini2440)

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

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

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

1
2
#  ./configure --target-list=arm-softmmu
#  make -j4
出现错误:
1.
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
解决方法:
这需要安装zlib
用如下的命令
sudo apt-get install zlib1g-dev
2.
The error log from compiling the libSDL test is:
/tmp/qemu-conf--6621-.c:1:17: fatal error: SDL.h: No such file or directory
compilation terminated.
ERROR: QEMU requires SDL or Cocoa for graphical output
解决方法:
那么就可以使用以下语句修复:
sudo apt-get install libsdl-dev
首先下载适配Mini2440的QEMU虚拟机,然后编译,安装QEMU:
 
 
  1. $ cd ~
  2. $ mkdir local 
  3. $ git clone git://repo.or.cz/qemu/mini2440.git qemu 
  4. $ cd qemu 
  5. $ ./configure --target-list=arm-softmmu --prefix=$HOME/local 
  6. $ make 
  7. $ make install 

此时QEMU可执行程序已经安装在 ~/local/bin 目录下了,为了方便使用,将其添加到环境变量里:

 

  1. $ export PATH=$HOME/local/bin:$PATH 

 

验证一下正确安装与否:

 

  1. $ qemu-system-arm --version 

 

如果输出了QEMU的版本等信息,则安装成功。

二、 Buildroot (2012.05)的使用
 
一般说来,我们需要三样东西来正常启动一个嵌入式操作系统: 引导程序(bootloader),内核镜像和根文件系统镜像。那我们是不是接下来需要下载一个bootloader(比如u-boot,supervivi之类),编译之;下载任意版本的linux内核,编译之(当然要适配mini2440);一点一点生成自己的根文件系统,再制作成jffs2, yaffs2之类的格式呢?哦,对了,还有编译这三样东西的交叉编译工具链 Cross-compiler toolchain 要制作。
首先我们安装wget这个小工具,便于下载Buildroot:
 
$ sudo apt-get install wget 

接着下载Buildroot:
 
  1. $ cd ~ 
  2. $ wget http://buildroot.org/downloads/buildroot-2012.05.tar.gz 
  3. $ tar zxvf buildroot-2012.05.tar.gz  
在让Buildroot为我们生成三个镜像前,需要对其进行一些配置。Mini2440开发板的基本所需配置已经集成在Buildroot里了(众多defconfig文件中的一个),省了不少功夫。在此基础上,我们只需再进行少许配置,就可以让Buildroot开工了。
我们选取mini2440_defconfig来生成我们的 .config 文件,再用 make menuconfig 进一步配置:
 
  1. $ cd buildroot-2012.05 
    $ make mini2440_defconfig 
    $ make menuconfig 
一个方便的配置窗口会跟着出现,是基于Kconfig的配置机制:
  
以下列出比较重要的几个编译选项,需要改动的几项用红色表示:
 
- Toolchains : 在Toolchains目录里,须要选取Linux内核版本的适配的编译链版本。默认是设置为 3.3.x。后面的Kernel(内核版本)我使用的是3.3.7,所以没问题,这里不用改也可以。当然也可以使用诸如 3.0.x这样的版本,只要跟之后的Kernel版本适配就好了。
 
- Bootloaders : 默认是U-boot, 也可以选用其他版本的Bootloader。本文就用默认的U-boot。
 
- Kernel : 默认是 3.0.4,因为之前Toolchains目录选择的是 3.3.x版本,所以这里须要改选,比如 3.3.7版本。
 
- Package Selection for the target : Busybox已经包含在里面了,我们也可以选择更多的项目,比如 Qt, EFL, directfb之类的图形库。在 Graphic libraries and application子目录里选择。
 
- Filesystem images : 本文中使用的是 jffs2格式的根文件系统(也是Buildroot默认的),因为之后要制作NAND镜像,所以需要配置成一个每页512字节和16字节的ECC的NAND类型。在 Flash Type这项,改为 NAND flash with 512B Page and 16 KB erasesize 
 
这些都配置好之后,就可以请出我们最喜欢的命令了 -- make :
 
 $ make 

此时你可以倒杯茶,或者可以烤一只鸡。。。总之干点别的,让Buildroot忙活去吧。如果中间出现错误,一般是没装必要的东西,照错误提示安装就好,然后接着 make。 视电脑速度和网速而定,我的情况是大概30分钟后 make 完成。
如果一切顺利, make 结束后,在 buildroot-2012.05目录的 output/images/ 子目录下可以找到生成的三个文件:
 
- u-boot.bin : bootloader的镜像
 
- uImage : u-boot格式的(用mkimage命令生成的)Linux内核镜像
 
- rootfs.jffs2 : jffs2格式的根文件系统镜像
 
至此,Buildroot完成了他艰巨的任务,可以让他一边休息去了。我们进入下面的系统制作和启动部分。
出错:
1.
You may have to install 'g++' on your build machine


You must install 'bison' on your build machine


make: *** [core-dependencies] Error 1
解决:
$sudo apt-get install g++
$sudo apt-get install bison

You must install 'flex' on your build machine
解决:
$sudo apt-get install flex

You must install 'msgfmt' on your build machine
msgfmt is usually part of the gettext package in your distribution
解决:
$ sudo apt-get install gettext

You must install 'makeinfo' on your build machine
makeinfo is usually part of the texinfo package in your distribution
解决:
sudo apt-get install texinfo

三、运行eqmu的mini2440
a)        生成NAND镜像

如果在QEMU里生成NAND的话,会花不少时间。所以我们可以利用闲置的内存(RAM--  tmpfs

~$ mkdir nand

~$ sudo mount -t tmpfs none nand/

我们接下来将从零开始生成一个NAND镜像文件。一般NAND的大小我们可以设定成64MB NOR镜像文件一般设为2MB)。我们来做一下简单的计算:要生成一个64MBNAND,每个块是512字节,还要加上16字节的ECC,所以每个块是528字节。总共需要的块数是:(64 * 1024 * 1024 / 528 = 127100

dd 命令来生成一个NAND镜像:

~$ dd if=/dev/zero of=nand/nand.bin bs=528 count=127100
我们现在有了一个NAND镜像文件了。

现在可以将其从tmpfs拷贝到电脑硬盘,然后卸载掉tmpfs

$ cp nand/nand.bin .

$ sudo umount nand/

$ rmdir nand

b)       强大的工具 -- Flashimg

如前面时提到的,flashimg是一个由网友FabriceJouhaud 开发的软件,可以很快捷地生成NANDNOR镜像文件。我们首先下载flashimg

$ git clone git://gitorious.org/flashimg/flashimg.git

编译安装

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

 出错:
1../autogen.sh: 3: ./autogen.sh: autoreconf: not found
解决:
$ sudo apt-get install autoconf
2.Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 196.
解决:
$ sudo apt-get install libtool

要生成NANDNOR镜像文件,可以先把之前Buildroot替我们生成的三个文件:u-boot.bin, uImagerootfs.jffs2 拷贝到flashimg文件夹下,生成NANDNOR镜像文件:

$       flashimg -s64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512

$       flashimg -s 2M -t nor -f nor.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2

 

最后,启动系统,我们以NAND文件为例:

$       qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse

错误: 
1.在启动qemu时如果出现错误Floating point exception (core dumped),可以添加-nographic选项,在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核.
(有可能出错原因为全屏问题,也有网友说交替“ssh运行无图型”和“虚拟机运行有图形”mini2440会解决)
$       qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -nographic

2.1、qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevicemouse 在nand.bin中可以不需要u-boot.bin,在当前执行这条命令的文件夹下有u-boot.bin即可,一开始进入的u-boot是当前目录下的u-boot.bin。

启动之后,还需要配置一下(其中mini2440=3tb 是为了使屏幕分辨率成为320*240,横向显示。默认是240*320,是竖着的)

MINI2440 # nboot kernel

MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 mini2440=3tb

MINI2440 # saveenv

MINI2440 # bootmls

 

输入Buildroot的密码,默认是    root

我们再一次看到了亲切的小企鹅。

至此,已完成eqmu的mini2440模拟。


阅读(10556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~