硬件仿真实现之---SkyEye的设计实现[2]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:

  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读写模拟
  
  三. SkyEye关键数据结构
  SkyEye目标模拟模块中,各种数据结构很多,用于模拟硬件总体机构定义的主要数据结构有skyeye_config_t和ARMul_State。把握这两个数据结构,是理解整个skyeye模拟的硬件体系结构的关键,在这两个数据结构上进行进一步细化分析,则可充分了解skyeye的硬件体系结构细节。
  
  1. skyeye_config数据结构
  skyeye_config_t结构描述了SkyEye模拟的整个硬件的静态配置,它的具体内容如下:
  
  typedef struct {
      cpu_config_t *cpu;
      machine_config_t *mach;
      mem_config_t mem;
      net_config_t net[NET_MAXNICNUM_PER_HOST];
      uart_config_t uart;
      log_config_t log;
      ARMword start_address;
     ARMword no_lcd;
      char config_file[MAX_FILE_NAME];
  } skyeye_config_t;
  
  skyeye_config_t结构包含了CPU核心配置信息-cpu、开发板配置信息-mach、memory map 配置信息-mem、网络芯片和网络环境配置信息-net、面向主机的输入输出配置信息-uart、测试记录输出配置信息-log、模拟执行起始地址配置信息-start_address、是否有LCD-no_lcd和记录文件名信息-config_file。这里面与模拟硬件紧密相关的是CPU核心配置信息、开发板配置信息、memory map 配置信息、网络芯片和网络环境、LCD配置信息。
  
  2. cpu_config_t数据结构
  描述CPU核心的结构定义在cpu_config_t数据结构中,具体内容如下:
  typedef struct {
      const char *cpu_arch_name;
      const char *cpu_name;
      ARMword cpu_val;
      ARMword cpu_mask;
      ARMword cachetype;
  } cpu_config_t;
  
  其具体描述解释如下:
  
  cpu_arch_name:描述了arm cpu体系结构的名称,根据ARM CPU内核的发展,其体系结构已经从Version1发展到了Version5,其最新版本为Version5TE。而Intel在其基础上又进行了自己的扩展体系结构StrongARM(基于ARM version4)和XScale(基于ARM version5)。目前SkyEye支持"armv3"、"armv4"、"arm5"、"arm5TE"、"xscale"的体系结构。
  cpu_name:描述了具体的arm cpu名称,如arm7TDMI、ARM720T、StrongARM1100/1110、XScale PXA2xx等。目前SkyEye支持"arm710"、"arm7TDMI"、"arm720t"、"sa1100"、"xscale"等。
  cpu_val:这是用来表示process id,一般而言每种具体的ARM CPU 都有一个ID,更详细的描述可参考《ARM Architecture Reference Manual》的B2-6。操作系统根据这个ID来识别cpu的类型并执行相关配置。
  cpu_mask:这是用来确定process id的屏蔽位数。由于process id中的某些位用于其它目的,并不用来表示具体的CPU类型。实际上操作系统在确定CPU类型时用到的数字是cpu_val&cpu_mask。

本文关键:硬件仿真实现之---SkyEye的设计实现
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top