曙海教育集团论坛嵌入式硬件开发专区嵌入式硬件技术讨论专区 → 硬件仿真实现之一 SkyEye的设计实现


  共有5964人关注过本帖树形打印

主题:硬件仿真实现之一 SkyEye的设计实现

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
硬件仿真实现之一 SkyEye的设计实现  发帖心情 Post By:2010-11-19 9:08:18

本文章主要介绍了SkyEye硬件模拟平台的实现细节,主要内容包括SkyEye的总体设计、SkyEye的可扩展框架、SkyEye的关键数据结构、SkyEye对各种CPU的模拟实现、SkyEye对各种外设的模拟实现、如何安装使用SkyEye以及如何扩展SkyEye的仿真模块等。对SkyEye的深入了解,有助于对嵌入式硬件系统有更深入的认识,特别是对操作系统、驱动程序如何与嵌入式硬件系统进行交互有更深刻的了解。

一、 SkyEye目标模拟模块功能划分:

                  
如上所示。SkyEye目标模拟模块从功能上可分为如下几大模块:

●配置选项解析和初始化模块:在模拟硬件开始运行前,根据配置文件的选项,控制对模拟硬件的配置和初始化。相关文件包括:
arminit.c:控制各种模拟硬件的初始化
skyeye_config.[ch]:解析配置文件的选项行
skyeye_options.c:根据各种硬件的选项,完成各种配置



●    处理器模拟宏模块:主要完成与处理器体系结构相关的模拟,它可细分为:CPU指令模拟执行模块、MMU/CACHE模拟模块、CoProcessor(又称协处理器)模拟模块。


CPU指令模拟执行模块:其主要任务是:当模拟硬件开始运行,完成指令读取,指令译码,指令执行的工作;如果CPU状态发生了改变,调整指令和各种寄存器值;在指令执行前,调用开发板IO模拟模块的io_do_cycle驱动模拟各种外设的行为。主要的文件包括:
armemu.[ch]:模拟CPU的3级流水线,并具体执行各种指令


MMU/CACHE模拟模块:本模块分为两部分:与具体CPU类型无关的MMU/CACHE模拟子模块和与具体CPU类型相关的模拟子模块。主要的任务是:根据配置文件进行初始化;进行MMU/CACHE模拟;执行与MMU/CACHE相关的指令。如果CPU指令模拟模块执行读写存储器的操作指令,则转到MMU/CACHE模拟模块。如果模拟的CPU类型不支持MMU(如ARM7TDMI),则SkyEye会根据将访问的地址,直接转到MEMORY模拟模块或开发板IO模拟模块;否则转到具体CPU类型相关的模拟子模块进行MMU/CACHE模拟。主要的文件包括两部分:
与具体CPU类型无关的MMU/CACHE模拟子模块:
armvirt.c、armmmu.c、mmu/*.[ch]
与具体CPU类型相关的MMU/CACHE模拟子模块:
sa_mmu.[ch]:模拟strongarm的MMU/CACHE
arm7100_mmu.[ch]:模拟arm7[12]0T的MMU/CACHE
xscale_copro.c:模拟xscale的MMU/CACHE
arm920t_mmu.[ch]:模拟arm920t的MMU/CACHE


CoProcessor(又称协处理器)模拟模块:其主要任务是:完成各种协处理器的初始化;执行各种协处理器的指令。实际上MMU/CACHE模拟模块的一部分工作是模拟ARM的第15号协处理器,它的主要功能是配置MMU/CACHE等。主要的文件包括:
armcopro.c:根据配置信息,完成对ARM协处理器的初始化配置
xscale_copro.c:模拟xscale的协处理器cp13、cp14、cp15
sa_mmu.[ch]、arm7100_mmu.[ch]:模拟strongarm、ep7312的协处理器cp15
arm920t_mmu.[ch]:模拟arm920t的协处理器cp13、cp14、cp15


●    IO模拟宏模块:本模块包含各种逻辑行为各异的外设模拟,主要包括系统IO模拟模块、网络芯片模拟模块、LCD模拟模块等。


系统IO模拟模块:本模块的主要任务包括:根据配置文件进行IO和外设初始化;完成各种外部IO设备的模拟(如时钟计数器累加、产生中断、LCD显示等);进行各种特定CPU和外设的IO寄存器读写的模拟。本模块与各种具体的开发板和CPU有很紧密的联系,主要的文件包括:
armio.[ch]:建立在各个特定模拟子模块上的抽象层模块
skyeye_mach_at91.c:模拟Atmel AT91X40开发板
skyeye_mach_ep7312.c:模拟cirrus ep7312开发板
skyeye_mach_pxa.c:模拟intel xscale lubbock开发板
skyeye_mach_s3c4510b.c:模拟基于samsung s3c4510b的开发板
skyeye_mach_s3c44b0.c:模拟基于samsung s3c44b0的开发板
skyeye_mach_sa.c:模拟基于intel strongam的adsbitsy开发板
skyeye_mach_lpc.c:模拟基于philip lpc2249的开发板
skyeye_mach_sharp.c:模拟基于sharp lh7a400的开发板
skyeye_mach_at91rm92.c:模拟基于atmel at91rm9200的开发板
skyeye_mach_cs89712.c:模拟基于cs89712的开发板


网络芯片模拟模块:本模块主要完成了对8019AS网络芯片的模拟工作,主要任务包括:模拟8019AS的控制逻辑、8019AS与具体开发板IO模拟模块的接口、虚拟网络输入输出接口处理。主要的文件包括:
skyeye-ne2k.[ch]:8019AS的硬件逻辑模拟
skyeye_mach_at91.c:部分内容完成接收虚拟网络输入处理模拟
skyeye_net_tuntap.c:配置tuntap虚拟网络的接口
skyeye_net_vnet.c:配置vnet虚拟网络的接口
vnet.c、if_vnet.h:独立存在的软件包,vnet虚拟网络的具体实现


LCD/TouchScreen模拟模块:本模块主要完成LCD/TouchScreen控制逻辑的模拟,是目前唯一需要GUI支持的模块,它的主要任务是:配置LCD/TouchScreen硬件模拟、模拟LCD/TouchScreen控制逻辑。有关LCD/TouchScreen模拟相关的文件包括:
skyeye_lcd.[ch]: LCD/TouchScreen配置和LCD/TouchScreen模拟的通用控制逻辑
skyeye_mach_*.c:与开发板相关LCD/TouchScreen的控制逻辑和中断处理,目前支持ep7312和pxa255的skyeye模拟。


MEMORY模拟模块:本模块与具体的CPU和开发板无关,它的主要任务包括:根据配置文件进行内存初始化,并加载binary image文件;进行RAM/ROM读写的模拟。主要的文件包括:
armmem.[ch]:主要完成RAM/ROM读写模拟

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

硬件仿真实现之一 SkyEye的设计实现








签名