杜欣慧 蔡春花
【摘要】本文針對TMS320DM642芯片上集成的以太網(wǎng)通信接口,利用NDK開發(fā)套件,設計并實現(xiàn)了圖像數(shù)據(jù)編碼流的網(wǎng)絡傳輸?shù)墓δ?。詳細介紹了在TI C6000 DSP芯片上進行網(wǎng)絡通信開發(fā)的過程,對基于NDK套件的DSP網(wǎng)絡通信功能的開發(fā)具有一定的指導作用。
【關鍵詞】NDK;TCP/IP;以太網(wǎng)
1.引言
隨著嵌入式智能信息終端系統(tǒng)的日漸普及和互聯(lián)網(wǎng)技術的快速發(fā)展,越來越多的嵌入式設備需要進行實時網(wǎng)絡通信,因此對嵌入式設備的網(wǎng)絡通信的研究已成為熱門研究對象。TI公司推出的C6000系列DSP芯片在硬件上減少了嵌入式產品的網(wǎng)絡應用成本。而其推出的NDK(Network Development Kit)工具在軟件上加速了網(wǎng)絡開發(fā)的進程。NDK可支持常規(guī)的TCP/IP服務,因此很適合目前嵌入式系統(tǒng)的硬件環(huán)境,是實現(xiàn)C6000 DSP網(wǎng)絡通信的重要支撐工具。
本系統(tǒng)基于TMS320DM642芯片的以太網(wǎng)通信接口,利用NDK網(wǎng)絡開發(fā)套件,設計開發(fā)了圖像數(shù)據(jù)經(jīng)編碼以后進行網(wǎng)絡傳輸,完成了基于DM642的網(wǎng)絡服務器的功能。本文研究了如何在DM642上進行嵌入式網(wǎng)絡功能的開發(fā)。系統(tǒng)使用的硬件平臺為TI的TMS320DM642,軟件開發(fā)環(huán)境是CCS3.1。
2.DSP網(wǎng)絡通信的硬件結構
本文以 TI公司的TMS320DM642 DSP 作為信號處理的主芯片來構建系統(tǒng)?;贒M642芯片的嵌入式網(wǎng)絡通信系統(tǒng)的主要硬件部分有:視頻輸入模塊、DSP內核、以太網(wǎng)模塊、外部存儲模塊、JTAG調試模塊和電源模塊。
圖1為系統(tǒng)硬件結構圖,系統(tǒng)前端視頻輸入由視頻解碼芯片TVP5150實現(xiàn),數(shù)據(jù)采集格式為YUV4:2:2,TVP5150通過數(shù)據(jù)接口與DM642的VP口連接,并向其內部的FTFO傳送數(shù)據(jù),當FIFO中接收的數(shù)據(jù)達到所設定的閾值時,會觸發(fā)EDMA事件,此時EDMA將FIFO中的數(shù)據(jù)傳送到SDRAM中,當采集完一幀圖像數(shù)據(jù)EDMA產生中斷,在中斷服務程序中應用程序通過調用視頻驅動函數(shù)獲取當前采集的圖像數(shù)據(jù),并根據(jù)設定的情況完成數(shù)據(jù)處理。DM642實時處理采集的圖像數(shù)據(jù),壓縮編碼后通過MII接口與物理層設備相連接,將壓縮的數(shù)據(jù)打包并通過網(wǎng)絡發(fā)送到PC機進行解碼和顯示。
圖1 系統(tǒng)硬件框圖
3.系統(tǒng)的軟件設計
3.1 系統(tǒng)的軟件流程
RF5是TI公司推出的DSP軟件開發(fā)的起步代碼參考框架[1],它以DSP/BIOS為基礎,很適合在C6000系列DSP芯片上開發(fā)較復雜的應用。
本系統(tǒng)的軟件架構利用RF5模塊運行了四個任務線程:輸入任務、控制任務、處理任務和網(wǎng)絡任務。四個任務之間通過SCOM消息隊列和郵箱(MBX)進行通信。系統(tǒng)的軟件流程如圖2所示。
3.2 網(wǎng)絡通信的軟件設計
以太網(wǎng)通信的軟件實現(xiàn)主要分為三部分工作:首先編制好底層硬件驅動程序,然后在DSP/BIOS操作系統(tǒng)平臺上配置和運行NDK的TCP/IP協(xié)議棧,最后開發(fā)用戶定制的網(wǎng)絡應用程序。
網(wǎng)絡通信的軟件結構基于嵌入式操作DSP/BIOS和網(wǎng)絡開發(fā)包NDK工具等設計而成。如圖3所示,NDK開發(fā)套件主要是由五個部分組成[2],對應的函數(shù)庫分別是:NETTOOL.LIB、STACK.LIB、HAL.LIB、OS.LIB 和NETCRTL.LIB。
圖2 系統(tǒng)的軟件流程
圖3 NDK開發(fā)套件組成框圖
其中NETT OOL.LIB包含NDK提供的所有基于套接字的網(wǎng)絡功能和一些開發(fā)網(wǎng)絡程序序的其他工具。STACK.LIB是主要的TCP/IP網(wǎng)絡功能庫,它包括了從頂層套接字到底層鏈路層的所有功能。HAL.LIB庫是底層硬件驅動的抽象,它負責向TCP/IP協(xié)議棧提供具體的操作接口,來控制這些外圍設備的運行。OS.LIB庫是DSP/BIOS操作系統(tǒng)的抽象,提供與操作系統(tǒng)DSP/BIOS的接口。NETCTRL.LIB庫是協(xié)議棧的核心,它控制著TCP/IP與外界的聯(lián)系和互動,初始化TCP/IP協(xié)議棧和底層設備驅動;與底層設備驅動之間有接口并調度底層驅動事件進入TCP/IP協(xié)議棧;退出時將系統(tǒng)配置卸載并清理驅動。
3.2.1 以太網(wǎng)硬件驅動程序的設計
基于NDK開發(fā)套件的以太網(wǎng)底層驅動主要由三個部分組成[3]:網(wǎng)絡接口管理單元特定層,以太網(wǎng)微型驅動層和通用EMAC/MDIO片上支持庫層。以太網(wǎng)底層硬件的體系結構如圖4所示。
圖4 以太網(wǎng)驅動層體系結構
網(wǎng)絡接口管理特定層主要是作為NDK協(xié)議棧與以太網(wǎng)驅動層之間的接口。通用EMAC/MDIO片上支持庫定義了一些數(shù)據(jù)結構和API函數(shù),用于底層驅動配置時進行調用。以太網(wǎng)微型驅動層與具體的硬件平臺有關,其功能就是根據(jù)系統(tǒng)的需要,使用通用EMAC/MDIO片上支持庫中的API函數(shù)和相關的數(shù)據(jù)結構對EMAC和MDIO模塊進行相應的參數(shù)配置和功能控制。
在網(wǎng)絡通信中,以太網(wǎng)驅動程序負責向TCP/IP協(xié)議棧提供具體的操作接口,用以控制太網(wǎng)器件的配置和運行。
在DM642中,將EMAC控制模塊、MDIO模塊、EMAC模塊的控制寄存器通過DSP的配置總線映射到DSP存儲空間,可以通過對EMAC/MDIO模塊的寄存器組的設置、查詢等操作,實現(xiàn)約定的驅動函數(shù)的功能。
3.2.2 基于NDK的TCP/IP協(xié)議棧的配置與初始化
NDK套件的核心是TCP/IP協(xié)議棧,它也是一個分層的體系結構。NDK網(wǎng)絡模型中的NDK/EMAC層行使了原來TCP/IP模型中的傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層的功能[5]。與常規(guī)的TCP/IP開發(fā)不同,在開發(fā)嵌入式網(wǎng)絡應用程序時,TCP/IP協(xié)議棧必須首先進行正確的配置和初始化。NDK提供的網(wǎng)絡控制庫是TCP/IP協(xié)議棧配置、初始化和事件調度的核心。在進行協(xié)議棧的配置和初始化之前,首先要創(chuàng)建一個網(wǎng)絡調度的主線程,它是網(wǎng)絡程序的入口,協(xié)議棧的配置與初始化,以及所有的網(wǎng)絡控制活動都發(fā)生在該線程中[1]。
3.2.3 網(wǎng)絡應用程序的設計
網(wǎng)絡通信任務的開發(fā)采用客戶端/服務器(Client/Server)模式來實現(xiàn),本系統(tǒng)將開發(fā)板DM642作為網(wǎng)絡通信的服務器端,將另一臺PC機作為客戶端,客戶端和服務器端都采用套接字編程。為了進行圖像數(shù)據(jù)的可靠傳輸,采用可靠的面向連接的TCP協(xié)議進行編程。開發(fā)網(wǎng)絡通信程序的過程如下:首先在網(wǎng)絡的主線程---TCP/IP調度線程中定義一個句柄對象,并在主線程中通過NDK提供的API函數(shù)TaskCreate()創(chuàng)建一個新的網(wǎng)絡任務線程即網(wǎng)絡服務器任務。當網(wǎng)絡事件啟動后就會執(zhí)行和調度新的網(wǎng)絡服務器線程。網(wǎng)絡服務器任務與另一PC機的客戶端之間的通信過程如圖5所示:
圖5 DM642服務器端與客戶端通信的過程
首先在服務器端創(chuàng)建一個TCP型的SOCKET,通過bind()函數(shù)將創(chuàng)建的SOCKET與本地IP地址和端口號進行綁定。然后通過listen()函數(shù)監(jiān)聽來自客戶端的連接請求。相應地客戶端程序也會創(chuàng)建一個SOCKET,并用connect()函數(shù)向服務器請求建立連接,此時服務器端的listen函數(shù)就會監(jiān)聽到來自客戶端的連接請求,服務器端用accept()函數(shù)接受來自客戶端的連接請求,連接成功后就通過send()函數(shù)開始向客戶端發(fā)送編碼后的圖像數(shù)據(jù),此時客戶端就通過socket接收來自服務器端發(fā)送過來的數(shù)據(jù),當數(shù)據(jù)接收完畢后就會客戶端返回應答消息給服務器端,這樣就完成了編碼后圖像數(shù)據(jù)的傳輸。
4.實驗結果
根據(jù)以上設計,通過采集圖片進行服務器端與客戶端的通信。攝像頭為PAL制,采集的是標清圖片,以DM642作為服務器,以PC機運行客戶端,套接字接口緩沖區(qū)大小為5120Bytes,通過TCP模式來傳輸所采集的圖片,實驗結果如表1所示。
實驗表明,TI公司的 NDK開發(fā)套件是十分方便的,性能也十分優(yōu)良、可靠,可以最大限度的節(jié)省開發(fā)時間和成本,是嵌入式 DSP 網(wǎng)絡開發(fā)的上等之選。
表1 DM642 NDK網(wǎng)絡性能測試結果
5.總結
本文介紹了基于NDK的DSP網(wǎng)絡通信的硬件結構和軟件開發(fā)流程,詳細說明了在TI C6000系列芯片上進行網(wǎng)絡功能開發(fā)的一般過程。此網(wǎng)絡傳輸方案在DM642上進行調試、運行通過,實現(xiàn)了實時圖像數(shù)據(jù)的壓縮和圖片數(shù)據(jù)編碼流的網(wǎng)絡傳輸?shù)墓δ堋?/p>
該模型也可作為基于NDK套件網(wǎng)絡開發(fā)的一個通用模型,利用此模型可以很方便地實現(xiàn)H.264、MPEG4等多種視頻編碼/解碼算法及數(shù)據(jù)流的網(wǎng)絡傳輸。
實踐表明,TI公司推出的NDK網(wǎng)絡開發(fā)套件可以使技術人員快速開發(fā)基于DSP的網(wǎng)絡應用程序,而且隨著電子警察,數(shù)字機頂盒等網(wǎng)絡數(shù)據(jù)傳輸?shù)膹V泛應用,集成了網(wǎng)絡模塊的視頻處理芯片將會擁有更廣闊的應用前景。在研究TI C6000 DSP系列芯片的網(wǎng)絡通信功能的開發(fā)時,本文具有很好的指導意義。
參考文獻
[1]Todd Mullanix, Davor Magdic.Reference Frameworks for express DSP Software:RF5,An Extensive High Density System[DB/OL].Dallas,Texas Instrument Incorporated,2003.SPRA795A:16-18.
[2]Texas Instruments Incorporated.TMS320C6000 TCP/IP Network Developers Kit Users Guide[CP/DK].Dallas,Texas Instrument Incorporated,2004.SPRU39:45-47.
[3]Texas Instrument Incorporated.TMS320C6000 Network Developers Kit(NDK)Support Package Ethernet Driver Design Guide[CP/DK].Dallas,Texas Instrument Incorporated, 2009.9. SPRUFP2:23-26.
作者簡介:
杜欣慧(1985—),女,碩士研究生,主要研究方向:網(wǎng)絡安全及信息處理。
蔡春花(1987—),女,碩士研究生,主要研究方向:智能信息處理。