機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
DM642上TCP/IP協(xié)議的實現(xiàn)及性能測試
DM642上TCP/IP協(xié)議的實現(xiàn)及性能測試
 更新時間:2009-6-5 9:06:15  點擊數(shù):1
【字體: 字體顏色

(清華大學(xué) 電子工程系 ,微波與數(shù)字通信技術(shù)國家重點實驗室,北京100084)

摘要:高性能600MHz的TMS320DM642是可編程的數(shù)字多媒體處理器,為了了解其對于多媒體數(shù)據(jù)通信的支持,本文針對DSP芯片上的網(wǎng)絡(luò)開發(fā)工具NDK進行了研究,測試了其在UDP傳輸過程中的CPU效率,對其在不同傳輸速率和二級緩存大小的條件下的表現(xiàn)給出了比較。說明了DM642是一款很適用于多媒體通信的數(shù)字信號處理器。

關(guān)鍵詞:DSP;DM642;NDK;TCP/IP;UDP;多媒體通信

中圖分類號:TP393.1  文獻標識碼:A

Implementation and Performance Analysis of TCP/IP Stack Based on DM642

DU Wen,SHEN Yong,TANG Kun

 (State Key Lab on Microwave and Digital Communications, Dept of Electronic Engineering, Tsinghua University, Beijing, 100084)

Abstract: 600MHz TMS320DM642 is an excellent Digital Signal Processor. To support its function of multimedia data transmission, our work focuses on the Network Development Kids- NDK on it. We have a test on DM642 CPU’s efficiency of transmission of UDP data package; make comparison of the performance under different hardware conditions, including different transmission speed and different size of L2 cache. DM642 performs well in multimedia communications area.

Key Words: DSP;DM642;NDK;TCP/IP;UDP;Multimedia Communications

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,嵌入式的多媒體終端日益普及,在嵌入式芯片上多媒體通信的研究逐漸成為熱門的課題。多媒體尤其是視頻圖像的實時通信有數(shù)據(jù)量大,延時要求嚴格等特點,而嵌入式芯片在處理能力、存儲容量上與通用芯片都有差距,因此能否利用有限的資源實現(xiàn)高效率的通信協(xié)議,是嵌入式芯片能否實現(xiàn)多媒體通信的關(guān)鍵。

TI(Texas Instrument)公司是世界領(lǐng)先的DSP制造商,它們的C6000系列芯片在嵌入式芯片市場獲得了巨大的成功,DM642就是該系列的最新產(chǎn)品。而新推出的NDK開發(fā)套件在DM642上實現(xiàn)了高效率的TCP/IP協(xié)議棧,我們選擇DM642為平臺,研究和分析了NDK實現(xiàn)的高效率通信協(xié)議。

1.開發(fā)平臺和測試環(huán)境的介紹

1.1 TI DM642 DSP開發(fā)平臺

TI公司的DM642是一款專門面向多媒體應(yīng)用的專用DSP。該DSP內(nèi)部時鐘高達600MHz,8個并行運算單元,最大處理能力達到4800MIPS,外部總線時鐘100MHz。DM642的芯片集成了64個32bit的通用寄存器,能夠在一個時鐘周期內(nèi)處理4個16bit的乘法和8個8bit的乘法。為了增強多媒體功能,芯片還集成了3個高精度、可配置的視頻端口,10/100Mbps的以太網(wǎng)MAC,面向音頻應(yīng)用的多通道音頻串口(McASP),66MHz 32bit的PCI以及擁有64個通道的增強型DMA等接口。這些都使得DM642 DSP特別適用于音視頻的處理和通信。

1DM642 DSP處理器

DM642的高性能還得益于DSP內(nèi)部的兩級高速緩存(cache)的結(jié)構(gòu)設(shè)計,芯片的第一級緩存包括16KByte的程序緩存(L1P)和16KByte的數(shù)據(jù)緩存(L1D),第二級緩存(L2)有256KByte,程序空間和數(shù)據(jù)空間是共用的。它可以設(shè)置成存儲單元(memory),高速緩存(cache),或者是這兩者的結(jié)合,具體的分配可以由程序員配置。

圖2:DM642兩級緩存工作原理

