?? 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 + -