日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
VxWorks網(wǎng)絡(luò)協(xié)議棧的MUX接口
[1] [2]  下一頁
VxWorks網(wǎng)絡(luò)協(xié)議棧的MUX接口
 更新時間:2008-8-16 21:08:05  點(diǎn)擊數(shù):12
【字體: 字體顏色

    摘要:嵌入式系統(tǒng)網(wǎng)絡(luò)協(xié)議棧的靈活性在應(yīng)用上是一個重要指標(biāo)。介紹嵌入式實(shí)操作系統(tǒng)VxWorks網(wǎng)絡(luò)協(xié)議棧的MUX(Mutiplexer)接口及其使用方法。

    關(guān)鍵詞:VxWorks 網(wǎng)絡(luò)協(xié)議棧 MUX

VxWorks是美國Wind River System公司(風(fēng)河公司)推出的一個運(yùn)行在目標(biāo)機(jī)上的高性能、可裁減的嵌入式實(shí)時操作系統(tǒng)。它以其良好的可靠性和卓越的實(shí)時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時性要求極高的領(lǐng)域中,如衛(wèi)星通信、軍事演習(xí)、彈道制導(dǎo)、飛機(jī)導(dǎo)航等。VxWorks操作系統(tǒng)包括進(jìn)程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個部分。VxWorks只占用很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運(yùn)行。它可以根據(jù)用戶需求進(jìn)行組合,其開放式結(jié)構(gòu)對工業(yè)標(biāo)準(zhǔn)的支持使開發(fā)者只須做最少的工作即可設(shè)計有效的適合于不同用戶的要求。

1 VxWorks的網(wǎng)絡(luò)協(xié)議棧和MUX接口

VxWorks中的網(wǎng)絡(luò)協(xié)議棧叫作SENS(Scalable Enhanced Network Stack),即可裁減強(qiáng)網(wǎng)絡(luò)協(xié)議棧。SENS是基于4.4BSD TCP/IP協(xié)議棧發(fā)展而來的,包含了許多4.4BSD TCP/IP協(xié)議棧沒的協(xié)議;而且SENS在實(shí)現(xiàn)一些協(xié)議功能時增加了許多新特性,如在IP協(xié)議實(shí)現(xiàn)時增加了多播功能。SENS協(xié)議棧層次如圖1所示。

SENS的基本特征和傳統(tǒng)的TCP/IP網(wǎng)絡(luò)協(xié)議棧相似,但從圖1中可以看出SENS最大的特點(diǎn)是在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間多了MUX層。在SENS中,網(wǎng)絡(luò)接口的驅(qū)動程序是叫作END(Enhanced Network Driver),即增強(qiáng)型網(wǎng)絡(luò)驅(qū)動程序,它處于數(shù)據(jù)鏈路層。IP層和TCP/UDP層合稱為網(wǎng)絡(luò)協(xié)議層。在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間有應(yīng)用程序接口(API),這個接口在SENS中叫作MUX(Multiplexer)接口。MUX接口如圖2所示。

在網(wǎng)絡(luò)協(xié)議層,VxWorks典型地使用TCP/IP協(xié)議(也支持其它協(xié)議);在數(shù)據(jù)鏈路層典型地使用Ethernet,也支持其它數(shù)據(jù)傳輸?shù)奈锢砻襟w,例如遠(yuǎn)距離連接使用的串行線路接入方式,如PPP等。但是,無論使用什么物理媒體,網(wǎng)絡(luò)接口驅(qū)動都要用到MUX去與網(wǎng)絡(luò)協(xié)議層通信(數(shù)據(jù)鏈路層是一個抽象概念,網(wǎng)絡(luò)接口驅(qū)動程序則是這種抽象概念所描述的功能實(shí)現(xiàn)的代碼)。

在4.3BSD中,VxWorks的網(wǎng)絡(luò)接口驅(qū)動和協(xié)議是緊密結(jié)合在一起的,它們通過傳遞特定的數(shù)據(jù)結(jié)構(gòu)互通信;而在MUX基礎(chǔ)上,它們只是通過MUX間接地相互作用。例如,在收到一個包后,網(wǎng)絡(luò)接口驅(qū)動并沒直接與協(xié)議層連接。同樣地,當(dāng)網(wǎng)絡(luò)接口驅(qū)動準(zhǔn)備好向協(xié)議層發(fā)送數(shù)據(jù)時,驅(qū)動程序會調(diào)用一個MUX提供的功能(函數(shù))。這個功能(函數(shù))具體負(fù)責(zé)將數(shù)據(jù)傳給協(xié)議層的動作細(xì)節(jié)。應(yīng)用MUX的主要目的是把網(wǎng)絡(luò)接口驅(qū)動和協(xié)議層分開,這樣就使得網(wǎng)絡(luò)接口驅(qū)動和協(xié)議層彼此基本上保持獨(dú)立。這種獨(dú)立性使得加載一個新的協(xié)議或網(wǎng)絡(luò)接口驅(qū)動,所有現(xiàn)有的基于MUX的協(xié)議就都可以用這個新的網(wǎng)絡(luò)接口驅(qū)動程序;同樣,如果要加一個新的基于MUX的協(xié)議,現(xiàn)有的網(wǎng)絡(luò)接口驅(qū)動也能夠用MUX來與新協(xié)議通信。

