王健 刘雪花
摘要:随着嵌入式系统的广泛应用,嵌入式系统下的软件开发日新越益,而高层次的嵌入式软件设计很少涉及到底层的硬件细节,同时嵌入式硬件平台的搭建存在成本较高,硬件不稳定等问题,本文介绍了一种基于SkyEye虚拟硬件技术下的嵌入式平台仿真技术,并成功将Linux系统的内核移植到基于SkyEye虚拟的ARM体系的硬件结构平台下,为嵌入式学习与研究找到了一种新的途径。
关键词:SkyEye 虚拟;仿真 Linux
1 引言
目前,以消费类电子产品和移动终端应用为代表的嵌入式系统应用开发正在快速发展,市场需求的不断变化与多种异构硬件体系结构的并存,给嵌入式系统开发与教学带了一系列挑战,面对嵌入式系统开发与教学过程中存在的研发成本过高、硬件环境不稳定等问题,引入一种快速、高效和低成本的开发环境,对于提高嵌入式系统的开发效率和开发质量具有重要意义。
2 SkyEye概述
SkyEye是一个由清华大学陈渝博士开发并建立的开源软件项目,中文名称为“天目”。SkyEye的目标是在常规的Linux和Windows平台上仿真多种主流的嵌入式开发板和外部设备,实现一个可扩展的硬件模拟框架。SkyEye属于一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件,其硬件模拟逻辑结构图下图1所示。目前SkyEye只提供Linux 和Windows两种平台下的安装程序。
3 基于SkyEye嵌入式开发环境的建立
SkyEye共包含两个软件包,一个为SkyEye的发布版本包,另外一个为SkyEye的测试套件包,其中测试套件包用来对相应版本的SkyEye软件包进行测试。
3.1 安装SkyEye
(1)从source网站上下载SkyEye的最新版本1.3.3的源代码,以root权限登录Linux后解压
# tar xvjf SkyEye-1.3.3_rel.tar.gz
(2)编译程序
# ./configure
#make lib
#make
这里需要说明的是,其中make lib用来编译第三方的库,make来编译SkyEye的源代码
(3)安装SkyEye到opt目录下
# make install_lib
# make install
3.2 SkyEye的目录与文件分析
安装成功后会在opt目录下生成以下目录
Bin:存放SkyEye的工具。其中mknandflashdump用来制作nandflash镜像文件,SkyEye为命令行应用程序,prof_convert用来把代码覆盖率的结果文件进行格式转换,uart_instance可以通过一个xterm终端来显示串口的输出。
Include: SkyEye开发插件时所用到的头文件,这些头文件定义了SkyEye提供的API函数的原型
Info:info格式的文档
Lib:存放SkyEye的核心库libcommon.,so和其他一些以动态库存在的插件
Testsuite:存放测试用例
4 在SkyEye中模拟基于S3C2440内核的移植
4.1 构建基于ARM S3C2440仿真环境,建立配置文件skyeye.config,内容如下
cpu: arm920t
mach: s3c2440x
# physical memory
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00800000
mem_bank: map=M, type=RW, addr=0xc0800000, size=0x00800000, file=./initrd.img
mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
lcd: type=s3c2440x, mod=gtk
#dbct:state=on
4.2 裁减编译Linux内核
# make xconfig
# make
4.3 将编译生成的内核镜像文件和配置文件复制到/opt/bin/下,执行SkyEye
#./skyeye-e vmlinux skyeye.config
5 结束语
目前,笔者移植的内核版本为2.6.30.4的Linux已经能稳定地运行在SkyEye虚拟平台上,为嵌入式软件设计和嵌入式系统教学节约了大量的硬件平台的搭建时间,并有效的结约了成本。当然由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上也不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。相信随着该开源项目的不断发展,SkyEye的易用性和通用性会得到提高,并成为嵌入式领域开发的有效工具。
参考文献
[1] 李明,陈渝.一个开放源码的嵌入式仿真环境——SkyEye.单片同与嵌入式系统应用.2003
[2] 宋靖,吴庆波.嵌入式系统仿真环境运行环境SkyEye应用研究.微处理机.2007
[3] 周兆丰,候向峰. 基于SkyEye的嵌入式系统仿真环境的构建. 单片同与嵌入式系统应用.2010
[4] skyeyev3_usermanual-v6.http://sourceforge.net/
[5] Li Ming.Analysis and Comparison of Two Simulation Environment of Embedded Software.IC&Components.2003