📄 skyeye硬件模拟平台, 第一部分 skyeye 介绍.htm
字号:
xmlns:dw="http://www.ibm.com/developerWorks/">
<LI>通过SkyEye仿真集成环境可以很方便地进入到嵌入式系统软件学习和开发的广阔天地中。尤其对于缺少嵌入式硬件开发环境和软件开发环境的用户来说,它将是一个非常有效的学习工具和开发手段,因为SkyEye的整个软件系统都是Open
Source的,且基于GPL协议(μCOS-II除外)。因此,如果要学习Linux操作系统或者进行嵌入式系统开发,但苦于没有硬件支持,SkyEye仿真环境软件是一个很好的选择!
<LI>如果想研究与具体硬件无关的系统软件(如TCP/IP协议栈等),采用SkyEye可以有效地提高工作效率,因为你可以直接在μCOS-II和μCLinux
for SkyEye上进行开发和调试,而与具体硬件打交道的各种driver已经存在,且有源码级调试环境,只需关心高层的逻辑设计和实现就可以了。
<LI>SkyEye本身作为一个开放式的项目体系,可以划分为多个独立的子项目系统。通过参与SkyEye的各个子项目,与大家共同交流、协作,可以进一步学习、分析、精通Linux内核,掌握ARM嵌入式CPU编程。
</LI></UL>
<P>在32位嵌入式CPU领域中,ARM系列CPU所占比重很大,而ARM7TDMI是其中最广泛的一种ARM
CPU核,因此SkyEye首先选择了ARM7TDMI作为仿真的目标CPU核,当然将来SkyEye会支持更多种类的CPU。目前在SkyEye上可运行并进行源码级调试ARM
Linux、μCLinux、μC/OS-II操作系统和LwIP(一个著名的嵌入式TCP/IP实现)、MiniGUI(一个著名的嵌入式GUI系统)等系统软件。SkyEye可用于学习,分析,开发这些系统软件的实现,了解ARM嵌入式CPU编程。而这一切都可在一个纯软件的环境中完成。通过分析SkyEye本身实现,系统软件开发人员对ARM,8019as(NE2000兼容)以太网络芯片等硬件的了解也会更深入。</P>
<P>SkyEye并不能取代开发板等硬件的功能,但通过它可以比较容易进入到嵌入式软件的广阔天地中。由于SkyEye建立在GDB基础之上,使用者可以方便地使用GDB提供的各种调试手段对SkyEye仿真系统上的软件进行源码级的调试,还可以进行各种分析,如执行热点分析、程序执行覆盖度分析等。由于SkyEye提供了源代码和相关文档,有经验的用户完全可以修改和扩充SkyEye来满足自己的需求。</P>
<P><A name=IDAZEWNB><SPAN class=atitle2>二.SkyEye模拟硬件介绍
</SPAN></A><BR>目前SkyEye模拟了大量的硬件,包括CPU内核、存储器、存储器管理单元、缓存单元、串口、网络芯片、时钟等。下面做一简单介绍。</P>
<P><A name=IDA5EWNB><SPAN
class=atitle3>1.CPU和开发板系列</SPAN></A><BR>目前SkyEye可以模拟的CPU主要是基于ARM内核的CPU,包括ARM7TDMI,ARM720T,ARM9TDMI,ARM9xx,ARM10xx,StrongARM,XScale等。ARM7/9/10TDMI是ARM系列CPU的基本核心部分,它们不支持MMU/CACHE和一些扩展指令,是ARM
CPU基本核。ARM720T、ARM920T、ARM10xx、StrongARM、Xscale是建立在以上ARM
CPU核上,并扩展了MMU/CACHE和其它功能。各硬件开发公司可以根据它们的需求在上述CPU核上加上特定的扩展,形成基于各种ARM基本核心的特定CPU,如Atmel91X40和
ep7312,分别扩展了ARM7TDMI和ARM720T的内存控制和各种I/O控制器,简化了开发板的逻辑设计,大大增强了开发板的功能。</P>
<P>目前SkyEye模拟的开发板包括基于Atmel 91X40/AT91RM92 CPU的开发板,基于Crirus Logic
ep7312的开发板、基于StrongARM CPU的ADSBITSY开发板,基于XScale PXA250
CPU的LUBBOCK开发板、基于SAMSUNG S3C4510B/S3C44B0 CPU的开发板、基于SHARP LH7A400
CPU的开发板、基于Philip LPC22xx
CPU的开发板等。主要模拟了对应各个开发板的串口、时钟、RAM、ROM、LCD、网络芯片等硬件外设。</P>
<P><A name=IDAGFWNB><SPAN
class=atitle3>2.存储器管理单元和缓存单元</SPAN></A><BR>MMU(Memory Management
Unit)即存储器管理单元,是用来管理虚拟内存系统的硬件。MMU的两个主要功能是:将虚地址转换成物理地址;控制存储器的存取权限。MMU关掉时,虚地址直接输出到物理地址总线。MMU本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(Translation
Lookaside
Buffers)。TLB表中保存的是虚址及其对应的物理地址,权限,域和映射类型。当CPU对一虚拟地址进行存取时,首先搜索TLB表以查找对应的物理地址等信息,如果没有查到,则进行查找translation
table,称为Translation Table
Walk(简称TTW)。经过TTW过程后,将查到的信息保存到TLB。然后根据TLB表项的物理地址进行读写。CACHE是缓存单元,主要用于缓存内存中的数据,其读写速度远快于内存的读写速度,所以可以提高CPU的内存数据的访问效率。</P>
<P>write/read buffer硬件单元的作用与CACHE的作用类似。MMU、CACHE、write/read
buffer一般是高性能CPU的重要组成部分,且不同类型CPU的MMU、CACHE、write/read
buffer的逻辑行为也有一定的差异。为了支持模拟多种类型CPU的MMU/CACHE,SkyEye包含了一个通用的MMU/CACHE模拟实现。通过对一些参数的调整可以支持模拟多种类型的MMU/CACHE物理结构和逻辑行为。
</P>
<P><A name=IDANFWNB><SPAN
class=atitle3>3.网络芯片</SPAN></A><BR>目前SkyEye模拟了网络芯片8019AS,其特点是:NE2000兼容,内建
16KRAM缓冲区,10MB传输速率。虽然目前模拟的开发板上不一定有网络芯片8019AS,但我们可以在我们模拟的开发板上加上网络芯片8019AS的模拟。这样再加上在不同操作系统上的8019AS驱动程序,就可以方便地完成各种网络应用的开发和设计。目前已经在在基于Atmel91X40
CPU的开发板上实现了网络芯片8019AS扩展,并增加了μC/OS-II和μClinux的网络驱动程序,已经支持大量的网络应用程序,如LwIP
(一个TCP/IP协议栈实现)、nfs server/clinet、http server/client、telnet
server/client、ftp server/client等。</P>
<P><A name=IDATFWNB><SPAN
class=atitle2>三.SkyEye的设计实现</SPAN></A><BR>1.SkyEye设计原则</P>
<P>SkyEye软件的核心在目标模拟模块。为了提高模拟效率,且能够模拟更多的CPU、开发板和各种外设,方便开发人员进行开发和学习,SkyEye遵循如下的设计原则:</P>
<UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/">
<LI>用C语言编程,采用面向对象的方式定义各种要模拟的硬件;
<LI>定义抽象模拟硬件对象,最大化重用代码;
<LI>定义硬件配置脚本,使得不用改动SkyEye代码就可以灵活地调整各种硬件配置; </LI></UL>
<P>保持与GDB上层接口的一致性,这样可充分利用GDB强大的源代码级调试功能。</P>
<P><A name=IDA5FWNB><SPAN
class=atitle3>2.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>源码开放的嵌入式系统软件分析与实践——基于SkyEye和ARM开发平台
<P><A name=IDALGWNB><SPAN
class=atitle2>四.小结</SPAN></A><BR>本文主要介绍了SkyEye硬件模拟平台的起源、背景和发展状况。如果读者能够熟练掌握SkyEye的使用,则会提高开发、调试操作系统等的进度,特别是对操作系统、驱动程序如何与嵌入式硬件系统进行交互有更深刻的了解。SkyEye还在不断地发展之中,对SkyEye感兴趣的读者需要跟踪最新的SkyEye源码和相关文档,并可在SkyEye论坛上与SkyEye开发人员进行实时交流。</P>
<P><A name=resources><SPAN class=atitle2>参考资料 </SPAN></A>
<UL>
<LI>本文节自<A
href="http://www.china-pub.com/computers/common/info.asp?id=21879"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">《源码开放的嵌入式系统软件分析与实践——基于SkyEye和ARM开发平台》</A>一书的第三章,对 SkyEye
开源项目感兴趣的可以阅读本书。<BR>
<LI>在 <A href="http://www-900.ibm.com/developerworks/cn/linux/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">developerWorks Linux 专区</A> 可以找到更多为 Linux 开发者准备的参考资料。
<BR><BR></LI></UL>
<P></P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><A name=author1></A><SPAN class=atitle2>关于作者</SPAN><BR>陈渝,
清华大学,通过 <A href="mailto:yuchen@tsinghua.edu.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">yuchen@tsinghua.edu.cn</A>
可以和他联系。</TD></TR></TBODY></TABLE><BR><IMG height=10 alt=""
src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/c.gif" width=100 border=0><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD align=right width="100%"><A
href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part1/index.shtml#top">到页首</A></TD>
<TD width=5><IMG height=1 alt=""
src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/c.gif" width=5
border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#000000 colSpan=2><IMG height=1 alt=""
src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/c.gif" width=100
border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff colSpan=2><IMG height=8 alt=""
src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/c.gif" width=100
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD>
<FORM
action=/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument
method=post><INPUT type=hidden value="SkyEye硬件模拟平台, 第一部分: SkyEye 介绍"
name=ArticleTitle><INPUT type=hidden value=Linux name=Zone><INPUT
type=hidden
value=/developerWorks/cn/thankyou/thankyou_feedback.shtml
name=RedirectURL>
<SCRIPT language=javascript>document.write('<input type="HIDDEN" name="url" value="'+location.href+'">');</SCRIPT>
<A name=rating><B>您对这篇文章的看法如何?</B></A>
<TABLE cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD colSpan=5><IMG height=8 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files\c(1).gif"
width=100 border=0></TD></TR>
<TR vAlign=top>
<TD width="16%"><INPUT type=radio value=5
name=Rating>真棒!(5)</TD>
<TD width="20%"><INPUT type=radio value=4 name=Rating>好文章
(4)</TD>
<TD width="24%"><INPUT type=radio value=3 name=Rating>一般;尚可
(3)</TD>
<TD width="22%"><INPUT type=radio value=2 name=Rating>需提高
(2)</TD>
<TD width="18%"><INPUT type=radio value=1 name=Rating>太差!
(1)</TD></TR></TBODY></TABLE><BR><B>建议?</B><BR><TEXTAREA name=Comments rows=5 wrap=virtual cols=60></TEXTAREA><BR><BR><INPUT type=submit value=提交反馈意见></FORM></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff><IMG height=8 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files\c(1).gif" width=100
border=0></TD></TR></TBODY></TABLE></TD>
<TD width=1><IMG height=1 alt=""
src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/c.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right>(c) Copyright IBM Corp. 2001, (c) Copyright IBM China
2001, All Right Reserved</TD></TR>
<TR vAlign=top>
<TD class=bbg height=21> <A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&origin=dwhead">关于
IBM</A><SPAN class=divider> | </SPAN><A
class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/privacy/index.shtml&origin=dwhead">隐私条约</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/legal/index.shtml&origin=dwhead">使用条款</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/contact/index.shtml&origin=dwhead">联系
IBM</A></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 src="SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files/stats.js"
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台, 第一部分 SkyEye 介绍.files\c(2).gif" width=1
border=0></NOSCRIPT> </A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -