<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 開(kāi)放源碼的嵌入式仿真環(huán)境SkyEye(一)

開(kāi)放源碼的嵌入式仿真環(huán)境SkyEye(一)

——
作者:王利明 宋振宇等 時(shí)間:2007-04-18 來(lái)源: 收藏
摘要:綜述開(kāi)放源碼的嵌入式仿真環(huán)境SkyEye:介紹SkyEye的背景、目標和存在的意義,對目前SkyEye本身進(jìn)行簡(jiǎn)要的技術(shù)分析;介紹SkyEye上已經(jīng)移植成功的操作系統和典型應用。講述SkyEye正在開(kāi)展的工作和將來(lái)的發(fā)展計劃。 
    關(guān)鍵詞:SkyEye 仿真 μClinuxμ/OS-II Linux 

1 SkyEye的目標與意義

1.1 SkyEye產(chǎn)生的背景

操作系統是軟件產(chǎn)業(yè)的基礎和龍頭,能左右軟件產(chǎn)業(yè)發(fā)展的方向,是世界軟件產(chǎn)業(yè)最大的利潤來(lái)源。對于后PC時(shí)代和普適計算(pervasive computing)而言,無(wú)處不在,其中關(guān)鍵的軟件核心技術(shù)包括嵌入式操作系統和網(wǎng)絡(luò )互聯(lián)中間件等。

對于想進(jìn)行軟件開(kāi)發(fā)和學(xué)習,或者想研究嵌入式Linux等操作系統和一些底層系統軟件(如TCP/IP等)的研究和開(kāi)發(fā)人員來(lái)說(shuō),可能存在如下幾方面的問(wèn)題:①經(jīng)??嘤诮?jīng)費不足,缺少足夠的硬件開(kāi)發(fā)板和完善的軟件開(kāi)發(fā)環(huán)境;相關(guān)的書(shū)籍對一些最新軟件的分析還不夠全面,無(wú)法深研究和開(kāi)發(fā)嵌入式軟件。②高層次的軟件設計和開(kāi)發(fā)一般不用過(guò)多考慮底層硬件的實(shí)現細節,如果直接處于一具體的硬件環(huán)境下,在開(kāi)發(fā)和研究中可能會(huì )陷入硬件的具體細節中不能自拔,而不能把精力放到高層次的軟件設計和開(kāi)發(fā)上。③如果硬件開(kāi)發(fā)環(huán)境不太穩定(這種情況經(jīng)常見(jiàn)到),且對身體的硬件不是很了解,則可能在排除問(wèn)題上花費大量不必要的時(shí)間。

對于想了解、學(xué)習一般操作系統的實(shí)現原理、Linux/μClinux操作系統或TCP/IP等系統級軟件的實(shí)現的人員,目前一般采用的方法是看書(shū)和讀源代碼。這是一種靜態(tài)的學(xué)習方法,但效率較低,比較枯燥,缺少一種動(dòng)態(tài)和親自實(shí)踐的感覺(jué)。要想深入分析和開(kāi)發(fā)軟件,就要動(dòng)手編程,不能只是看看書(shū),讀讀代碼,只有通過(guò)親手實(shí)踐才能夠掌握軟件設計的核心內容。

上面所指出的問(wèn)題和需求促使了SkyEye項目的誕生。

1.2 SkyEye的目標和意義

SkyEye是開(kāi)源軟件(OpenSource Software)項目,中文名字是“天目”。SkyEye的目標是在通用的Linux和Windows平臺實(shí)現一個(gè)仿真集成開(kāi)發(fā)環(huán)境,模擬常見(jiàn)的嵌入式計算機系統;可在SkyEye上運行μClinux以及μC/OS-II等多種嵌入式操作系統和各種系統軟件(如TCP/IP、圖形子系統、文件子系統等),并可對它們進(jìn)行源碼級的分析和測試。SkyEye的推出具有下面三方面的意義。

①通過(guò)SkyEye仿真集成環(huán)境可以很方便地進(jìn)入嵌入式系統軟件學(xué)習和開(kāi)發(fā)的廣闊天地中。尤其對于缺少嵌入式硬件開(kāi)發(fā)環(huán)境和軟件開(kāi)發(fā)環(huán)境的用戶(hù)來(lái)說(shuō),它將是一個(gè)非常有效的學(xué)習工具和開(kāi)發(fā)手段,因為SkyEye的整個(gè)軟件系統都是Open Source的,且基于GPL協(xié)議(μC/OS-II除外)。因此,如果要學(xué)習Linux操作系統或者進(jìn)行嵌入式系統開(kāi)發(fā),但苦于沒(méi)有硬件支持,SkyEye仿真環(huán)境軟件是一個(gè)很好的選擇!

