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

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

本文简介:

   ARMword *lcd_is_enable;    //turn lcd on?
   ARMword *lcd_addr_begin;  //the begining display mem addr of lcd
   ARMword *lcd_addr_end;   //the end   display mem addr of lcd
  };
  instr是记录当前的中断状态
  net_flag判断网络选项是否打开
  net_int用来记录网络中断号
  lcd_is_enable来记录LCD是否使能
  lcd_addr_begin记录lcd显存的起始位置
  lcd_addr_end记录显存的结束位置
  
  7. SkyEye逻辑执行流程
  了解SkEye的总体逻辑执行流程,对了解硬件的体系结构和软件/硬件的接口有较大帮助。从总体上,可把SkyEye逻辑执行流程按执行的时间顺序划分为两个阶段:
  
  1. SkyEye加载与配置处理过程
  
  2. SkyEye模拟执行过程
  
  第一阶段为第二阶段的正常执行做了充分的准备,具体的执行内容包括;
  
  读入带调试信息的操作系统执行文件(由GDB完成)
  根据配置文件skyeye.conf的信息配置模拟硬件
  如果skyeye.conf中存在binary image格式文件,加载这些文件
  根据操作系统执行文件的内容加载调试信息(由GDB完成)
  根据操作系统执行文件信息加载执行文件中的代码段和数据段等(由GDB完成)
  执行相关模拟硬件的初始化函数
  其中总的初始化函数是位于wrapper.c中的init函数,它调用如下函数完成整个模拟硬件的初始化工作:
  
  ARMul_EmulateInit:初始化与执行机器指令相关的数据ARMul_ImmedTable和ARMul_BitList
  ARMul_NewState:初始化结构为ARMul_State的全局变量state
  skyeye_option_init:初始化全局变量skyeye_config
  skyeye_read_config:读取配置文件skyeye.conf并根据配置文件进行相关配置
  nic_init:根据配置文件信息配置网络模拟环境
  skyeye_config.mach->mach_init(state, skyeye_config.mach):根据配置文件信息配置CPU和开发板的相关I/O函数
  ARMul_Reset(state):进一步初始化全局变量state,并根据配置文件信息配置MMU/CACHE和memory
  io_reset:初始化特定CPU和开发板的IO寄存器
  第二阶段根据特定硬件的配置描述,开始执行特定硬件模拟处理。整个过程围绕CPU执行指令展开,根据模拟硬件可分为如下几个阶段:
  
  CPU执行三级流水线处理,即取指令、译码、执行指令,主要处理集中在armemu.c中的ARMul_Emulate32/26函数。
  在执行指令过程中,如果有中断产生,CPU调整运行模式,并改变指令指向中断向量起始地址,主要处理集中在arminit.c中的函数ARMul_Abort函数、armemu.c中的ARMul_Emulate32/26函数。
  在执行指令过程中,如果指令是协处理器指令,则把指令转交给协处理器模拟模块进行进一步处理,主要处理集中在文件armcopro.c、xscale_copro.c等文件中。
  在执行指令过程中,如果发现指令是访问内存/IO的指令,则根据SkyEye模拟的特定CPU是否有MMU/CACHE分别进行处理:
  如果CPU有MMU/CACHE,则进入MMU/CACHE模拟模块,如果还需要内存访问,则进入memory模拟模块处理。如果访问地址属于IO地址空间,则转到特定CPU和开发板的IO模拟模块处理。
  如果CPU没有MMU/CACHE,则直接进入memory模拟模块处理。如果访问地址属于IO地址空间,则转到特定CPU和开发板的IO模拟模块处理。
  处理访问内存/IO的指令的相关内容集中在armvirt.c;与MMU/CACHE处理、read/write buffer(用于StrongARM和XScale体系结构的模拟)处理相关的文件包括armmmu.[ch]、mmu/*.[ch];与访问memory模拟有关的内容主要集中在armmem.[ch]中。
  
  如果要执行IO地址访问,这具体的处理过程由特定CPU和开发板IO模拟模块中的read/write_byte/halfword/word函数处理。

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

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

go top