2 MUX接口工作流程分析

MUX層作為獨(dú)立的一個網(wǎng)絡(luò)層有其自己的功能函數(shù),但這些功能函數(shù)只是其上下兩層通信的接口。網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)驅(qū)動與MUX接口的調(diào)用關(guān)系如圖3所示。

網(wǎng)絡(luò)協(xié)議提供下面的接口功能函數(shù):

①stackShutdownRtn()

②stackError()

③stackRcvRtn()

④stackTxRestartRtn()

當(dāng)MUX接口層需要與協(xié)議層相互通信時,就調(diào)用以上的功能函數(shù)。想要使網(wǎng)絡(luò)協(xié)議層能夠使用MUX,必須至少實(shí)現(xiàn)以上四個功能函數(shù)。

MUX則實(shí)現(xiàn)muxBind()、muxUnBind()、muxDevload()等等。網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)驅(qū)動接口都要根據(jù)各自的需要使用MUX接入點(diǎn)。由于MUX是由系統(tǒng)提供的,不需要在應(yīng)用時再進(jìn)行額外的編碼工作;只要在使用時,填入正確的參數(shù)即可。

例如在VxWorks中,muxDevLoad是這樣定義的:

END_OBJ*muxDevLoad

int unit, /*設(shè)備號碼*/

END_OBJ*(*endLoad)(char*,void*),/*調(diào)用設(shè)備函數(shù)*/

char* pInitString, /*初始化字符串*/

BOOL loaning, /*存儲標(biāo)識*/

void* pBSP /*調(diào)用BSP功能的函數(shù)*/

其它功能函數(shù)在muxLib.h文件中有詳細(xì)定義。

網(wǎng)絡(luò)接口的驅(qū)動程序要完成endLoad()、endUnload()、endSend()等功能函數(shù)。MUX使用這些功能函數(shù)來與網(wǎng)絡(luò)驅(qū)動程序通信。當(dāng)編寫或加載一個使用MUX的網(wǎng)絡(luò)驅(qū)動程序時,必須實(shí)現(xiàn)圖3中END的所有功能。這些功能函數(shù)都是針對具體的網(wǎng)絡(luò)接口,即每一個網(wǎng)絡(luò)驅(qū)動程序中都要有這些功能函數(shù)。

3 MUX的應(yīng)用

3.1 系統(tǒng)如何通過MUX啟動和使用網(wǎng)絡(luò)接口驅(qū)動程序——END

系統(tǒng)啟動時要通過任務(wù)(與進(jìn)程概念相近,是嵌入式操作系統(tǒng)中的執(zhí)行單元)來執(zhí)行以下功能:

①從存儲器中裝載并啟動END;

②注冊用來處理END的中斷;

③通過END來實(shí)現(xiàn)處理包的功能。

在系統(tǒng)啟動時,VxWorks產(chǎn)生一tUsrRoot任務(wù)來執(zhí)行以下的功能:首先初始化網(wǎng)絡(luò)任務(wù)的工作隊列,然后產(chǎn)生一個tNetTask來處理網(wǎng)絡(luò)任務(wù)工作隊列中的任務(wù)。

tNetTask任務(wù)調(diào)用muxDevLoad()來裝載網(wǎng)絡(luò)接口驅(qū)動,在tNetTask中已經(jīng)定義了網(wǎng)絡(luò)驅(qū)動設(shè)備的endLoad()接入點(diǎn),muxDevLoad()則也要執(zhí)行endLoad()。EndLoad()執(zhí)行設(shè)備初始化并且返回一個名為END_OBJ的結(jié)構(gòu)。MUX通過在END_OBJ上加一個指針,指向能完成將數(shù)據(jù)向MUX上層發(fā)送的功能(函數(shù))。然后MUX把返回的END_OBJ加到END_OBJ結(jié)構(gòu)鏈表中。這個鏈表包括目前系統(tǒng)中所有可用的網(wǎng)絡(luò)設(shè)備。當(dāng)從muxDevLoad()返回后,網(wǎng)絡(luò)設(shè)備就準(zhǔn)備好可以使用了。