CPU只對L1的數(shù)據(jù)進行訪問,程序代碼和數(shù)據(jù)必須經(jīng)過外部存儲器到L2,L2L1的逐級搬移才能被CPU訪問。L2存儲單元和外部設(shè)備的數(shù)據(jù)交換由功能強大的增強型DMA控制器控制,因此在CPU處理片內(nèi)的數(shù)據(jù)時可以通過EDMA把片外的數(shù)據(jù)倒入片內(nèi),達到同步工作以提高效率。由于內(nèi)部存儲器的工作頻率與DSP內(nèi)部時鐘同頻,而遠遠高于片外存儲器的工作頻率,這就解決了DSP外部時鐘頻率小于內(nèi)部時鐘頻率的問題。有實驗表明,合理利用兩級緩存配合低工作頻率的外部存儲器,系統(tǒng)的效率能夠達到全部使用高工作頻率的內(nèi)部存儲器的80%90%。

同時DM642可與TIC64x DSP目標代碼完全兼容,這大大降低了客戶的系統(tǒng)成本,簡化了開發(fā)進程。

聞亭(Wintech)公司是TI的第三方合作伙伴,該公司推出的DM642EVM板是一個基于DM642芯片的低成本的獨立開發(fā)平臺,可滿足視頻設(shè)計人員利用最新音頻和視頻算法套件快速進軍市場的需求,適用于 VoIP、視頻點播 (VOD)、多通道數(shù)字錄像應(yīng)用,以及高質(zhì)量的視頻編解碼解決方案。板上有一個600MHzDM642芯片,還集成了4MB Flash,32MB 100MHz SDRAM,另外還有音視頻采集和輸出端口,10/100M以太網(wǎng)接口,仿真器的JTAG接口。EVM板將高性能的DSP內(nèi)核與集成的音頻、視頻及連接性選項進行了完美的結(jié)合。我們的TCP/IP協(xié)議棧就是在該板上實現(xiàn)的。

1.2 TCP/IP網(wǎng)絡(luò)通信協(xié)議棧簡介

隨著近幾年網(wǎng)絡(luò)技術(shù)的發(fā)展,以TCP/IP為代表的通用網(wǎng)絡(luò)技術(shù)已經(jīng)成為網(wǎng)絡(luò)通訊的標準。

3 RTP/UDP/IP協(xié)議棧

上圖是典型的IP分層協(xié)議棧,底層協(xié)議對通信的影響主要表現(xiàn)在MTU(Maximum transmission unit)的大小對上層打包的制約,例如以太網(wǎng)的802.3協(xié)議和無線網(wǎng)的801.1協(xié)議對包長都有限制,否則就會丟包,因此在上層協(xié)議的實現(xiàn)時要注意這個問題。IP是最為成功、應(yīng)用最為廣泛的網(wǎng)絡(luò)層協(xié)議,它提供一種盡力傳送的服務(wù)。在傳輸層,IP網(wǎng)絡(luò)通常使用兩種協(xié)議,即TCPUDP。TCP提供一個面向字節(jié)的,有保證的傳輸服務(wù)。在差錯控制方面,主要使用重傳和超時等機制。由于它的延時不可預(yù)測性,并不適合實時通信業(yè)務(wù)。UDP提供一個簡單的不可靠的數(shù)據(jù)報服務(wù)。UDP報頭中包含校驗和,能夠用來檢測和丟棄包含誤碼的包。它適合進行實時通信,本文就是研究DM642UDP傳輸數(shù)據(jù)的效率。RTP是典型的基于UDP/IP的應(yīng)用層傳輸協(xié)議,它是面向會話的,一個會話與一個傳輸?shù)刂罚?FONT face="Times New Roman">IP地址+UDP端口)相關(guān)聯(lián)。一個RTP包包括RTP Header,可選的Payload Header,以及Payload。

2 TI通信開發(fā)套件NDK

2.1 NDK開發(fā)套件的高效率設(shè)計

為了加速其高檔DSP的網(wǎng)絡(luò)化進程,TI公司結(jié)合其C6000系列芯片推出了TCP/IP NDK (Network Developer’s Kit)開發(fā)套件。

NDK主要的組件包括:(1)支持TCP/TP協(xié)議棧程序庫。其中主要包含的庫有:支持TCP/IP網(wǎng)絡(luò)工具的庫,支持TCP/IP協(xié)議棧與DSP/BIOS平臺的庫,網(wǎng)絡(luò)控制以及線程調(diào)度的庫(包括協(xié)議棧的初始化以及網(wǎng)絡(luò)相關(guān)任務(wù)的調(diào)度)(2)示范程序。其中主要包括DHCP/Telnet客戶端,HTTP/數(shù)據(jù)服務(wù)器示范等。(3)支持文檔 包括用戶手冊、程序員手冊和平臺適應(yīng)手冊。

