嵌入式系统仿真环境—SkyEye

时间:2007-09-21

    摘 要: 本文全面分析了开放源码的嵌入式系统仿真集成开发环境SkyEye,并对SkyEye上已经移植成功的操作系统、典型应用进行了介绍,讲述了SkyEye正在开展的工作和将来的发展方向。
关键词:嵌入式系统;仿真环境;SkyEye;Linux;mClinux;mC/OS-II

SkyEye
      SkyEye是一个在Linux和 Windows平台上实现纯软件仿真的集成开发环境,它基于GPL协议,可在SkyEye上运行Linux、mClinux以及mC/OS-II 等多种嵌入式操作系统和各种系统软件(如TCP/IP、图形子系统、文件子系统等),并可对它们进行源码级的分析和测试。
       SkyEye作为指令级仿真器,可以仿真多种嵌入式开发板,支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比有一定差别。在时钟节拍的时序上,SkyEye不保证与硬件完全相同,并简化了对软件透明的一些硬件仿真,这样可以提高SkyEye的执行效率。
在32位嵌入式CPU领域中,ARM系列CPU所占比重相当大,因此SkyEye首先选择了ARM CPU核作为仿真目标CPU核。SkyEye可用于学习、分析、开发Linux、mClinux、mC/OS-II操作系统内核和TCP/IP实现,了解ARM嵌入式CPU编程,而这一切都可在一个集成环境中完成。如果能够改进SkyEye本身,则大家对ARM、8019 ethernet网络芯片等硬件的了解也会更深入。由于SkyEye与GDB可以无缝结合,开发者可以方便地使用GDB提供的各种调试手段对SkyEye仿真系统上的软件进行源码级调试,还可以进行各种分析,如执行热点分析、程序执行覆盖度分析等。

SkyEye技术分析
SkyEye实现的硬件仿真
* CPU和开发板系列
     目前SkyEye可以仿真的CPU主要是基于ARM内核的CPU,包括ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM9xx、ARM10xx、Xscale、Ateml91x40、EP7312等。
     各硬件开发公司可以根据它们的需求在上述CPU核上加上特定的扩展,形成基于各种ARM基本的特定CPU,如Atmel91X40和 EP7312,则分别扩展了ARM7TDMI和ARM720T的内存控制和各种I/O控制器,简化了开发板的逻辑设计,增强了开发板的功能。
     目前SkyEye仿真的开发板包括基于Atmel91x40、EP7312和StrongARM的adsbitsy开发板,以及基于XScale PXA250的lubbock开发板。主要仿真了对应各个开发板的串口、时钟、RAM、ROM等硬件外设。
* 存储器管理单元和缓存单元
     MMU即存储器管理单元,是用来管理虚拟内存系统的硬件。MMU的两个主要功能是:将虚拟地址转换成物理地址;控制存储器的存取权限。MMU关掉时,虚拟地址直接输出到物理地址总线。MMU本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB。为了支持仿真多种类型CPU的MMU/Cache,SkyEye包含了一个通用的MMU/Cache仿真实现。通过对一些参数的调整可以支持仿真多种类型的MMU/cache物理结构和逻辑行为。
* 网络芯片
     前SkyEye仿真了8019as网络芯片,其特点是:NE2000兼容,内建 16K RAM缓冲区,10MB传输速率。开发板上可以加入网络芯片8019as,再加上不同操作系统上的8019as驱动程序,可以完成各种网络应用设计开发。目前已经在在基于Atmel91x40的开发板上实现了网络芯片8019as扩展,并增加了mC/OS-II和mClinux的网络驱动程序,支持大量的网络应用程序,如lwip、nfs server/clinet、http server/client、telnet server/client、ftp server/client等。
SkyEye总体结构
     SkyEye基于GDB /armulator,可以仿真完整的嵌入式计算机系统,目前包括CPU、内存、I/O寄存器、时钟、UART、网络芯片,将来还会有MMU、Cache、LCD、USB等各种硬件。
      SkyEye从总体上分为以下四个层次。
      用户接口模块:处理用户的输入命令,并把相关调试数据输出给用户。
     符号处理模块:主要处理执行文件的头信息,解释执行文件中内嵌的debuger调试信息,以及对符号表的管理和对源代码表达式的解析,并定位源代码中的语句位置和机器码的位置关系等。
     目标控制模块:主要完成执行控制(如中断执行,中断条件的设置等)、程序栈结构分析,以及对具体目标硬件的控制(如本地调试、远程调试和仿真调试的控制)。