我們必須調(diào)用sysIntConnect()來注冊網(wǎng)絡(luò)接口設(shè)備的中斷處理。最典型的調(diào)用sysIntConnect()是在網(wǎng)絡(luò)接口設(shè)備的endStart()中。當(dāng)通過muxDevLoad()來裝載網(wǎng)絡(luò)接口設(shè)備時,就會調(diào)用muxDevStart()來啟動該設(shè)備,muxDevStart()就會調(diào)用endStar(),從而進(jìn)行中斷處理的注冊。

系統(tǒng)啟動后,就要依靠中斷來使用該設(shè)備。當(dāng)從網(wǎng)絡(luò)設(shè)備的中斷來到時,VxWorks激活該設(shè)備驅(qū)動程序所注冊的中斷服務(wù)。中斷服務(wù)的工作量應(yīng)該是最小的,只需完成從本地硬件上取到包即可。為了使中斷的鎖定時間最少,中斷服務(wù)應(yīng)該僅處理那些要求最少執(zhí)行時間的任務(wù),例如出錯和狀態(tài)改變。中斷服務(wù)為了讓所有耗時的工作在任務(wù)級別處理,應(yīng)該將其排隊。例如:要使在任務(wù)級別處理包接受的工作排隊,中斷服務(wù)必須調(diào)用netJobAdd()。在輸入的時候,這個例行程序(Routine)收到一個功能函數(shù)的指針并且直到收到五個額外的參數(shù)(指針?biāo)腹δ芎瘮?shù)的參數(shù))。

STATUS netJobAdd

(

FUNCPTR routine, /*在工作程序隊列中要加的例行程序*/

int param1, /*這個例行程序的第一個參數(shù)*/

int param2, /*這個例行程序的第二個參數(shù)*/

int param3, /*這個例行程序的第三個參數(shù)*/

int param4, /*這個例行程序的第四個參數(shù)*/

int param5,/*這個例行程序的第五個參數(shù)*/

如果調(diào)用netJobAdd(),就必須定義網(wǎng)絡(luò)驅(qū)動在任務(wù)級別處理包的接入點(diǎn)。NetJobAdd例行程序?qū)⒐δ芎瘮?shù)調(diào)用(包括其參數(shù))放入tNetTask的任務(wù)隊列中。VxWorks使用tNetTask處理任務(wù)級別的網(wǎng)絡(luò)處理功能。

    這里只是舉例說明了接收包的情況,其它情況下netJobAdd()也一樣能執(zhí)行對應(yīng)的入列功能。

3.2 基于MUX的網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)接口驅(qū)動程序

基于MUX的特點(diǎn):提供一個接口,使與其相連各層程序的編寫只需在基礎(chǔ)上編寫即可?梢哉f不論是網(wǎng)絡(luò)協(xié)議層還是網(wǎng)絡(luò)接口驅(qū)動程序都可以把MUX看作應(yīng)用程序接口(API)。在VxWorks目標(biāo)系統(tǒng)中加載一個網(wǎng)絡(luò)接口設(shè)備的驅(qū)動程序就和編寫一個應(yīng)用程序一樣的簡單。具體步驟如下:

①編譯驅(qū)動程序的源代碼并在VxWorks鏡像中加載;

②編輯target/src/config/BSP/configNet.h;

③編輯BSP的cfonfig.h文件。

注意,如果不重新編譯新的boot ROMs(啟動ROM),那么就不能使用新的END。這就是說,只能啟動一個沒有END的目標(biāo)系統(tǒng),所以必須編輯配置文件,才能使用新的END。

由圖3可知,基于MUX的網(wǎng)絡(luò)協(xié)議與MUX向上綁定,而網(wǎng)絡(luò)接口驅(qū)動是與MUX向下綁定的。協(xié)議層的主要功能是對傳輸層和應(yīng)用程序提供接口。協(xié)議層的代碼編寫也是通過MUX接口提供的接口進(jìn)行編程,這和通用計算機(jī)有很大的相似之處,這里就不再述。

  • 上一篇: 基于“網(wǎng)絡(luò)通”的以太網(wǎng)家庭數(shù)據(jù)終端*
  • 下一篇: 船載交換式網(wǎng)絡(luò)使用雙冗余網(wǎng)卡對網(wǎng)絡(luò)性能的影響
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1