• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C/C++/Linux/Embedded

            學習也是一種樂趣
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            • 隨筆 - 4
            • 文章 - 4
            • 評論 - 4
            • 引用 - 0

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            文章檔案

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            SkyEye硬件模擬平臺, 第一部分: SkyEye 介紹

            ?

            developerWorks
            文檔選項
            將此頁作為電子郵件發送

            將此頁作為電子郵件發送

            未顯示需要 JavaScript 的文檔選項


            拓展 Tomcat 應用

            下載 IBM 開源 J2EE 應用服務器 WAS CE 新版本 V1.1


            級別: 初級

            陳渝 (yuchen@tsinghua.edu.cn)清華大學

            2004 年 9 月 01 日

            ?

            一.SkyEye介紹

            1.SkyEye的起源和發展

            2002年11月,一個偶然的機會,一群操作系統的愛好者在網上進行聊天,成立了一個TM-Linux興趣小組,希望要做一些感興趣的事情。當時在清華大學計算機系做博士后的陳渝提出做一個用軟件實現的嵌入式開發板硬件模擬器,可以在模擬器上運行各種操作系統,這樣就可以在沒有開發板的情況下學習和研究操作系統。一開始就陳渝一人做,首先他了解了當前國際上的一些類似的項目,發現著名的μCLinux組織實現了一個armulator模擬器軟件(在Linux系統上運行),可以模擬Ateml AT91(基于ARM7TDMI CPU)開發板,μCLinux可以在armulator(其網址為http://www.uclinux.org/pub/uCLinux/utilities/armulator/)上運行。于是陳渝以此為基點,借鑒armulator的實現,提出了SkyEye項目,其目標是讓SkyEye仿真多種主流的嵌入式開發板和外設,實現一個可擴展的硬件模擬框架,讓更多的嵌入式操作系統可以在SkyEye上運行。SkyEye項目于2002年12月1日正式建立后,陳渝完成的第一件工作是把armulator移植到了cygwin/windows環境下,其成果被μCLinux組織接收。接下來清華大學計算機系碩士生李明加入到SkyEye的開發中,8天后,SkyEye的第一個版本推出,再過了4天,μC/OS-II for SkyEye推出。在這期間,SkyEye的網站也建立起來了。緊接著,楊曄、王利明、尹首一等在校學生也加入到SkyEye的開發中,給SkyEye帶來了新的活力,SkyEye進入了新的發展階段,目前通過訪問SkyEye的網站(http://www.skyeye.org/)和在linux公社上的SkyEye論壇( http://www.linuxfans.org)可以了解到SkyEye的最新進展并對有關嵌入式系統開發方面的問題進行交流,還可以到 http://gro.clinux.org/projects/skyeye/ 下載最新的SkyEye相關軟件和文檔。

            2.SkyEye的背景

            如果你看過電影"黑客帝國"(又稱"matrix"),相信電影描述的虛幻世界會深深地吸引你,至少它是我們看過最有想象力的科幻電影之一。也許我們可以把SkyEye看作一個"matrix ",把運行在SkyEye上的各種程序看成是這個"matrix"中的蕓蕓眾生。我們創造SkyEye和編寫運行在SkyEye上運行的程序就是為了洞悉計算機的奧秘,嘗嘗當"造物主"的感覺。當看到各種軟件Linux、μCLinux、μC/OS-II...在SkyEye上"愉快"地運行時,那種感覺真是太奇妙了。

            對于那些想進行嵌入式系統軟件開發和學習,或者想研究嵌入式Linux等操作系統和一些底層系統軟件(如TCP/IP等)的研究和開發人員來說,可能存在如下幾方面的問題:(1)經常苦于經費不足,缺少足夠的硬件開發板和完善的軟件開發環境,相關的書籍對一些最新軟件的分析還不夠全面,無法深入研究和開發嵌入式軟件。(2)高層次的軟件設計和開發一般不用太考慮底層硬件的實現細節,如果直接處于一個具體的硬件環境下,在開發和研究中可能會陷入硬件的具體細節中不能自拔,而不能把精力放到高層次的軟件設計和開發上。(3)如果硬件開發環境不太穩定(這種情況經常見到),且對具體的硬件不是很了解,則可能在排除問題上花費大量的不必要的時間。(4)如果你想自己嘗試設計一個操作系統,則先在一個提供源碼級調試的軟件仿真器上進行開發,可能會大大提高你的開發進度。

            對于想了解、學習一般操作系統的實現原理,Linux/μCLinux操作系統或TCP/IP等系統級軟件的實現的人員,目前一般采用的方法是看書和讀源代碼,這是一種靜態的學習方法,效率較低,比較枯燥,缺少親自實踐的感覺。要想深入分析和開發軟件,就要動手編程,不能只是看看書,讀讀代碼,只有通過親手實踐才能夠掌握軟件設計的核心內容。上面所指出的問題和需求促使SkyEye項目的誕生。

            3.SkyEye的目標和意義

            SkyEye是一個開源軟件(OpenSource Software)項目,中文名字是"天目"。SkyEye的目標是在通用的Linux和Windows平臺上實現一個純軟件集成開發環境,模擬常見的嵌入式計算機系統(這里假定"仿真"和"模擬"的意思基本相同);可在SkyEye上運行μCLinux以及μC/OS-II等多種嵌入式操作系統和各種系統軟件(如TCP/IP,圖形子系統,文件子系統等),并可對它們進行源碼級的分析和測試。

            純軟件的模擬器有許多種,如模擬一個芯片時序邏輯的模擬器、只模擬CPU指令的模擬器、模擬整個硬件開發板的模擬器、模擬一個PDA的模擬器等。存在一些純軟件的仿真器或模擬器,如Stanford大學的SimOS模擬器,它仿真的是MIPS系列CPU和相關外設,可以在其上運行SGI公司的Irix操作系統和軟件,目前基本上停止了進一步的開發;PSIM是一個仿真PowerPC指令集的模擬器,目前只支持簡單的命令行應用程序;xcopilot是一個PDA模擬器,它是由Greg Hewgill出于個人喜好編寫的,它仿真的是M68K CPU,通過它可以給基于PalmOS的軟件開發者提供一個模擬開發環境。Bochs是一個仿真x86 CPU的開源項目,目前還支持AMD64 CPU,在它上面可以運行Linux操作系統。其它一些商業的仿真軟件如vmware和virtualPC可以仿真一個真實的x86計算機,而Virtutech Simics仿真器可以仿真多種CPU和硬件,功能強大,可用于硬件和系統軟件的評測。

            SkyEye是一個指令級模擬器,可以模擬多種嵌入式開發板,可支持多種CPU指令集,在SkyEye上運行的操作系統意識不到它是在一個虛擬的環境中運行,而且開發人員可以通過SkyEye調試操作系統和系統軟件。由于SkyEye的目標不是驗證硬件邏輯,而是協助開發、調試和學習系統軟件,所以在實現上SkyEye與真實的硬件環境相比還是有一定差別的。SkyEye在時鐘節拍的時序上不保證與硬件完全相同,對軟件透明的一些硬件仿真進行了一定的簡化。這樣帶來的好處是SkyEye的執行效率更高。SkyEye的推出具有下面三方面的意義:

            • 通過SkyEye仿真集成環境可以很方便地進入到嵌入式系統軟件學習和開發的廣闊天地中。尤其對于缺少嵌入式硬件開發環境和軟件開發環境的用戶來說,它將是一個非常有效的學習工具和開發手段,因為SkyEye的整個軟件系統都是Open Source的,且基于GPL協議(μCOS-II除外)。因此,如果要學習Linux操作系統或者進行嵌入式系統開發,但苦于沒有硬件支持,SkyEye仿真環境軟件是一個很好的選擇!
            • 如果想研究與具體硬件無關的系統軟件(如TCP/IP協議棧等),采用SkyEye可以有效地提高工作效率,因為你可以直接在μCOS-II和μCLinux for SkyEye上進行開發和調試,而與具體硬件打交道的各種driver已經存在,且有源碼級調試環境,只需關心高層的邏輯設計和實現就可以了。
            • SkyEye本身作為一個開放式的項目體系,可以劃分為多個獨立的子項目系統。通過參與SkyEye的各個子項目,與大家共同交流、協作,可以進一步學習、分析、精通Linux內核,掌握ARM嵌入式CPU編程。

            在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兼容)以太網絡芯片等硬件的了解也會更深入。

            SkyEye并不能取代開發板等硬件的功能,但通過它可以比較容易進入到嵌入式軟件的廣闊天地中。由于SkyEye建立在GDB基礎之上,使用者可以方便地使用GDB提供的各種調試手段對SkyEye仿真系統上的軟件進行源碼級的調試,還可以進行各種分析,如執行熱點分析、程序執行覆蓋度分析等。由于SkyEye提供了源代碼和相關文檔,有經驗的用戶完全可以修改和擴充SkyEye來滿足自己的需求。





            回頁首


            二.SkyEye模擬硬件介紹

            目前SkyEye模擬了大量的硬件,包括CPU內核、存儲器、存儲器管理單元、緩存單元、串口、網絡芯片、時鐘等。下面做一簡單介紹。

            1.CPU和開發板系列

            目前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控制器,簡化了開發板的邏輯設計,大大增強了開發板的功能。

            目前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、網絡芯片等硬件外設。

            2.存儲器管理單元和緩存單元

            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的內存數據的訪問效率。

            write/read buffer硬件單元的作用與CACHE的作用類似。MMU、CACHE、write/read buffer一般是高性能CPU的重要組成部分,且不同類型CPU的MMU、CACHE、write/read buffer的邏輯行為也有一定的差異。為了支持模擬多種類型CPU的MMU/CACHE,SkyEye包含了一個通用的MMU/CACHE模擬實現。通過對一些參數的調整可以支持模擬多種類型的MMU/CACHE物理結構和邏輯行為。

            3.網絡芯片

            目前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等。





            回頁首


            三.SkyEye的設計實現

            1.SkyEye設計原則

            SkyEye軟件的核心在目標模擬模塊。為了提高模擬效率,且能夠模擬更多的CPU、開發板和各種外設,方便開發人員進行開發和學習,SkyEye遵循如下的設計原則:

            • 用C語言編程,采用面向對象的方式定義各種要模擬的硬件;
            • 定義抽象模擬硬件對象,最大化重用代碼;
            • 定義硬件配置腳本,使得不用改動SkyEye代碼就可以靈活地調整各種硬件配置;

            保持與GDB上層接口的一致性,這樣可充分利用GDB強大的源代碼級調試功能。

            2.SkyEye的總體結構

            SkyEye基于GDB/ARMulator(目前由David McCullough 維護),并進行了全面的改變和擴展。SkyEye建立在GNU GDB的底層,可以模仿多種完整的嵌入式計算機系統,目前模擬的硬件包括CPU、內存、I/O寄存器、時鐘、UART、網絡芯片、MMU、CACHE,將來還會模擬 LCD、USB等各種硬件。在SkyEye上運行的操作系統和各種系統軟件"意識"不到它們是在一個虛擬的計算機系統上運行。

            SkyEye從總體上分為四個層次:

            • 用戶接口模塊:包括命令行用戶界面和圖形用戶界面,完成處理用戶的輸入命令,并把相關調試數據輸出給用戶的任務。這一部分基本上直接利用了GDB的用戶接口模塊,并在此基礎上有一定的擴充。
            • 符號處理模塊:主要處理執行文件的頭信息,解釋執行文件中內嵌的debuger調試信息,對符號表的管理,對源代碼表達式的解析,定位源代碼中的語句位置和機器碼的位置關系等。這一部分也是直接利用了GDB的符號處理模塊,也正是有了這個模塊的支持,SkyEye可以支持源碼級調試。
            • 目標控制模塊:主要完成執行控制(如中斷程序的執行,設置中斷條件等),程序棧結構分析,對具體目標硬件的控制(如本地調試、遠程調試和模擬調試的控制)。這一部分完成對SkyEye上運行的軟件的控制,提供了多種調試手段。
            • 目標模擬模塊:這一部分是SkyEye的核心。它的功能是模仿計算機系統中的主要硬件(包括CPU、內存和各種硬件外設等)的執行,對執行文件的機器指令進行解釋,并模擬執行每一條機器指令,產生相應的硬件響應等。




            回頁首


            四.小結

            本文主要介紹了SkyEye硬件模擬平臺的起源、背景和發展狀況。如果讀者能夠熟練掌握SkyEye的使用,則會提高開發、調試操作系統等的進度,特別是對操作系統、驅動程序如何與嵌入式硬件系統進行交互有更深刻的了解。SkyEye還在不斷地發展之中,對SkyEye感興趣的讀者需要跟蹤最新的SkyEye源碼和相關文檔,并可在SkyEye論壇上與SkyEye開發人員進行實時交流。



            參考資料



            關于作者

            陳渝, 清華大學,通過 yuchen@tsinghua.edu.cn 可以和他聯系。

            posted on 2007-03-12 16:28 陳長虹 閱讀(170) 評論(0)  編輯 收藏 引用 所屬分類: Linux

            久久久噜噜噜久久中文字幕色伊伊| 久久精品国产AV一区二区三区 | 99久久免费只有精品国产| 久久久无码一区二区三区| 国内精品伊人久久久久AV影院| 国产情侣久久久久aⅴ免费| 国产69精品久久久久9999| 亚洲精品tv久久久久| 久久久久国产精品熟女影院| 国产精品免费久久久久久久久 | 无码人妻少妇久久中文字幕蜜桃| 日韩AV无码久久一区二区| 久久er国产精品免费观看2| 伊人情人综合成人久久网小说| 午夜精品久久久久久中宇| 亚洲精品无码久久久久AV麻豆| 国产精品久久成人影院| 精品久久久久久久国产潘金莲 | 久久美女人爽女人爽| 日韩久久久久中文字幕人妻 | 久久综合偷偷噜噜噜色| 99久久精品毛片免费播放| 久久99九九国产免费看小说| 久久精品嫩草影院| 无码国产69精品久久久久网站| 日韩美女18网站久久精品| 伊人色综合久久天天| 99精品久久精品| 久久久久亚洲AV无码麻豆| 亚洲精品无码久久久影院相关影片 | 精品免费tv久久久久久久| 久久久久久国产精品无码超碰| 久久久久人妻一区二区三区| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产真实乱对白精彩久久| 久久福利青草精品资源站| 久久不见久久见免费视频7| 久久亚洲中文字幕精品有坂深雪| 影音先锋女人AV鲁色资源网久久 | 久久精品午夜一区二区福利| 精品人妻伦九区久久AAA片69 |