摘要:TMS320DM642是TI公司推出的一款针对多媒体处理领域应用的芯片。文中简要介绍了TMS320DM642芯片的性能特点和在其上编写视频采集驱动的原理,结合TMS320DM642芯片类/微型驱动模型,提供了按帧采集ITU-RBT.656数据驱动的实现方法,并详细讨论视频采集驱动的硬件配置及软件设计中的帧缓存管理、同步及数据搬运等关键技术。 关键词:TMS320DM642芯片;视频采集;同步;类/微驱动
TMS320DM642 是一款针对视频和图像解决方案的高性能数字多媒体处理器,具有极强的处理性能" 高度的灵活性和可编程性。因此主要用于视频信号处理和通信。结合合适的编码器控制算法,具有较高运算速度的TMS320DM642DSP 芯片可以作新电感器生产一带视频压缩标准H.264编、解码器的硬件平台,实现满足应用需求的H.264 编码器【1】。
驱动程序位于计算机软件的最低层(HAL 为硬件抽象层) , 直接与硬件设备的特性联系在一起。编写驱动程序不仅要了解设备的特性, 而且还要了解操作系统的结构难度较大【2】。本文结合TMS320DM642芯片特点详细介绍了视频采集驱动开发。并详细讨论了驱动中帧缓存管理、同步及数据搬运等关键技术的实现。
1 TMS320DM642DSP芯片性能特点
DM642[3]是TI公司推出的一款针对多媒体处理领域应用的DSP,它是在C64x的基础上,增加了很多外围设备和接口。主要的片上外设有:三个可配置的视频接口,可以和视频输入,输出或传输流输入无缝连接,VCXO 内插控制端口(VIC), I2C总线模块等。这些接口和外设使得DM642比C6416更适合处理视频码流。
TI针对C64x系列的DSP提出了一种类/微型驱动模型[4],这种模型在功能上将设备驱动程序分为依赖硬件层(微型驱动)和不依赖硬件层(类驱动两层),两层之间使用插件电感标准的接口进行通信。类驱动为设备驱动的顶层,向应用程序提供统一的API接口,是应用程序与微驱动之间的接口。微驱动为设备驱动的底层,它直接处理所有外部设备的控制和初始化工作。类、微驱动程序的模型如图1所示。
2 视频采集驱动硬件配置
本文采用类/微驱动模型编写DM642芯片视频端口的视频采集驱动程序,充分利用片上的VP视频端口[5]和EDMA。经过A/D转换后的视频数据首先缓存到视频端口的FIFO中,FIFO写满之后通知EDMA将这些数据按照一定的规则搬运到SDRAM中。应用程序通过类驱动向微型驱动提交I/O请求,类驱动根据微型驱动的返回参数实现同步I/O请求。本文详细讨论按帧采集8 bit ITU-R BT.656视频数据驱动的实现方法。
2.1视频端口配置
TMS320DM642有三个可配置的视频端口:VP0、VP1和VP2,片式电感与视频采集芯片连接,无需外加逻辑控制电路和FIFO缓存,只需编程者编写相关驱动程序,就可实现图像采集或显示。每个视频端口各有20根数据输入输出管脚;每个端口又可以分为A和B两个通道,分别处理一路视频的采集或显示;各端口又可以配置为8/10-bit ITU-R BT.656模式、8/10-bit Raw 模式、8/10-bit Y/C模式、16/20-bit Raw模式和TSI模式等。
视频端口配置为双通道视频采集时,0~9bit管脚分配给通道A,10~19bit管脚分配给通道B。由于采样后的数据按8bit量化,所以仅使用每个通道的后8个管脚,即将VPxD2~9,VPxD12~19(x对应三个端口0,1,2)直接与A/D芯片的8根输出管脚相连。输入的PAL/NTS功率电感器C模拟信号经过视频解码芯片A/D后形成的数字视频信号直接进入相应的视频端口中。
当采集8 bit ITU-R BT.656数据时,视频端口接收A/D的亮度与色度的复合数据流(YUV422,称为packet格式:Cb,Y,Cr,Y,Cb,Y,Cr ),然后将它分解成三个单独的数据流(planar格式),分别是Y,U,V,再将分离后的数据打包存放到各自的FIFO中。
将FIFO分成3部分,其中为亮度数据分量分配的FIFO为1280B,为每个色度数据分量分配FIFO为640B;每个FIFO都有相关的存储器映射地址:YSRC,CBSRC和CRSRC;EDMA将使用一体电感这些地址作为数据搬运操作的源地址。每个视频端口最多可以使用六个EDMA通道,当某个FIFO的计数器到达VCTHRLDn寄存器设置的数值时,就可以触发相应的EDMA(增强的直接存储器存取控制器)事件。

|