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