<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è) > 嵌入式系統 > 設計應用 > 嵌入式網(wǎng)絡(luò )終端報文收發(fā)機制研究與實(shí)現

嵌入式網(wǎng)絡(luò )終端報文收發(fā)機制研究與實(shí)現

作者: 時(shí)間:2009-05-21 來(lái)源:網(wǎng)絡(luò ) 收藏

1、 引言
計算機技術(shù)迅猛發(fā)展,幾乎延伸到各個(gè)領(lǐng)域,已經(jīng)成為很多系統的重要功能組件[1],并且衍生出新型,如IP電話(huà)、IPTV等。在系統中,依靠協(xié)議棧完成,其功能集中在傳輸層、網(wǎng)絡(luò )層和鏈路層。通常的接收是在鏈路層以上建立接收任務(wù),通過(guò)查詢(xún)物理層的通信狀態(tài)或者由物理層觸發(fā)[2],來(lái)接收網(wǎng)絡(luò )數據。這兩種方式都有一定的缺陷。查詢(xún)方式,就是接收任務(wù)按照某種規則檢查底層是否收到新數據,簡(jiǎn)單可靠,但由于網(wǎng)絡(luò )通信是一種隨機的離散事件,查詢(xún)方式可能對處理器資源造成嚴重浪費,加大通信延時(shí)。方式相對靈活,延時(shí)固定,但在程序中引入了更多的上下文切換,在復雜度和可靠性上略有不足。本文提出一種與查詢(xún)結合使用的方法,通過(guò)實(shí)踐,表明這套具有高效、穩定、可靠的優(yōu)點(diǎn)。
2、
本文的目標是充分利用系統的處理器和存儲器資源,保證網(wǎng)絡(luò )收發(fā)的實(shí)時(shí)性和吞吐量。本系統按圖1的基本架構網(wǎng)絡(luò )通信,由三層功能模塊和兩級緩存構成一條接收通道和一條發(fā)送通道。上層是系統應用程序。底層負責物理鏈路上的數據收發(fā)。中層由協(xié)議棧和網(wǎng)絡(luò )接口適配器驅動(dòng)負責上層和底層的數據交互。有兩級緩存,上層與中層之間的二級緩存用于網(wǎng)絡(luò )報文的封裝和解析;中層與底層之間的一級緩存分為接收緩存和發(fā)送緩存,采用環(huán)行結構,作用是解決終端與網(wǎng)絡(luò )之間異步問(wèn)題。接收過(guò)程分為三個(gè)階段,主要工作在RX2階段;發(fā)送過(guò)程分為兩個(gè)階段,上層和中層屬于同一階段(TX2)。原因是發(fā)送過(guò)程是主動(dòng)過(guò)程,由高層發(fā)起并控制低層完成,而接收過(guò)程中低層先得到數據,但只能等待而不能控制高層的響應。通常物理層、媒體訪(fǎng)問(wèn)控制(MAC)和一級緩存可以使用網(wǎng)絡(luò )接口控制器 (Network Interface Controller: NIC) ,NIC能獨立完成物理鏈路上的。

本文引用地址:http://dyxdggzs.com/article/152483.htm

2、1接收流程

本系統中,網(wǎng)絡(luò )報文接收過(guò)程RX2階段如圖2。初始狀態(tài)下,打開(kāi)接收中斷A和一級緩沖溢出中斷B。若物理層收到一幀或多幀數據,就存入一級接收緩存,并向處理器發(fā)出中斷請求。系統將會(huì )執行相應中斷程序,檢查一級接收緩存是否溢出。如果溢出,就對其復位,并回到初始狀態(tài)。否則,關(guān)閉中斷A、B,向協(xié)議棧的接收任務(wù)發(fā)出一次接收通知。接收任務(wù)每次收到該通知,就從一級緩存取出一幀數據,保存到二級緩存,并按照網(wǎng)絡(luò )協(xié)議進(jìn)行處理后轉交上層,之后,檢查一級緩存內是否仍有新數據。如果沒(méi)有,就清除中斷A的有效狀態(tài),然后重新打開(kāi)中斷A、B。如果有,就直接進(jìn)入下輪接收過(guò)程。如此,一次突發(fā)過(guò)程中如果網(wǎng)絡(luò )中有多幀數據到達終端,能夠直接由上層一一接收,而不需一次次中斷。
2、2發(fā)送流程
本系統報文發(fā)送過(guò)程TX2階段如圖3,方式與接收不同,無(wú)專(zhuān)門(mén)任務(wù)負責發(fā)送功能,而是由協(xié)議棧提供一套統一接口,上層應用程序借此發(fā)送數據。首先在二級緩存中形成網(wǎng)絡(luò )報文,然后檢查一級緩存中發(fā)送緩存,待其可用,將數據從二級緩存復制到一級緩存,啟動(dòng)發(fā)送。之后,NIC通常能夠自動(dòng)完成余下的物理層發(fā)送工作。此刻,系統主動(dòng)查詢(xún)接收通道的工作狀態(tài)。如果發(fā)生中斷A或B,就觸發(fā)軟中斷。于是,構成一種機制。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
電能表相關(guān)文章:電能表原理

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(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>