②如果想研究與具體硬件無(wú)關(guān)的系統軟件(如TCP/IP協(xié)議棧等),采用SkyEye可以有效地提高工作效率,因為你可以直接在μCOS-II和μClinux for SkyEye上進(jìn)行開(kāi)發(fā)和調試,而與具體硬件打交道的各種Driver已經(jīng)存在,且有源碼級調試環(huán)境,只需關(guān)心高層的邏輯設計和實(shí)現就可以了。

③SkyEye本身作為一個(gè)開(kāi)放式的項目體系,可以劃分為多個(gè)獨立的子項目系統。通過(guò)參與SkyEye的各個(gè)子項目,與大家共同交流、協(xié)議,可以進(jìn)一步學(xué)習、分析、精通Linux內核,掌握ARM嵌入式CPU編程。

在32位嵌入式CPU領(lǐng)域中,ARM系列CPU所占比例相當大,而ARM7TDMI是其中使用最廣泛的CPU之一,因此,SkyEye首先選擇了ARM7TDMI作為仿真的目標CPU。目前,SkyEye上可運行并進(jìn)行源碼級調試的有μClinux、μC/OS-II操作系統和LwIP(一個(gè)著(zhù)名的嵌入式TCP/IP實(shí)現)、ARM Linux等系統軟件。SkyEye可用于學(xué)習、分析、開(kāi)發(fā)這些系統軟件,了解ARM嵌入式CPU編程,而這一切都可在一個(gè)集成環(huán)境中完成。如果能夠改進(jìn)SkyEye本身,則大家對ARM、8019Ethernet網(wǎng)絡(luò )芯片等硬件的了解也會(huì )更深入。

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

2 SkyEye的技術(shù)分析

2.1 SkyEye總體結構

SkyEye基于GDB/ARMulator,模仿了一個(gè)完整的嵌入式系統,目前包括CPU、內存、I/O寄存器、時(shí)鐘、UART、網(wǎng)絡(luò )芯片、MMU、Cache,將來(lái)還會(huì )仿真LCD、USB等各種硬件。在SkyEye上運行的操作系統和各種系統軟件“意識”不到它們是在一個(gè)虛擬的計算機系統上運行。

SkyEye從總體上分為四個(gè)層次。

①用戶(hù)接口模塊:包括命令行用戶(hù)界面和圖形用戶(hù)界面,及時(shí)處理用戶(hù)的輸入命令,并把相關(guān)調試數據輸出給用戶(hù)。

②符號處理模塊:主要處理執行文件的頭信息,解釋執行文件中嵌的debuger調試信息,管理符號表,解析源代碼表達式,定位源代碼中的語(yǔ)句位置和機器碼的位置關(guān)系等。

③目標控制模塊:主要完成執行控制(如執行斷程序,設置中斷條件等),程序棧結構分析,對具體目標硬件的控制(如本地調試、遠程調試和仿真調試的控制)。

④目標仿真模塊:主要是模仿計算機系統中的主要硬件(包括CPU、內存和各種硬件外設等)的執行,對執行文件的機器指令進(jìn)行解釋?zhuān)⒎抡鎴绦忻恳粭l機器指令,產(chǎn)生相應的硬件響應。

2.2 SkyEye模擬的硬件介紹

目前,SkyEye仿真的CPU包含不帶MMU的AT91X40和帶MMU的ARM720T,它們都是基于A(yíng)RM7TDMI CPU內核的。SkyEye還模擬了其它硬件外設,如串口、網(wǎng)絡(luò )芯片、內存、時(shí)鐘、網(wǎng)絡(luò )HUB等。SkyEye的CPU仿真主要完成對ARM指令集處理、寄存器操作和CPU流水線(xiàn)處理等的仿真。

ARM720T具有MMU(Memory Management Unit),即存儲器管理單元,是用來(lái)管理虛擬內存系統的操作。MMU的兩具主要功能是:

*將虛地址轉換成物理地址;

*控制存儲器存取允許,MMU關(guān)掉時(shí),虛地址直接輸出到物理地址總線(xiàn)。

