亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種精簡TCP/IP協(xié)議棧的設(shè)計與實現(xiàn)

        2010-03-14 09:05:16伍瑞卿
        電視技術(shù) 2010年1期
        關(guān)鍵詞:描述符網(wǎng)卡接收端

        趙 川,伍瑞卿,樊 豐

        (電子科技大學 電子工程學院,四川 成都 611731)

        1 引言

        網(wǎng)絡(luò)視頻傳輸?shù)玫搅嗽絹碓綇V泛的應(yīng)用,如IP可視電話、數(shù)字攝像機、網(wǎng)絡(luò)視頻會議、視頻監(jiān)控系統(tǒng),數(shù)字視頻播放器/點播機等。在很多應(yīng)用場合,都需要小型的嵌入式系統(tǒng)來實現(xiàn)[1]。通常,基于DSP的協(xié)議棧都移植自LWIP,uIP。而這些協(xié)議棧并不針對視頻傳輸設(shè)計。視頻傳輸中通常使用UDP協(xié)議以保證傳輸?shù)膶崟r性[2]。但是UDP的傳輸是無連接的,不可靠的。例如,在H.264中,如果丟掉解碼圖像需要的參數(shù)集或者IDR圖像,會造成無法解碼的結(jié)果。筆者提出了一種針對視頻流傳輸?shù)母倪M的UDP協(xié)議,在確保正確解碼的同時,保證了較小的開銷和較高的效率。

        2 TMS320DM642 DSP開發(fā)平臺

        TMS320DM642(簡稱DM642)是TI公司的一款專用于數(shù)字媒體應(yīng)用的高性能32位定點DSP芯片。工作主頻高達720 MHz,處理能力可達5 760 MI/s(兆指令/秒),外部總線時鐘100MHz。DM642集成了64個32 bit的通用寄存器,能夠在一個時鐘周期內(nèi)處理4個16 bit的乘法和8個8 bit的乘法。64 bit寬度的EMIF總線,可連接大容量 SDRAM,F(xiàn)lash,ATA等存儲器資源。4路PAL/NTSC標準模擬視頻輸入,1路PAL/NTSC標準模擬視頻輸出,以及一個支持10/100 Mbit/s自適應(yīng)網(wǎng)卡的EMAC/MDIO模塊,通過寄存器配置可提供一定的QoS保證[3]。因此,該芯片非常適合視頻數(shù)據(jù)的處理和傳輸。

        3 網(wǎng)絡(luò)驅(qū)動程序的開發(fā)

        網(wǎng)絡(luò)接口控制芯片主要由 EMAC Control,EMAC,MDIO等模塊控制。

        3.1 模塊主要功能和結(jié)構(gòu)

        MAC Control:主要作為DSP與EMAC/MDIO的接口,提供4 kbyte的本地內(nèi)存空間給EMAC的包緩沖描述符;具有總線仲裁、重啟EMAC/MDIO、全局中斷使能、中斷邏輯控制等功能,與EMAC模塊一起初始化。

        MDIO:使用有限狀態(tài)機配置和監(jiān)控物理層設(shè)備(PHY)。

        EMAC:用于在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)包。而開發(fā)設(shè)備驅(qū)動主要是對該模塊編程。EMAC的特點是:1)作為DMA控制器,在DSP內(nèi)部和外部存儲空間之間傳送數(shù)據(jù);2)連接PHY的介質(zhì)無關(guān)接口(MII);3)8個接收和8個發(fā)送通道,提供一定的QoS支持;4)可選的發(fā)送CRC校驗;5)支持多播、廣播和混合模式;6)硬件流控制。

        模塊框圖如圖1所示,其中EMAC/MDIO通過中斷映射到DSP的11號中斷,EMAC通過DSP內(nèi)存轉(zhuǎn)換控制器讀寫DSP的內(nèi)部外部存儲空間,模塊的控制寄存器通過DSP配置總線映射到DSP存儲空間。

        圖1 模塊結(jié)構(gòu)框圖

        3.2 底層驅(qū)動的軟件結(jié)構(gòu)

        EMAC使用描述符來管理接收和發(fā)送緩沖隊列。描述符是一個16 byte的內(nèi)存結(jié)構(gòu),存儲在EMACControl模塊中,包含數(shù)據(jù)包的長度,存放位置等信息[4]。每個描述符表示1個以太網(wǎng)包。每次發(fā)送或者接收操作完成,EMAC都會向DSP發(fā)送中斷,調(diào)整描述符隊列。

        以太網(wǎng)包的接收和發(fā)送是通過一個緩沖描述符系統(tǒng)實現(xiàn)的。EMAC提供256個可用的描述符,每個接收或發(fā)送通道都有自己的通道描述符結(jié)構(gòu),用來維系描述符鏈表。設(shè)備驅(qū)動取出空的描述符以便EMAC能夠?qū)⑹盏降囊蕴W(wǎng)包的數(shù)據(jù)寫入對應(yīng)緩存,將緩存中的即將發(fā)送的數(shù)據(jù)送出并且清理對應(yīng)的描述符以便重復利用。

        EMAC接收和發(fā)送數(shù)據(jù)的流程如圖2和圖3所示。

        圖2 接收流程圖

        圖3 發(fā)送流程圖

        4 精簡協(xié)議棧的設(shè)計與實現(xiàn)

        4.1 協(xié)議層的結(jié)構(gòu)

        嵌入式系統(tǒng)中實現(xiàn)的協(xié)議要根據(jù)各個系統(tǒng)的特點及功能來設(shè)計其獨特的TCP/IP協(xié)議簇,實現(xiàn)與需要有關(guān)的部分,而不使用的協(xié)議則省略。在局域網(wǎng)上使用的很多功能,比如路由協(xié)議、SNMP都不需要,只使用ARP,IP,ICMP和UDP,可省略應(yīng)用層協(xié)議。在用于視頻數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)中,如果簡化協(xié)議基于TCP的話,不僅開銷較大,丟失分組將會造成播放延時的增大[2]。并且視頻流本身具有一定的錯誤恢復能力,所以本文的協(xié)議棧主要以UDP的發(fā)送和接收為設(shè)計和測試對象。

        4.2 存儲緩沖的管理

        TCP/IP棧和設(shè)備驅(qū)動使用包緩沖區(qū)發(fā)送及接收網(wǎng)絡(luò)包數(shù)據(jù)。在該協(xié)議棧中,開辟32個包緩沖區(qū)構(gòu)成的緩沖池,而以太網(wǎng)幀長度限制在1 514 byte或1 518 byte(加入CRC校驗),因此設(shè)置每個緩沖為1 536 byte=(1 024+512) byte,這樣分配可以對齊Cache邊界,保證沖洗(flush)Cache時,不會與其他緩沖區(qū)發(fā)生沖突,并且節(jié)省存儲空間。32個包緩沖頭使用EMAC的EMAC_Pkt結(jié)構(gòu)。兩段緩沖均存放在片外SDRAM中。協(xié)議棧的數(shù)據(jù)處理和底層設(shè)備接口使用sk_buff的結(jié)構(gòu),編碼如下:

        其中包含1個底層EMAC的數(shù)據(jù)包指針,這樣就可以方便地將EMAC接收的數(shù)據(jù)包放入?yún)f(xié)議棧的緩沖中。協(xié)議棧中的緩沖skb即是這種結(jié)構(gòu)。

        在每次發(fā)送1個數(shù)據(jù)包之前,都要首先分配skb的存儲空間。從EMAC的空隊列中彈出1個EMAC_Pkt的數(shù)據(jù)包,并將skb內(nèi)的這個數(shù)據(jù)包指針指向它,然后對skb進行操作。在釋放skb時,將這個數(shù)據(jù)包壓入空隊列中以便繼續(xù)使用。

        每層協(xié)議在封裝幀頭前,在數(shù)據(jù)區(qū)前預留這些幀頭的空間,而數(shù)據(jù)區(qū)域不變。這樣數(shù)據(jù)在各層協(xié)議之間傳遞都使用數(shù)據(jù)指針,從而避免了數(shù)據(jù)的重復搬移,以提高效率。當提交到下層協(xié)議時,將數(shù)據(jù)指針pskb->data向前移動1個幀頭長度。而在接收數(shù)據(jù)時,每層協(xié)議去掉幀頭,將數(shù)據(jù)指針向后移動1個幀頭長度。

        由于I幀大小一般超過了1 514 byte,需要加入IP分片的功能。首先計算需要分片數(shù),預留該傳輸層需要的幀頭,填入傳輸層的幀頭數(shù)據(jù),然后從原始數(shù)據(jù)復制到pskb->data,剩下的片預留IP層需要的幀頭,填入幀頭數(shù)據(jù)后發(fā)送。

        ARP的實現(xiàn)需要建立1個ARP列表,存放網(wǎng)絡(luò)中主機(DSP或PC)的ARP信息。在收到1個IP包后,DSP首先發(fā)送1個廣播包,查找該報文中源IP對應(yīng)的MAC地址,如果不在列表中,發(fā)送ARP請求,在接收到回應(yīng)后,將MAC地址和對應(yīng)的IP加入列表。

        在以太網(wǎng)層,調(diào)用csl中EMAC_sendPacket發(fā)送數(shù)據(jù)。

        加入類BSD套接字函數(shù),封裝底層函數(shù),包括socket,accept,bind,connect,recv,recvfrom,send,sendto 等, 便于應(yīng)用程序調(diào)用。

        5 協(xié)議棧的改進

        5.1 改進的UDP協(xié)議

        鑒于參數(shù)集和I幀的重要性,為了提高傳輸?shù)目煽啃?,保證正確接收端正確解碼,并盡量使協(xié)議棧簡單,采用類似TCP的重傳機制,流程如圖4所示。

        圖4 改進的UDP傳輸

        閾值 RTO 采用 TCP 的計算方法[5]:RTO=β×RTT,RTT為平均往返時延。RTT=α×RTTold+(1-α)×RTTnew,RTTold為上一次的平均往返時間,RTTnew為新的往返時間。往返時間可根據(jù)發(fā)送時刻的絕對時間和接收到接收報告的絕對時間來計算[5],每發(fā)送1個序列(IDR幀更新)就計算1次。在小型網(wǎng)絡(luò)中,為及時重傳關(guān)鍵的數(shù)據(jù)包,取α=0.25,β=1.5。為測試簡便,由幾次實驗估計,取RTO的值為50ms。

        如果需要更可靠的傳輸,可以在接收端每收到1個數(shù)據(jù)包就發(fā)送1個IP數(shù)據(jù)包,內(nèi)容為成功接收標志位,用于發(fā)送端判斷是否重傳以及接收端剩余的緩存空間,用于發(fā)送端決定是否延遲一小段時間,等待接收端清理出足夠的緩存空間再發(fā)送數(shù)據(jù)。

        5.2 接收報告的設(shè)計

        視頻流的接收情況需要反饋給發(fā)送端以便客戶端和服務(wù)端的交互,發(fā)送速率需要根據(jù)接收端接收和解碼的速率來進行一些調(diào)整以達到匹配,還可以使發(fā)送端對出現(xiàn)的問題進行分析和采取一些解決措施。通常的反饋接收報告中設(shè)置固定的時間間隙發(fā)送接收報告[1],缺乏靈活性,并且該時間需要大量實驗來驗證,時間太短會導致網(wǎng)絡(luò)流量增大,時間太長可能無法及時使發(fā)送端獲得網(wǎng)絡(luò)狀況并由此控制發(fā)送端調(diào)整發(fā)送速率。因此設(shè)計在接收端成功接收到參數(shù)集和I幀后,或者解碼1個序列(下一個IDR幀到來)后,發(fā)送1個接收報告。發(fā)送端可以根據(jù)接收報告檢測網(wǎng)絡(luò)狀況及延時抖動,然后相應(yīng)的調(diào)整發(fā)送速率。如果在報文中加入各幀解碼時間,還可以調(diào)整編碼的碼率,以達到編碼和解碼的速率的匹配。

        為了提高兼容性和擴展性,參照使用RTCP報文的頭部,以便其他能夠解析RTCP包的應(yīng)用程序識別。報頭格式如圖5所示。

        圖5 報文頭格式

        圖5中,V為版本號,用于識別報文的合法性。P為填充位,為1時表示數(shù)據(jù)包末位有填充位。RC為報告位,數(shù)據(jù)包中所含有的報告數(shù)目。PT為類型,不同的值代表不同類型的包,可針對不同的用途設(shè)計不同內(nèi)容的報文,以類型區(qū)分。例如,用于視頻監(jiān)控(基本檔次),用于流媒體播放(擴展檔次)等。Len為整個數(shù)據(jù)包的長度,不包括報頭長。每種類型的報文有固定的長度,如果不符合可以直接丟棄。報文內(nèi)容如圖6所示。

        圖6中,T n為第n幀的傳輸時間。n由發(fā)送端的I幀周期決定,或者由接收端設(shè)定。丟包的序號由接收端根據(jù)發(fā)送的RTP數(shù)據(jù)包內(nèi)容決定。丟包率表示從接收到第一個數(shù)據(jù)包開始的時間內(nèi)丟掉的數(shù)據(jù)包總數(shù)與累積接收到的數(shù)據(jù)包的總數(shù)的比例??刂茦酥疚粸?時,不變;為1時,提高碼率;為2時,降低碼率;為3時,關(guān)掉此連接。

        圖6 報文內(nèi)容

        6 測試結(jié)果

        測試使用網(wǎng)線直連DSP和PC,如果PC網(wǎng)卡沒有自適應(yīng)交叉線/直通線功能,則必須制作交叉線來進行測試。

        在PC(IP地址為192.168.1.20)上使用控制臺ping配置的DSP的IP地址(192.168.1.10),并且使用wireshark軟件抓取PC網(wǎng)卡上的數(shù)據(jù)包。測試結(jié)果如圖7所示。

        圖7 wireshark測試結(jié)果

        首先,PC網(wǎng)卡向DSP發(fā)送第1個ping請求,DSP接收到后發(fā)送ARP請求,PC回應(yīng)自己IP對應(yīng)的網(wǎng)卡地址,DSP回應(yīng)ping請求。表明ARP協(xié)議和ICMP協(xié)議正確實現(xiàn)。

        在實際視頻序列傳輸中,采用foreman,news的QCIF以及CIF序列測試,解碼端能夠正確解碼播放,并且達到設(shè)定的幀率。對于誤碼重傳仿真測試,本文不再詳述。

        7 小結(jié)

        基于DSP的視頻傳輸有著廣闊的應(yīng)用空間,筆者提出了一個精簡協(xié)議棧的設(shè)計和實現(xiàn)方法,以及與EMAC底層驅(qū)動的連接,并針對H.264視頻流的特點做了一些改進。實驗證明,該協(xié)議棧可滿足多種應(yīng)用需求。

        [1]王力生,梅巖,曹南洋.輕量級嵌入式TCP/IP協(xié)議棧的設(shè)計[J].計算機工程,2007,33(2):246-248.

        [2]畢厚杰.新一代視頻壓縮編碼標準——H.264/AVC[M].北京:人民郵電出版社,2005.

        [3]Texas Instruments.TMS320C6000 DSP EMAC/MDIO module refer ence guide (Rev.A)[EB/OL].[2009-10-20].http://focus.ti.com/lit/ug/spru628a/spru628a.pdf.

        [4]方懷東,陳啟美.基于TMS320DM642的嵌入式TCP/IP協(xié)議棧的實現(xiàn)[J].電子技術(shù)應(yīng)用,2006,32(9):25-29.

        [5]謝希仁.計算機網(wǎng)絡(luò)[M].4版.大連:大連理工大學出版社,1989.

        猜你喜歡
        描述符網(wǎng)卡接收端
        在DDS 中間件上實現(xiàn)雙冗余網(wǎng)卡切換的方法
        基于擾動觀察法的光通信接收端優(yōu)化策略
        基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
        測繪學報(2022年12期)2022-02-13 09:13:01
        頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
        一種設(shè)置在密閉結(jié)構(gòu)中的無線電能傳輸系統(tǒng)
        新能源科技(2021年6期)2021-04-02 22:43:34
        基于多接收線圈的無線電能傳輸系統(tǒng)優(yōu)化研究
        Server 2016網(wǎng)卡組合模式
        Linux單線程并發(fā)服務(wù)器探索
        利用CNN的無人機遙感影像特征描述符學習
        挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
        偷拍视频网址一区二区| 欧美成人形色生活片| 999精品免费视频观看| 一区二区三区中文字幕有码| 亚洲人成伊人成综合久久| 亚洲综合极品美女av| 少妇下面好紧好多水真爽播放| 同性男男黄g片免费网站| 99久久久久久亚洲精品| 亚洲av综合日韩精品久久| 狂猛欧美激情性xxxx大豆行情| 欧美成人在线视频| 两个黑人大战嫩白金发美女| 精品理论一区二区三区| 国产一区二区三区亚洲| 亚洲中文字幕无码av永久| 国产精品_国产精品_k频道| 国产原创精品视频| 女同视频网站一区二区| 一区二区三区国产高清视频| 精品久久久久久无码中文字幕| 久久中文字幕人妻熟av女蜜柚m| AV中文码一区二区三区| 久久婷婷综合色一区二区| 在线视频夫妻内射| 亚洲精华国产精华液的福利| 久久亚洲成a人片| 国产精品久久国产精麻豆| 亚洲精品人成中文毛片| 中文字幕人妻被公上司喝醉| 国产哟交泬泬视频在线播放 | 抖射在线免费观看视频网站| 亚洲一区第二区三区四区| 少妇扒开毛茸茸的b自慰| 亚洲国产精品久久久久秋霞1 | 国内精品久久人妻互换| 日本女优在线一区二区三区| 久久久精品国产sm调教网站 | 久久精品国产亚洲av麻豆四虎| 亚洲在线精品一区二区三区| 精品久久人妻av中文字幕|