自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從三個(gè)方面探討VxWorks網(wǎng)絡(luò)協(xié)議棧

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們探討了VxWorks網(wǎng)絡(luò)協(xié)議棧的原理以及結(jié)構(gòu)。那么對(duì)于VxWorks的網(wǎng)絡(luò)協(xié)議棧和MUX接口、MUX接口工作流程分析和MUX的應(yīng)用都做了具體的分析和講解。

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

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é)議功能時(shí)增加了許多新特性,如在IP協(xié)議實(shí)現(xiàn)時(shí)增加了多播功能.SENS協(xié)議棧層次如圖1所示.

SENS網(wǎng)絡(luò)協(xié)議棧

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ū)動(dòng)程序是叫作END(Enhanced Network Driver),即增強(qiáng)型網(wǎng)絡(luò)驅(qū)動(dòng)程序,它處于數(shù)據(jù)鏈路層.IP層和TCP/UDP層合稱為網(wǎng)絡(luò)協(xié)議層.在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間有應(yīng)用程序接口(API),這個(gè)接口在SENS中叫作MUX(Multiplexer)接口.MUX接口如圖2所示.

SENS中的MUX接口

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

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

2 MUX接口工作流程分析

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

網(wǎng)絡(luò)協(xié)議層 MUX 網(wǎng)絡(luò)驅(qū)動(dòng)

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

①stackShutdownRtn()

②stackError()

③stackRcvRtn()

④stackTxRestartRtn()

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

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

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

  1. END_OBJ*muxDevLoad  
  2. (  
  3. int unit,  
  4. END_OBJ*(*endLoad)(char*,void*),  
  5. char* pInitString,  
  6. BOOL loaning,  
  7. void* pBSP  
  8. ) 

網(wǎng)絡(luò)協(xié)議棧MUX中的其它功能函數(shù)在muxLib.h文件中有詳細(xì)定義.

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

3 MUX的應(yīng)用

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

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

①?gòu)拇鎯?chǔ)器中裝載并啟動(dòng)END;

②注冊(cè)用來處理END的中斷;

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

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

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

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

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

  1. STATUS netJobAdd  
  2. (  
  3. FUNCPTR routine,  
  4. int param1,  
  5. int param2,  
  6. int param3,  
  7. int param4,  
  8. int param5,  
  9. )  

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

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

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

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

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

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

③編輯BSP的cfonfig.h文件.

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

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

文引用通告地址:http://laocainiao.spaces.eepw.com.cn/articles/trackback/item/21647

責(zé)任編輯:佟健 來源: hi.baidu.com
相關(guān)推薦

2010-09-10 10:36:13

VxWorks網(wǎng)絡(luò)協(xié)議

2010-07-12 14:36:18

OSPF動(dòng)態(tài)路由協(xié)議

2010-09-10 11:55:55

2010-06-21 15:36:21

互聯(lián)網(wǎng)協(xié)議

2011-03-24 14:24:05

2022-02-26 16:10:51

Figma設(shè)計(jì)工具

2022-02-14 10:42:41

移動(dòng)端標(biāo)簽設(shè)計(jì)用戶

2013-05-03 10:11:26

信息安全BYOT

2020-02-21 09:00:15

混合云安全公有云

2021-09-14 09:39:06

設(shè)計(jì)系統(tǒng)框架設(shè)計(jì)原則

2011-07-20 17:11:11

組策略

2010-06-07 13:07:26

IPv6協(xié)議技術(shù)

2020-06-11 09:00:27

SDN網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2010-09-02 16:46:52

SOAP協(xié)議

2010-06-12 16:34:57

網(wǎng)絡(luò)通信協(xié)議

2009-07-23 14:39:23

ASP.NET處理

2010-09-10 18:31:42

搭建tftp服務(wù)器

2010-08-25 17:21:21

DHCP服務(wù)器

2010-06-28 11:08:32

BitTorrent協(xié)

2010-09-08 09:49:28

藍(lán)牙協(xié)議棧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)