NDK采用緊湊的設(shè)計方法,實現(xiàn)了用較少的資源耗費來支持TCP/IP。從實用效果看,NDK僅用200~250K程序空間和95K數(shù)據(jù)空間即可支持常規(guī)的TCP/IP服務(wù),包括應(yīng)用層的telnetDHCP、HTTP等。為了最大限度地減少資源消耗,TI為其NDK采用了許多特殊的技巧,重要的有:(1UDP socketRAW socket不使用發(fā)送或接收緩沖區(qū);(2TCP socket使用發(fā)送緩沖區(qū),接收緩沖區(qū)依配置文件而定;(3)低層驅(qū)動程序與協(xié)議棧之間通過指針傳遞數(shù)據(jù),不對包進行復(fù)制拷貝;4、設(shè)置專門的線程清除存儲器中的碎片和檢查存儲器泄露。因此,NDK很適合目前嵌入式系統(tǒng)的硬件環(huán)境,是實現(xiàn)DSP聯(lián)網(wǎng)通信的重要支撐工具。

NDK的軟件開發(fā)環(huán)境是TI的開發(fā)工具CCScode composer studio)。它包含有實時操作系統(tǒng)DSP/BIOS和主機與目標板之間的實時數(shù)據(jù)交換軟件RTDX

2.2  NDK的配置和使用

CCS下使用NDK需要在以下幾點上做特別處理:

1)設(shè)置DSP/BIOS

PRD設(shè)置主時鐘。硬件抽象層的時鐘驅(qū)動需要一個100ms啟動一次的PRD函數(shù)作為主時鐘,函數(shù)名是llTimerTick()。

HOOKTCP/IP協(xié)議棧設(shè)置保存的空間。OS庫的任務(wù)調(diào)度模塊需要調(diào)用hook來保存和調(diào)用TCP/IP協(xié)議棧的環(huán)境變量指針,這兩個hook函數(shù)是NDK_hookInit() NDK_hookCreate()。

2)包含文件和庫文件

請注意編譯時需要包含庫文件和文件路徑,一般默認為c:\ti\c6000\ndk\inc

3CCS工程編譯時的鏈接順序

CCS一般按照特定的順序來鏈接目標函數(shù)和庫文件,NDK是對這個鏈接順序很敏感的,錯誤的順序可以導(dǎo)致重復(fù)定義符號甚至不正確執(zhí)行等錯誤。為避免這個情況,可以在CCS里選擇Link Order"-> "build options對話框,將文件按照一定順序添加并且將庫文件添置到連接順序的最后,推薦的順序為:NETCTRL.LIB,HAL_xxx.LIBNETTOOL.LIB,STACK.LIBOS.LIB。

在初始化啟動協(xié)議棧之前,要為其分配一塊工作內(nèi)存(SDRAM),命令是_mmBulkAllocSeg( EXTERN1 )。還要調(diào)用fdOpenSession()來初始化文件指針向量表,否則創(chuàng)建socket的時候?qū)⒊霈F(xiàn)錯誤。

我們將發(fā)送/接收設(shè)置定義為一個任務(wù),在創(chuàng)建任務(wù)句柄以前,我們應(yīng)該用NC_SystemOpen()打開網(wǎng)絡(luò)功能并進行設(shè)置,在系統(tǒng)關(guān)閉前也要進行相應(yīng)的處理。

使用NDK提供的socket API函數(shù)需要注意下面一些問題:

(1)NDK中對socket API 通過一個文件指針接口與操作系統(tǒng)相連接,因此要調(diào)用文件指針向量表初始化和關(guān)閉函數(shù)對文件系統(tǒng)進行相應(yīng)操作。

(2)NDK中并沒有提供windows API中強大的select函數(shù),但是可以用fdselect實現(xiàn)一些相應(yīng)的工程?梢韵嗷(yīng)得API函數(shù)還有NDK中的fdclose 和標準的close, NDK中的fderror和標準的errno.(3) NDK提供了很多網(wǎng)絡(luò)工具的支持的函數(shù),比如和DNS相關(guān)的一些函數(shù),可以代替標準API中的getpeername, gethostname等。另外還有關(guān)于IGMP的一些函數(shù)可以用來支持組播,但是只支持作為組播用戶,不能支持作為組播服務(wù)器。

3NDK傳輸UDP數(shù)據(jù)包效率測試及性能分析

3.1測試平臺結(jié)構(gòu)