目标仿真模块:仿真主要硬件的执行,对执行文件的机器指令进行解释,并仿真执行每一条机器指令,产生相应的硬件响应。

SkyEye上运行的应用
     由于已经实现多种软件的移植,目前在SkyEye的仿真硬件上可以运行多种操作系统、驱动程序、网络协议栈和各种应用软件。
ARM Linux
     Linux原本被设计为桌面系统,现在广泛应用于服务器领域,而更大的影响在于它正逐渐应用于嵌入式设备。由于SkyEye仿真的CPU基本上基于ARM核,所以目前可以支持面向ARM核的Linux操作系统-ARM Linux。
mClinux
     mClinux主要针对没有MMU的处理器,而标准的Linux只支持带MMU的CPU。为了减少OS的尺寸,mClinux采用了如下做法:删除不需要的内核功能,重新配置内核;mClinux的根(root)文件系统采用romfs文件系统;mClinux的应用程序库为精简的uClibc,而不是庞大的glibc。
mC/OS-II
     无论是通过学习 mC/OS-II 来了解实时操作系统的构造,或者是直接使用它来针对具体应用进行开发,都是非常方便和可行的。目前在SkyEye上可以运行mC/OS-II 2.51版。
更多的 OS 移植
     基于 SkyEye,开发者可以验证自行开发的OS,也可将更多的OS,如MINIX等,移植到SkyEye上。
mClinux上的TCP/IP
     mClinux上面有完整的TCP/IP协议栈,但缺少对SkyEye网络仿真芯片的驱动程序。SkyEye实现了简化的8019as驱动程序,它主要包括了初始化、中断处理、接收数据包和发送数据包的处理等工作。
基于mC/OS-II的LwIP
     通过把开放源代码的LwIP移植到mC/OS-II上来,可获得了一套的嵌入式网络软件平台。系统示意图如图1所示。
LwIP是瑞士计算机科学院Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈,其含义是Light Weight(轻型)IP协议。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行,目前使用的是LwIP稳定版V0.5.3。除了LwIP之外,还有很多开源的嵌入式TCP/IP协议栈,其中的代表有tinyTCP、mcIP、mIP等。
Lwip上的echo服务器
     在Lwip上实现了一个TCP echo服务器,监听7号端口,实现了RFC中简单的echo协议:收到什么,就往回发同样的内容。编译运行后,用ping ip地址 命令可以得到ICMP reply响应。用telnet ip地址 7(登录7号端口) 命令可以看到echo服务器的回显效果。说明ARP、ICMP、IP、TCP协议都已正确运行。
mC/OS-II下的人机界面
     实现人机界面(shell)的本质思想是:Shell作为一个mC/OS-II下的任务,工作于内核之外,占用一个任务号。它接收用户输入的字符,存储到缓冲区,并回显在屏幕上,以回车键为用户输入的结束信号,随后解析用户输入的命令名称、参数,调用相应的命令函数。一直到这个命令函数运行返回,才继续Shell的人机交互界面,本文称之为Genie Shell。
Genie Shell实现了基本的命令输入、解析参数、调用命令函数功能,以及两条示例性的命令,其特色是采用了面向对象的思路来实现Shell的各种命令。
mClinux和ARM Linux上的应用
     目前已经在mClinux上成功地执行了shell、ping、ifconfig、telnet server/client、ftp client/server、nfs server等大量应用程序。绝大多数mClinux或ARM Linux应用级程序完全不用修改源码就可以在SkyEye上运行。

SkyEye发展
      在大学的嵌入式课程试验和嵌入式项目研究中,已把SkyEye作为一个重要的嵌入式系统开发的实践工具,在清华大学、国防科技大学等院校得到了应用。今后,skyEye将支持仿真更多的CPU、开发板和各种外设,并提供详细的设计文档。除了对SkyEye进一步完善以外,本课题组正在进行以下方面的工作。
LCD仿真
     作为单片机系统重要的输出设备,LCD应用非常广泛。Skyeye中将加入LCD控制器设备仿真,并使用GTK+图形函数库在Xwindow中仿真出一个LCD屏幕。Skyeye的LCD仿真实现的示意图如图3所示。
IDE 集成开发环境
    IDE集成开发环境是SkyEye的一个重要组成部分。所有支持GDB的IDE集成开发环境都可以很容易地移植为SkyEye



  
上一篇:嵌入式系统功耗的动态管理
下一篇:低功耗智能传感器的设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料