⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skyeye硬件模拟平台,第三部分 硬件仿真实现之一.htm

📁 你想没有硬件就跑μc OS吗
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                <TD width=160 bgColor=#666666 height=1><IMG height=1 alt="" 
                  src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" width=160></TD></TR>
              <TR>
                <TD>
                  <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
                    <TBODY>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#IDAVLMKC">一. 
                        SkyEye的总体结构</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#IDABMMKC">二. 
                        SkyEye目标模拟模块功能划分</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#IDAWOMKC">三. 
                        SkyEye关键数据结构</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#IDA1JRKC">5. 
                        net_config_t数据结构</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR><!--Standard links for every dw-article-->
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#resources">参考资料 
                        </A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#author1">关于作者</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#rating">对本文的评价</A></TD></TR>
                    <TR>
                      <TD><IMG height=10 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
            <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
              <TBODY>
              <TR>
                <TD width=160 bgColor=#000000 height=1><IMG height=1 alt="" 
                  src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" width=160></TD></TR>
              <TR>
                <TD align=middle 
                background="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/bg-gold.gif" 
                height=5><B>相关内容:</B></TD></TR>
              <TR>
                <TD width=160 bgColor=#666666 height=1><IMG height=1 alt="" 
                  src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" width=160></TD></TR>
              <TR>
                <TD>
                  <TABLE cellSpacing=0 cellPadding=1 width=160 border=0>
                    <TBODY>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part1/index.shtml" 
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                        xmlns:dw="http://www.ibm.com/developerWorks/" 
                        trackclick="no">SkyEye硬件模拟平台, 第一部分: SkyEye 介绍</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part2/index.shtml" 
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                        xmlns:dw="http://www.ibm.com/developerWorks/" 
                        trackclick="no">SkyEye硬件模拟平台,第二部分: 安装与使用</A></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR>
                    <TR>
                      <TD height=1><IMG height=5 alt="" 
                        src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                      width=160></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
            <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
              <TBODY>
              <TR>
                <TD width=150 bgColor=#000000 colSpan=2 height=2><IMG height=2 
                  alt="" src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                width=160></TD></TR>
              <TR>
                <TD width=150 bgColor=#ffffff colSpan=2 height=2><IMG height=2 
                  alt="" src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/c.gif" 
                width=160></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><SPAN 
      class=atitle2>SkyEye的设计实现</SPAN><BR>
      <TABLE cellSpacing=0 cellPadding=0 border=0>
        <TBODY>
        <TR vAlign=top align=left>
          <TD>
            <P>级别: 中级</P></TD></TR></TBODY></TABLE>
      <P><A 
      href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml#author1"><NAME>陈渝</NAME></A> 
      (<A href="mailto:yuchen@tsinghua.edu.cn">yuchen@tsinghua.edu.cn</A>) 
      <BR>清华大学<BR>2004 年 10 月 </P>
      <BLOCKQUOTE><ABSTRACT-EXTENDED>本系列文章的第三部分主要介绍了SkyEye硬件模拟平台的实现细节。主要内容包括SkyEye的总体设计、SkyEye的可扩展框架、SkyEye的关键数据结构、SkyEye对各种CPU的模拟实现、SkyEye对各种外设的模拟实现、如何安装使用SkyEye以及如何扩展SkyEye的仿真模块等。对SkyEye的深入了解,有助于对嵌入式硬件系统有更深入的认识,特别是对操作系统、驱动程序如何与嵌入式硬件系统进行交互有更深刻的了解。</ABSTRACT-EXTENDED></BLOCKQUOTE>
      <P>前两篇文章分别介绍了 SkyEye 项目及其安装,下面的几篇文章将对其设计实现展开讨论。</P>
      <P><A name=IDAVLMKC><SPAN class=atitle2>一. 
      SkyEye的总体结构</SPAN></A><BR>SkyEye基于GDB/ARMulator(目前由David McCullough 
      维护),并进行了全面的改变和扩展。SkyEye建立在GNU 
      GDB的底层,可以模仿多种完整的嵌入式计算机系统,目前模拟的硬件包括CPU、内存、I/O寄存器、时钟、UART、网络芯片、MMU、CACHE,将来还会模拟 
      LCD、USB等各种硬件。在SkyEye上运行的操作系统和各种系统软件"意识"不到它们是在一个虚拟的计算机系统上运行。 </P>
      <P>SkyEye从总体上分为四个层次:</P>
      <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:dw="http://www.ibm.com/developerWorks/">
        <LI>用户接口模块:包括命令行用户界面和图形用户界面,完成处理用户的输入命令,并把相关调试数据输出给用户的任务。这一部分基本上直接利用了GDB的用户接口模块,并在此基础上有一定的扩充。 

        <LI>符号处理模块:主要处理执行文件的头信息,解释执行文件中内嵌的debuger调试信息,对符号表的管理,对源代码表达式的解析,定位源代码中的语句位置和机器码的位置关系等。这一部分也是直接利用了GDB的符号处理模块,也正是有了这个模块的支持,SkyEye可以支持源码级调试。 

        <LI>目标控制模块:主要完成执行控制(如中断程序的执行,设置中断条件等),程序栈结构分析,对具体目标硬件的控制(如本地调试、远程调试和模拟调试的控制)。这一部分完成对SkyEye上运行的软件的控制,提供了多种调试手段。 

        <LI>目标模拟模块:这一部分是SkyEye的核心。它的功能是模仿计算机系统中的主要硬件(包括CPU、内存和各种硬件外设等)的执行,对执行文件的机器指令进行解释,并模拟执行每一条机器指令,产生相应的硬件响应等。 
        </LI></UL>
      <P><A name=IDABMMKC><SPAN class=atitle2>二. 
      SkyEye目标模拟模块功能划分</SPAN></A><BR></P>
      <P><A name=IDAHMMKC><B></B></A><BR><IMG height=422 alt="" 
      src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之一.files/image001.gif" width=440 border=0 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:dw="http://www.ibm.com/developerWorks/"></P>
      <P>SkyEye目标模拟模块模拟的硬件逻辑结构图如图 0 1所示。SkyEye目标模拟模块从功能上可分为如下几大模块:</P>
      <UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:dw="http://www.ibm.com/developerWorks/">
        <LI>配置选项解析和初始化模块:在模拟硬件开始运行前,根据配置文件的选项,控制对模拟硬件的配置和初始化。相关文件包括: 
        <UL>
          <LI>arminit.c:控制各种模拟硬件的初始化 
          <LI>skyeye_config.[ch]:解析配置文件的选项行 
          <LI>skyeye_options.c:根据各种硬件的选项,完成各种配置 
          <LI></LI></UL>
        <LI>处理器模拟宏模块:主要完成与处理器体系结构相关的模拟,它可细分为:CPU指令模拟执行模块、MMU/CACHE模拟模块、CoProcessor(又称协处理器)模拟模块。 

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

        <UL>
          <LI>armemu.[ch]:模拟CPU的3级流水线,并具体执行各种指令 </LI></UL>
        <LI>MMU/CACHE模拟模块:本模块分为两部分:与具体CPU类型无关的MMU/CACHE模拟子模块和与具体CPU类型相关的模拟子模块。主要的任务是:根据配置文件进行初始化;进行MMU/CACHE模拟;执行与MMU/CACHE相关的指令。如果CPU指令模拟模块执行读写存储器的操作指令,则转到MMU/CACHE模拟模块。如果模拟的CPU类型不支持MMU(如ARM7TDMI),则SkyEye会根据将访问的地址,直接转到MEMORY模拟模块或开发板IO模拟模块;否则转到具体CPU类型相关的模拟子模块进行MMU/CACHE模拟。主要的文件包括两部分: 

        <UL>
          <LI>与具体CPU类型无关的MMU/CACHE模拟子模块: 
          <UL>
            <LI>armvirt.c、armmmu.c、mmu/*.[ch] </LI></UL>
          <LI>与具体CPU类型相关的MMU/CACHE模拟子模块:
          <UL>
            <LI>sa_mmu.[ch]:模拟strongarm的MMU/CACHE 
            <LI>arm7100_mmu.[ch]:模拟arm7[12]0T的MMU/CACHE 
            <LI>xscale_copro.c:模拟xscale的MMU/CACHE 
            <LI>arm920t_mmu.[ch]:模拟arm920t的MMU/CACHE </LI></UL></LI></UL>
        <LI>CoProcessor(又称协处理器)模拟模块:其主要任务是:完成各种协处理器的初始化;执行各种协处理器的指令。实际上MMU/CACHE模拟模块的一部分工作是模拟ARM的第15号协处理器,它的主要功能是配置MMU/CACHE等。主要的文件包括: 

        <UL>
          <LI>armcopro.c:根据配置信息,完成对ARM协处理器的初始化配置 
          <LI>xscale_copro.c:模拟xscale的协处理器cp13、cp14、cp15 
          <LI>sa_mmu.[ch]、arm7100_mmu.[ch]:模拟strongarm、ep7312的协处理器cp15 
          <LI>arm920t_mmu.[ch]:模拟arm920t的协处理器cp13、cp14、cp15 </LI></UL>
        <LI>IO模拟宏模块:本模块包含各种逻辑行为各异的外设模拟,主要包括系统IO模拟模块、网络芯片模拟模块、LCD模拟模块等。 
        <LI>系统IO模拟模块:本模块的主要任务包括:根据配置文件进行IO和外设初始化;完成各种外部IO设备的模拟(如时钟计数器累加、产生中断、LCD显示等);进行各种特定CPU和外设的IO寄存器读写的模拟。本模块与各种具体的开发板和CPU有很紧密的联系,主要的文件包括: 

        <UL>
          <LI>armio.[ch]:建立在各个特定模拟子模块上的抽象层模块 
          <LI>skyeye_mach_at91.c:模拟Atmel AT91X40开发板 
          <LI>skyeye_mach_ep7312.c:模拟cirrus ep7312开发板 
          <LI>skyeye_mach_pxa.c:模拟intel xscale lubbock开发板 
          <LI>skyeye_mach_s3c4510b.c:模拟基于samsung s3c4510b的开发板 
          <LI>skyeye_mach_s3c44b0.c:模拟基于samsung s3c44b0的开发板 
          <LI>skyeye_mach_sa.c:模拟基于intel strongam的adsbitsy开发板 
          <LI>skyeye_mach_lpc.c:模拟基于philip lpc2249的开发板 
          <LI>skyeye_mach_sharp.c:模拟基于sharp lh7a400的开发板 
          <LI>skyeye_mach_at91rm92.c:模拟基于atmel at91rm9200的开发板 
          <LI>skyeye_mach_cs89712.c:模拟基于cs89712的开发板 </LI></UL>
        <LI>网络芯片模拟模块:本模块主要完成了对8019AS网络芯片的模拟工作,主要任务包括:模拟8019AS的控制逻辑、8019AS与具体开发板IO模拟模块的接口、虚拟网络输入输出接口处理。主要的文件包括: 

        <UL>
          <LI>skyeye-ne2k.[ch]:8019AS的硬件逻辑模拟 
          <LI>skyeye_mach_at91.c:部分内容完成接收虚拟网络输入处理模拟 
          <LI>skyeye_net_tuntap.c:配置tuntap虚拟网络的接口 
          <LI>skyeye_net_vnet.c:配置vnet虚拟网络的接口 
          <LI>vnet.c、if_vnet.h:独立存在的软件包,vnet虚拟网络的具体实现 </LI></UL>
        <LI>LCD/TouchScreen模拟模块:本模块主要完成LCD/TouchScreen控制逻辑的模拟,是目前唯一需要GUI支持的模块,它的主要任务是:配置LCD/TouchScreen硬件模拟、模拟LCD/TouchScreen控制逻辑。有关LCD/TouchScreen模拟相关的文件包括: 

        <UL>
          <LI>skyeye_lcd.[ch]: LCD/TouchScreen配置和LCD/TouchScreen模拟的通用控制逻辑 
          <LI>skyeye_mach_*.c:与开发板相关LCD/TouchScreen的控制逻辑和中断处理,目前支持ep7312和pxa255的skyeye模拟。 
          </LI></UL>
        <LI>MEMORY模拟模块:本模块与具体的CPU和开发板无关,它的主要任务包括:根据配置文件进行内存初始化,并加载binary 
        image文件;进行RAM/ROM读写的模拟。主要的文件包括: 
        <UL>
          <LI>armmem.[ch]:主要完成RAM/ROM读写模拟 </LI></UL></LI></UL>
      <P><A name=IDAWOMKC><SPAN class=atitle2>三. 
      SkyEye关键数据结构</SPAN></A><BR>SkyEye目标模拟模块中,各种数据结构很多,用于模拟硬件总体机构定义的主要数据结构有skyeye_config_t和ARMul_State。把握这两个数据结构,是理解整个skyeye模拟的硬件体系结构的关键,在这两个数据结构上进行进一步细化分析,则可充分了解skyeye的硬件体系结构细节。</P>
      <P><A name=IDA2OMKC><SPAN class=atitle3>1. 
      skyeye_config数据结构</SPAN></A><BR>skyeye_config_t结构描述了SkyEye模拟的整个硬件的静态配置,它的具体内容如下:</P><A 
      name=IDACPMKC><B></B></A><BR>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -