个开放源码的嵌入式仿真环境——SkyEye
2 SkyEye的技术分析
2.1 SkyEye总体结构
SkyEye基于GDB/ARMulator,模仿了一个完整的嵌入式系统,目前包括CPU、内存、I/O寄存器、时钟、UART、网络芯片、MMU、Cache,将来还会仿真LCD、USB等各种硬件。在SkyEye上运行的操作系统和各种系统软件“意识”不到它们是在一个虚拟的计算机系统上运行。
SkyEye从总体上分为四个层次。
①用户接口模块:包括命令行用
户界面和图形用户界面,及时处理用户的输入命令,并把相关调试数据输出给用户。
②符号处理模块:主要处理执行文件的头信息,解释执行文件中嵌的debuger调试信息,管理符号表,解析源代码表达式,定位源代码中的语句位置和机器码的位置关系等。
③目标控制模块:主要完成执行控制(如执行断程序,设置中断条件等),程序栈结构分析,对具体目标硬件的控制(如本地调试、远程调试和仿真调试的控制)。
④目标仿真模块:主要是模仿计算机系统中的主要硬件(包括CPU、内存和各种硬件外设等)的执行,对执行文件的机器指令进行解释,并仿真执行每一条机器指令,产生相应的硬件响应。
2.2 SkyEye模拟的硬件介绍
目前,SkyEye仿真的CPU包含不带MMU的AT91X40和带MMU的ARM720T,它们都是基于ARM7TDMI CPU内核的。SkyEye还模拟了其它硬件外设,如串口、网络芯片、内存、时钟、网络HUB等。SkyEye的CPU仿真主要完成对ARM指令集处理、寄存器操作和CPU流水线处理等的仿真。
ARM720T具有MMU(Memory Management Unit),即存储器管理单元,是用来管理虚拟内存系统的操作。MMU的两具主要功能是:
*将虚地址转换成物理地址;
*控制存储器存取允许,MMU关掉时,虚地址直接输出到物理地址总线。
MMU本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(Translation Lookaside Buffers)。TLB表中保存的是虚地址及其对应的物理地址、权限、域和映射类型。当CPU对一虚拟地址进行存取时,首先搜索TLB表以查找对应的物理地址等信息。如果没有查到,则进行查找Translation Table,称为TTW(Translation Table Walk)。经过TTW后,将查到的信息保存到TLB,然后根据TLB表项的物理地址进行读写。
MMU/Cache的仿真主要是依据ARM720T处理器的体系结构进行的。ARM720T可以看成ARM7TDMI加上MMU/Cache模块,主要是仿真控制MMU/Cache的寄存器结构、TLB结构、Cache结构、Translation Table Walk的控制逻辑以及在此基础上内存的读取操作。
对于网络部分,SkyEye仿真的是兼容NE2000的8019as以太网网络芯片,支持8位数据通路,仿真实现了远程DMA信道和本地DMA信道两个部分。本地DMA完成控制器与仿真网络的数据交换,主处理器(Host)收发数据只需对远程DMA操作。当主处理器要向以太网络发送数据时,先将一帧(frame)数据经过远程DMA信道,送到以太网络控制器中发送缓存(Ring Buffer),然后发出传送命令。以太网络控制器在送出前一帧的数据后,继布完成此帧的发送。以太网络控制器接收到的数据通过MAC比较后,由FIFO存到接收缓冲区,收满1帧后,以中断或缓存器标志的方式通知主处理器。
为了有效支持网络仿真,SkyEye还设计了一个虚拟HUB-vnet,可以在一台Host主机上支持多个在SkyEye上运行的OS实例进行网络的通信互联,从而更有助于针对网络方面的开发和研究。
3 SkyEye上已经移植成功的OS
3.1 μClinux
μClinux是应用于嵌入式设备的一个Linux版本,是主要针对
《个开放源码的嵌入式仿真环境——SkyEye(第2页)》