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帧/秒.而且可以同时采集多路视频信号,满足多个客户的连接请求.本系统满足了目前宽带环境中的网络视频会议以及视频监控的要求,其应用前景十分广泛.