基于TMS320DM642的网络摄像机的设计及实现
扫描二维码
随时随地手机看文章
从技术实现方式来讲,通常是采用网络摄像机来实现。目前市场上的网络摄像机一般有两类:一类是普通摄像机加视频网关构成,但是这种方案体积庞大、操作繁琐;另一类是把全部网络接入功能都集成在摄像机中,其体积小、功能全、易于使用和维护。后一类摄像机有多种解决方案,本文提出一种基于嵌入式DSP的设计方案,并且给出具体的硬件及软件实现。
1 硬件系统设计
1.1 嵌入式处理器TMS320DM642
TMS320DM642(以下简称DM462)是TI公司近来发布的新一代多媒体处理器,它基于其第二代高性能的VelociTI VLIW结构,适用于多种数字媒体应用。DM642的时钟频率为600MHz,指令速度高达4800MIPS。这款DSP的两大特色在于:第一,拥有三个可配置的视频接口(VP),可同时采集三路视频信号;第二,集成了以太网接口,10/100Mbps模式自适应,能工作在全双工或半双工模式下,并具有硬件流控制和服务质量保证(QoS)支持。DM642的功能十分强大,它是构成多媒体通信系统的最佳平台之一。
1.2 硬件整体架构
本系统的硬件平台由六部分组成,分别是视频采集、数据存储、视频处理、视频显示、网络和电源管理。其结构框图如图1所示。
视频采集部分采用模拟PAL制摄像头,配合高精度视频A/D转换器得到数字图像。A/D转换器采用TI公司的TVP5145芯片,其采样精度达到10bit,输出支持CCIR-656和BT656等格式。
数据存储部分的RAM采用三星公司的SDRAM。为配合DM642的64位EMIF(外部存储器接口),使用四片SDRAM,每片工作在16位模式,单片容量为32MB。数据存储部分的ROM采用ATMEL公司的NOR型的Flash芯片,总容量为256KB,数据总线为8位。本系统中的SDRAM用来存放系统运行时的代码以及临时图像数据,Flash用来保存系统自启动代码以及系统程序代码。
视频显示部分采用数字LCD,可省去数/模转换芯片,只需一片CPLD驱动LCD。CPLD采用Altera公司的MAX3000系列。这部分作为辅助功能,可根据实际运用场合进行选择。
DM642的以太网控制器(即EMAC)属于数据链路层,因此需外接物理层芯片才能进行网络通信。这里采用Intel公司的LXT971A芯片,它提供了MII(Media Independent Interface)接口,可以方便地和DM642连接。
电源管理部分在一个硬件系统设计中占有举足轻重的地位。本系统的电源模块采用MAXIM公司的解决方案,包括一片MAX1762芯片(产生1.4V电源给DM642内核供电)以及两片MAX1626(分别产生3.3V电源给DM642的I/O供电和产生5V电源给LCD的逆变器供电)。
2 设备驱动设计
TI为DM642的VP口开发了一个两层设备驱动模型。上层驱动称为Class Driver,用于连接应用程序和下层驱动;下层驱动称为Mini Driver,更靠近底层硬件。应用时只需根据这个模型编写驱动程序就可以了。
对于以太网口,TI提供了一个网络开发组件(NDK),为在DSP上开发网络应用程序提供了平台。有了这个平台,在开发网络应用程序时,就不用过多考虑数据如何封装成IP包,也不用过多关心TCP/IP协议内部的工作机制,这样可以缩短产品的开发周期及上市时间。
2.1 视频端口的两层设备驱动模型
两层设备驱动模型如图2所示。最上层是应用程序,最下层是底层硬件,包括DM642的VP口和视频A/D芯片。中间大花括号括起来的部分即为设备驱动。图中还有一层芯片支持库(CSL),它提供配置及控制片上外设的C语言接口。
根据VP口的特点,设备驱动的两层驱动模型的每一层又细分了两层。从图2可以看到,把Class Driver分为FVID Class Driver和GIO Class Driver。前者更靠近应用程序,它提供一些特别适用于图像的API函数;后者提供与Mini Driver进行通信的API函数。Mini Driver分成通用部分和特殊部分,这样分的优势在于:当改变硬件构成时,无需重写Mini Driver,只需修改特殊部分即可,提高了代码的重复使用性。
2.2 网络开发组件
网络开发组件的核心即为一系列TCP/IP协议栈库。包括:(1)栈库和网络工具库,它含有一些经过优化编译的协议栈代码;(2)操作系统适应库,它用来协调TCP/IP协议栈和DSP/BIOS之间的接口;(3)网络控制及调度库,它决定TCP/IP环境的初始化以及网络相关事件是如何被调度的;(4)多种硬件抽象层平台库,为TI公司的多种开发板(比如DSK、TEB和EVM等)提供支持。由于本系统为自行开发,所以不涉及HAL。
协议栈库的流程框图如图3所示,其中灰色模块分别代表前述五个库。
3 软件设计及实现
TI公司的DSP开发软件包括集成开发环境(CCS)、 实时操作系统(DSP/BIOS)、第三方算法库标准(eXpressDSP)。DSP/BIOS是一个用户可裁剪的实时操作系统,包含内存管理、线程管理、中断、外设管理和任务调度等功能。另外,还需使用JPEG标准进行图像压缩,因为采用JPEG进行网络传输时,如果出现网络短暂阻塞,可将当前帧抛弃而不影响下一帧的图像,所以能够保证系统的实时性要求。在本系统中调用了TI提供的JPEG算法库来完成JPEG压缩。
3.1 软件流程结构
根据本系统的要求,整个软件系统分为五个任务模块,每个模块完成各自的功能。这五个任务模块分别为输入任务、处理任务、输出任务、网络任务以及控制任务,其流程如图4所示。下面叙述任务间调度及分别完成的功能。
(1) 输入任务
该任务模块主要完成将VP口采集到的数字图像存入动态分配的内存空间中,图像格式为YUV4:2:2(可根据需要进行设置),分辨率为720×480。然后对该图像色度信号进行4:2:0重采样,这样做的目的是为了调用JPEG算法库。完成以上两步后,输入任务模块发出一个消息给处理任务模块,告知图像在内存空间中的位置,让处理任务模块去做进一步的处理。接着,输入任务模块等待处理任务模块回复,收到回复消息后,继续采集下一帧图像。
(2) 处理任务模块
该任务模块主要完成JPEG压缩。处理任务模块首先获得一个从输入任务模块发出的消息,并且从中得到图像数据。接着进行JPEG压缩,如前所述,压缩调用了JPEG算法库,其压缩的速度和性能比较好。在处理任务模块完成图像压缩后,发出三个消息:第一个发给输入任务模块,使其继续采集下一帧图像;第二个发给网络任务模块,把JPEG图像在内存中的位置以及字节数告诉网络任务模块供其处理,同时,处理任务模块将等待网络任务模块回复消息;最后一个消息发给输出任务模块,告知原始图像在内存中的位置,让输出任务模块把它输出到LCD进行显示。同样,它也将等待输出任务模块回复消息。
(3) 输出任务模块
该任务模块完成将采集到的原始图像输出到LCD进行显示。由于采集到的是YUV图像,而本系统的LCD使用RGB信号作为输入,这需要经过数字图像格式转换,该转换交由CPLD完成。
(4) 网络任务模块
该任务模块完成网络传输功能。分三部分实现:第一部分先获得一个从处理任务模块发出的消息,从中得到JPEG图像的大小和在内存中的位置,并通过UDP协议的Socket套接字将其发送给客户。同时发出一个消息给处理任务模块,告知已获得JPEG图像,可进行下一帧图像的压缩。第二部分进行协议栈的初始化,包括IP地址、子网掩码和网关的设定。如果要连接Internet,必须设置DHCP,动态分配IP地址。除此以外,还要选择哪种网络服务,DM642支持Telnet、HTTP、Data server等服务,本系统使用HTTP服务。第三部分为加载网页,在PC机上用HTML编写网页,在该网页中内嵌一段JavaApplet小程序以实现本系统和客户端的交互。HTML文件不能直接加载给DM642,必须在DOS环境下使用binsrc插件把它转换成用C语言描述的数据数组。当用户通过IE浏览器访问本系统时,HTTP服务器通过嵌入式文件系统访问内存中的HTML网页(即访问那个用C语言描述的数据数组),该文件系统是基于RAM的文件系统,它驻留在OS.LIB中。同时,JavaApplet小程序随同HTML文件下载到客户端并由IE浏览器解释执行。
(5) 控制任务模块
该任务模块完成在HTML网页上对JPEG压缩性能的控制。在网页中接收的用户自定义参数,通过DSP/BIOS中的邮箱机制传递给处理任务模块,从而修改JPEG的压缩参数,改变压缩质量。图5所示即为接收用户修改参数的对话框,1表示压缩质量最差,100表示压缩质量最好。
这些任务的初始化在系统的main( )函数里实现。另外,对DM642芯片的初始化(包括初始化寄存器、二级缓存(L2)的设置等)均在dm642init( )函数中完成,该函数定义在DSP/BIOS的用户初始化函数列表中,在此不再赘述。
本文提出的基于TMS320DM642的网络摄像机的设计方案已成功实现。在客户端打开IE浏览器,即可看到实时监控的图像,图像显示较流畅,在局域网内的图像帧率可以达到30帧/秒。而且可以同时采集多路视频信号,满足多个客户的连接请求。本系统满足了目前宽带环境中的网络视频会议以及视频监控的要求,其应用前景十分广泛。