我們研究了在NDKCPUUDP數(shù)據(jù)包發(fā)送接收的效率,這個測試分成兩部分:一部分是測試從DM642PC機發(fā)送UDP數(shù)據(jù)包時,在不同的傳輸速率和不同的L2 cache大小時的CPU占用率,另一部分是測試DM642接收從PC機發(fā)送來數(shù)據(jù)包時,在不同的傳輸速率和不同的L2 cache大小時的CPU占用率。我們所使用的工具是在CCS下的NDK提供的socket API函數(shù)和在visual studio下提供的winsocket API。圖4是測試環(huán)境的示意圖。

4NDK測試環(huán)境示意圖

3.2 測試平臺的配置和實現(xiàn)

由于接收和發(fā)送程序十分相似,我們僅以發(fā)送程序舉例。創(chuàng)建發(fā)送數(shù)據(jù)的程序為一個任務(wù),在DSP/BIOS中,任務(wù)對象就是被TSK模塊管理的線程。TSK模塊根據(jù)任務(wù)的優(yōu)先級和當(dāng)前的執(zhí)行狀態(tài)動態(tài)的調(diào)度。DSP/BIOS總共有15個任務(wù)優(yōu)先級可以使用,并且提供了一組函數(shù)來操縱任務(wù)對象,包括建立、刪除、設(shè)置任務(wù)對象。任何任務(wù)對象都處于下面幾種狀態(tài)之一:運行態(tài),就緒態(tài),阻塞態(tài),終止態(tài)。

         在這個工程中,我們在網(wǎng)絡(luò)控制的程序中進行任務(wù)的創(chuàng)建,圖5是創(chuàng)建任務(wù)的流程圖:

5:傳輸任務(wù)創(chuàng)建流程圖

其中創(chuàng)建任務(wù)的語句為:TaskCreate( tsk_udp, "udp_video", 5, 0x1000, peer_addr , 12345, 12345 )。理論上,可以通過設(shè)置兩個task的方法來增加數(shù)據(jù)傳輸?shù)乃俾,但是注意這兩個task應(yīng)該用不同的端口進行傳送。任務(wù)調(diào)度的應(yīng)用程序為:

static void tsk_udp( IPN IPAddr, int PeerPort , int LocalPort)

{        ……

// 創(chuàng)建 socket

s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

……

// 設(shè)置要綁定的地址端口屬性

bzero( &sin1, sizeof(struct sockaddr_in) );

sin1.sin_family      = AF_INET;

sin1.sin_len         = sizeof( sin1 );

sin1.sin_port        = htons(LocalPort);

//綁定IP地址和端口

if( bind( s, (PSA) &sin1, sizeof(sin1) ) < 0 )

{ goto exit_tsk;}

//設(shè)定目的地址端口屬性

bzero( &sin1, sizeof(struct sockaddr_in) );

sin1.sin_family    = AF_INET;

sin1.sin_len       = sizeof( sin1 );

sin1.sin_addr.s_addr = IPAddr;

sin1.sin_port      = htons(PeerPort);

……

// 分配工作緩沖區(qū)

if( !(pBuf = mmBulkAlloc( 1024 )) )

{goto exit_tsk;}

// 一下開始發(fā)送數(shù)據(jù)

for(;;)

{        // 填充發(fā)送數(shù)據(jù)的緩沖區(qū)

*(int*)pBuf=send_udp_count++

// 發(fā)送數(shù)據(jù)

if( sendto( s, pBuf, 1000, 0, &sin1, sizeof(sin1) ) < 0 )

         { goto exit_tsk;//break;}

// 清空數(shù)據(jù)區(qū)

mmZeroInit( pBuf, (uint)test );

//設(shè)置發(fā)送數(shù)據(jù)率

       TaskSleep(8);    // 1Mbit/s

}

……

}

測試里面有兩個關(guān)鍵參數(shù)需要設(shè)置,一個是發(fā)送(接收)的數(shù)據(jù)率和DM642內(nèi)部第二級緩存的大小。收發(fā)的數(shù)據(jù)率可以通過改變?nèi)蝿?wù)掛起的時間間隔長度來改變。系統(tǒng)函數(shù)TaskSleep(n)表示每隔n毫秒執(zhí)行一次發(fā)送,我們設(shè)定每次發(fā)送1000 Byte的數(shù)據(jù),這樣TaskSleep(8)表示1Mbit/s的傳輸速率,TaskSleep(4)表示2Mbit/s的傳輸速率,以此類推。

L2 cache大小的改變可以通過以下語句來設(shè)置:

