杜欣慧 蔡春花
【摘要】本文针对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—),女,硕士研究生,主要研究方向:智能信息处理。