MMU本身有少量存儲空間存放從虛擬地址到物理地址的匹配表,此表稱(chēng)作TLB(Translation Lookaside Buffers)。TLB表中保存的是虛地址及其對應的物理地址、權限、域和映射類(lèi)型。當CPU對一虛擬地址進(jìn)行存取時(shí),首先搜索TLB表以查找對應的物理地址等信息。如果沒(méi)有查到,則進(jìn)行查找Translation Table,稱(chēng)為T(mén)TW(Translation Table Walk)。經(jīng)過(guò)TTW后,將查到的信息保存到TLB,然后根據TLB表項的物理地址進(jìn)行讀寫(xiě)。

MMU/Cache的仿真主要是依據ARM720T處理器的體系結構進(jìn)行的。ARM720T可以看成ARM7TDMI加上MMU/Cache模塊,主要是仿真控制MMU/Cache的寄存器結構、TLB結構、Cache結構、Translation Table Walk的控制邏輯以及在此基礎上內存的讀取操作。

對于網(wǎng)絡(luò )部分,SkyEye仿真的是兼容NE2000的8019as以太網(wǎng)網(wǎng)絡(luò )芯片,支持8位數據通路,仿真實(shí)現了遠程DMA信道和本地DMA信道兩個(gè)部分。本地DMA完成控制器與仿真網(wǎng)絡(luò )的數據交換,主處理器(Host)收發(fā)數據只需對遠程DMA操作。當主處理器要向以太網(wǎng)絡(luò )發(fā)送數據時(shí),先將一幀(frame)數據經(jīng)過(guò)遠程DMA信道,送到以太網(wǎng)絡(luò )控制器中發(fā)送緩存(Ring Buffer),然后發(fā)出傳送命令。以太網(wǎng)絡(luò )控制器在送出前一幀的數據后,繼布完成此幀的發(fā)送。以太網(wǎng)絡(luò )控制器接收到的數據通過(guò)MAC比較后,由FIFO存到接收緩沖區,收滿(mǎn)1幀后,以中斷或緩存器標志的方式通知主處理器。

為了有效支持網(wǎng)絡(luò )仿真,SkyEye還設計了一個(gè)虛擬HUB-vnet,可以在一臺Host主機上支持多個(gè)在SkyEye上運行的OS實(shí)例進(jìn)行網(wǎng)絡(luò )的通信互聯(lián),從而更有助于針對網(wǎng)絡(luò )方面的開(kāi)發(fā)和研究。

3 SkyEye上已經(jīng)移植成功的OS

3.1 μClinux

μClinux是應用于嵌入式設備的一個(gè)Linux版本,是主要針對不帶MMU的CPU而設計的Linux系統。ΜClinux系統對于內存的訪(fǎng)問(wèn)地址都是實(shí)際的物理地址。操作系統對內存空間沒(méi)有保護(這實(shí)際上是很多嵌入式系統的特點(diǎn)),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運行空間(沒(méi)有獨立的地址轉換表)。目前,SkyEye上可以運行μClinux的2003年最新版本。

3.2 μC/OS-II

SkyEye作為一個(gè)基于A(yíng)tmel AT91X40開(kāi)發(fā)板的仿真環(huán)境,在它上面可以移植各種適合地嵌入式開(kāi)發(fā)應用的操作系統,將μC/OS-II移植琶SkyEye上是我們對此做的又一次嘗試。ΜC/OS-II是一個(gè)簡(jiǎn)單、高效的嵌入式實(shí)時(shí)操作系統內核。自從1992年以來(lái),已經(jīng)被應用到各種嵌入式系統中。目前,它可以支持x86、ARM、PowerPC、MIPS等眾多體系結構,并有上百個(gè)商業(yè)應用式系統中。目前,它可以支持x86、ARM、PowerPC、MIPS等眾多體系結構,并有上百個(gè)商業(yè)應用實(shí)例,其穩定性和可用性是經(jīng)過(guò)實(shí)踐驗證的。同時(shí),它的源代碼公開(kāi),任何人都可以從www.ucos-ii.com的網(wǎng)站上獲得全部源碼以及其在各種體系結構平臺上的移植范例。無(wú)論是通常學(xué)習μC/OS-II來(lái)了解實(shí)時(shí)操作系統的構造,還是直接使用它來(lái)針對具體應用進(jìn)行開(kāi)發(fā),都是非常方便和可行的。目前,SkyEye支持的μC/OS-II內核為2.5.1版。

3.3 ARM Linux