CACHE_setL2Mode(CACHE_64KCACHE)表示設(shè)置了64K L2 CacheCACHE_setL2Mode(CACHE_128KCACHE)表示設(shè)置了128K L2 Cache,以此類推。

3.3 測試結(jié)果和性能分析

我們在DM642評估版上,采用標準的recvfrom函數(shù)進行數(shù)據(jù)接收,以無連接的UDP協(xié)議與windows PC進行相互傳輸。對不同傳輸速率和不同大小的二級緩存下CPU的占用率進行了比較。

CPU占用率=空閑周期可完成的低優(yōu)先級任務(wù)/ 執(zhí)行傳輸任務(wù)時可完成的低優(yōu)先級任務(wù)

其中接收和發(fā)送數(shù)據(jù)均設(shè)為每次1000 Byte,評測結(jié)果在下面四個圖表里面顯示出來。

1:由DM642發(fā)送UDP數(shù)據(jù)包的CPU占用率(%

6DM642發(fā)送UDP數(shù)據(jù)包CPU占用率比較圖

2:由DM642 UDP數(shù)據(jù)包的CPU占用率(%

7DM642接收UDP數(shù)據(jù)包CPU占用率比較圖

從上面的比較可以看出 DM642發(fā)送和接收數(shù)據(jù)包時的CPU占用率均隨著網(wǎng)絡(luò)傳輸速率的增加而提高,而且基本上呈線性關(guān)系。因為收發(fā)數(shù)據(jù)是對數(shù)據(jù)簡單的搬移,它的復(fù)雜度是隨著數(shù)據(jù)的增加而線性增長的,在高速緩存一定得

情況下CPU的占用率線性增加。

而第二級緩存的大小對CPU的占用率也有影響,一般而言是L2 cache越大,CPU占用率越小,而且隨著收發(fā)數(shù)據(jù)率的變大而顯得更加明顯,這個得益于DM642兩級緩存的工作原理和強大的DMA功能。

L2 cache增大帶來的另一個影響是CPU片內(nèi)存儲容量的減少,使得片內(nèi)能放下的代碼段和數(shù)據(jù)段就比較少,這樣反而會減緩程序的運行速度,這在處理復(fù)雜的編解碼程序,數(shù)據(jù)段和代碼段比較多時尤為明顯,這就需要程序員根據(jù)實際情況統(tǒng)籌安排合理配置。

4.總結(jié)與展望

為了研究在嵌入式芯片上進行高速多媒體通信的可行性,本文討論了TI DM642NDK設(shè)計的原理,并進行了與PC機實時數(shù)據(jù)通信的測試。測試表明TI公司推出的NDK套件在DM642芯片上實現(xiàn)了高效率的TCP/IP傳輸協(xié)議,即使高達16Mbit/s的傳輸速率,CPU的占用率也不到10%,這使得它完成多路的視頻傳輸也綽綽有余,這是DM642能夠廣泛應(yīng)用于各種多媒體通信設(shè)備和終端的有力保證。再配合DM642芯片強大的多媒體處理功能,使得其在多媒體通信市場上有廣闊的前景。值得我們?nèi)パ芯亢完P(guān)注。

 

 參考文獻:

[1] TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor Data manual

[2]  TMS320DM642  Evaluation  Module

Technical Reference

[3] Texas Instruments TMS320C6000 TCP/IP Network Developer’s Kid Programmer’s Reference Guide

[4]  李方慧,王飛,何佩琨。TMS320C6000系列DSPs原理和應(yīng)用(第二版)。北京:電子工業(yè)出版社

[5]  W.Richard.Stevens。TCP/IP Illustrated。北京:機械工業(yè)出版社

<!--插入廣告JS代碼-->

傳輸速率(Mbit/s

64KCache

128KCache

256KCache

0.4

0.29

0.21

0.19

0.8

0.58

0.45

0.38

2

1.1

1.02

0.96

4

2.64

2.26

1.88

8

5.11

4.38

3.64

16

9.86

8.25

6.89

傳輸速率(Mbit/s

64KCache

128KCache

256KCache

0.4

0.2

0.13

0.14

0.8

0.35

0.28

0.27

2

0.82

0.7

0.67

4

1.62

1.34

1.34

8

3.65

2.69

2.68

  • 上一篇: FRAM在DSP開發(fā)系統(tǒng)中的應(yīng)用
  • 下一篇: 2048點FFT在TMS320C240x定點DSP上的實現(xiàn)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

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

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

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