ARM Linux屬于Linux標準發(fā)行內核中的一個(gè)分支,支持MMU的ARM系列CPU,如ARM720T、ARM920T、Intel StrongARM等。我們目前在SkyEye上仿真的CPU型號為CPU內核是ARM Linux內核選擇的本系結構為CLPS711x/EP72lx,它支持ARM20T、UART串口等硬件,都是SkyEye目前仿真的硬件。目前SkyEye已經(jīng)成功運行了版本為2.4.18的ARM Linux。有關(guān)ARM Linux的更多信息請訪(fǎng)問(wèn)http://www.arm.linux.org.uk/。

4 SkyEye目前支持的網(wǎng)絡(luò )協(xié)議棧

4.1 μCLinux上的TCP/IP

μClinux上面有完整的TCP/IP協(xié)議棧,但缺少對SkyEye的網(wǎng)絡(luò )仿真芯片(仿真兼容NE2000的8019as)的驅動(dòng)程序。我們實(shí)現的驅動(dòng)程序主要包括了初始化、中斷處理、接收數據包的處理、發(fā)送數據包的處理等工作,再加上SkyEye的虛擬HUB-vet的協(xié)議,使μClinux on SkyEye的多個(gè)實(shí)例之間、實(shí)例與主機之間可以進(jìn)行TCP/IP通信。

4.2 μC/OS-II上的LwIP

μC/OS-II本身沒(méi)有TCP/IP協(xié)議棧,目前的一些第三方TCP/IP支持都是完全商業(yè)化的,很少給出源代碼,影響了μC/OS-II的研究和推廣。通過(guò)把開(kāi)放源代碼的TCP/IP協(xié)議棧LwIP移植到μC/OS-Ii上來(lái),就獲得了一套可免費研究、學(xué)習的嵌入式網(wǎng)絡(luò )軟件平臺。其系統示意圖如圖1所示。

LwIP是瑞士計算機科學(xué)院(Swedish Institute of Computer Science)的Adam Dunkels等開(kāi)發(fā)的一套用于嵌入式系統的開(kāi)放源代碼TCP/IP協(xié)議棧。LwIP的含義是Light Weight(輕型)IP協(xié)議。LwIP可以移植到操作系統上,也可以在無(wú)操作系統的情況下獨立運行。我們目前使用的是LwIP的最新穩定版V0.5.3。

LwIP協(xié)議棧在設計時(shí)就考慮到了將來(lái)的移植問(wèn)題,因此把所有與硬件、OS、編譯器相關(guān)的部分獨立出來(lái),放在/src/arch目錄下。因此,LwIP在μC/OS-II上的實(shí)現就是修改這個(gè)目錄下的文件,其它的文件一般不應該修改。

我們在SkyEye中所仿真的網(wǎng)絡(luò )芯片是NE2000,所以目前實(shí)現的網(wǎng)絡(luò )設備驅動(dòng)是針對NE2000的,其它類(lèi)型的網(wǎng)絡(luò )芯片驅動(dòng)可以在LwIP的網(wǎng)站上找到?,F在LwIP已經(jīng)順利運行在μC/OS-II上了,目前可以從Host主機和SkyEye上運行的μC/OS-II+LwIP順利進(jìn)行TCP/IP的通信。

4.3 更多的TCP/IP協(xié)議棧

除了LwIP之外,還有很多開(kāi)源的嵌入式TCP/IP協(xié)議棧。它們各有各的特點(diǎn),有些功能較全面,有些占用資源出奇的少,能適合不同場(chǎng)合的需要,而且多接觸一些不同的思路,對協(xié)議和編碼能有更好的理解。其中的代表有tinyTCP、ucIP、uIP等,它們的基本思路應該都是一致的。SkyEye小組希望能有列多對TCP/IP協(xié)議棧感興趣的人參與進(jìn)來(lái),特別是ucIP,實(shí)際上它是專(zhuān)門(mén)為μC/OS-II設計的。

5 SkyEye上已經(jīng)實(shí)現的簡(jiǎn)單應用

5.1 LwIP上的Echo服務(wù)器

做完LwIP的移植修改工作以后,就可以在μC/OS-II中初始化LwIP,并創(chuàng )建TCP或UDP任務(wù)進(jìn)行測試了。值得注意的是:LwIP的初始化必須在μC/OS-II完全啟動(dòng)之后也就是在任務(wù)中進(jìn)行,因為它的初始化用到了信號量等與OS相關(guān)的操作。


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>