积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> 应用论文
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
基于TMS320DM642的视频采集驱动程序的实现
 
作者:鹿宝生, 陈启美   来源:电子技术应用    点击数:88   更新时间:2008-7-28
您可以添加到网摘 让更多人关注此文章:

    摘 要: 从两个方面描述了基于DSP芯片TMS320DM642的视频采集驱动程序:在C64x系列DSP的实时操作系统DSP/BIOS上,使用类/微驱动模型的程序框架构建;基于EDMA的视频数据的实时传输。实践表明,该程序解决了图像采集和图像实时处理之间的关系,简化了应用程序对驱动的调用。
关键词: 视频采集驱动 DSP DSP/BIOS 类/微驱动模型 EDMA


  视频终端的核心是图像的数字化处理模块。基于PC机的数字视频处理,给出了算法研究的途径,而基于高速DSP的应用模块才提供了实时嵌入式视频处理的可能。然而,基于DSP的海量视频数据的实时处理的关键则是实时、合理的视频数据采集。本文针对自行研制的基于TMS320DM642(以下简称DM642)DSP的视频处理板卡,使其在C64x系列DSP的实时操作系统DSP/BIOS的环境下运行,实现基于类/微驱动模型的视频采集驱动程序,并进一步描述采用EDMA(增强的直接存储器存取控制器)的数字视频图像信号的实时传输。
1 类/微驱动程序模型
  C64x系列的DSP系统给出了类/微驱动模型[1] 的驱动程序结构,采用该模型进行驱动程序设计,应用程序可以复用绝大部分相似设备的驱动程序,从而提高驱动程序的开发效率。类/微驱动模型结构如图1所示,该模型在功能上将驱动程序分为依赖硬件层(微驱动)和不依赖硬件层(类驱动)两层,并在两层之间给出通用接口。上层的应用程序不直接控制微驱动,而是通过类驱动对其进行控制。每一个类驱动在应用程序代码中表现为一个API函数,并通过标准微驱动的接口IOM与微驱动进行通信。


  在类/微驱动模型中,类驱动通常用于完成多线程I/O请求的序列化功能和同步功能,同时对设备实例进行管理。类驱动通过每个外部设备独有的微驱动对设备进行操作。微驱动采用芯片支持库[2]控制外设的寄存器、内存和中断资源。微驱动程序必须将特定的外部设备有效地表示给类驱动。
  类驱动使用DSP/BIOS中的API函数[3]实现诸如同步等的系统服务,DSP/BIOS定义了三种类驱动模块:管道管理模块(PIP)、流输入输出管理模块(SIO)和通用输入输出模块(GIO)。在PIP和SIO类驱动中,调用的API函数已经存在于DSP/BIOS的PIP和SIO模块中了,这些API函数需将参数传给相应的适配模块,才能与微驱动交换数据。而在GIO类驱动中,调用的API函数则直接与微驱动通信。
2 基于DM642的视频采集驱动
2.1 硬件结构

  笔者利用TI公司的多媒体处理芯片DM642自行研制了嵌入式视频处理板卡。卡上的主要组成模块有视频采集模块、视频处理模块以及网络发送模块,其中视频采集模块主要由DSP芯片DM642[4]、视频A/D 转换芯片SAA7115和同步动态存储器芯片SDRAM等组成,如图2所示。来自摄像头的视频信号通过SAA7115进行数字化处理,输出的数字视频信号经过视频端口的内部FIFO缓冲后,由DM642通过EDMA将数据传送到片外SDRAM中,以便供视频应用程序使用。


  主芯片DM642的处理能力达到4800MIPS,它的最大特点是芯片内部集成了三个可配置的视频端口[5],这些视频端口提供了与通用视频A/D转换芯片的无缝接口,因而无需外加CPLD(复杂可编程逻辑器件)和FIFO就可以满足系统设计的要求。SAA7115支持六路CVBS(复合模拟视频输入)或三路S-VIDEO (S端子信号)输入,支持多种格式的数字RGB和YUV视频信号输出。DM642通过IIC总线控制SAA7115的内部寄存器。
  采用类/微驱动模型编写DM642芯片视频端口的视频采集驱动程序,驱动必须满足如下几个基本功能:
  · 硬件中断;
  · 可同时处理DM642的三个视频端口;
  · 支持应用程序配置视频采集的参数,支持获取图像数据;
  · 支持场图像的采集,支持对CVBS和S-VIDEO两种模拟信号的采集。
  在视频采集过程中,最重要的是对视频数据进行实时控制和有效的传输,因此需要使用硬件中断,并在中断服务程序中,根据视频端口内部FIFO的状态通过EDMA完成视频数据的读入。
2.2 视频采集驱动程序的框架构建
  视频采集驱动程序包括类驱动和微驱动两个模块,视频采集驱动程序的结构框架如图3所示。

 


  类驱动使用GIO模块,GIO模块的传输模式是基于流输入输出模块的同步I/O模式的,更适合文件系统I/O,如视频采集的应用。该模块的主要API函数的描述如表1所示。
  在图3中,应用程序使用GIO_create函数创建GIO通道,并通过调用GIO_submit函数直接与微驱动的IOM交换数据,完成视频数据的采集。
  应用程序通过GIO类驱动调用微驱动的标准API函数,这些标准API函数的描述如表2所示。这些规定的函数将放入微驱动的函数接口表(IOM_Fxns)中,以供应用程序通过GIO类驱动调用。


  在图3中,微驱动的IOM接口将应用程序获取图像的命令打包生成数据包,并向微驱动发送。数据包的格式如下: typedef struct IOM_Packet {
  QUE_Elem link; /* 数据包队列 */
  Ptr addr; /* 数据地址 */
  Uns size; /* 数据长度 */
  Arg misc; /* 保留使用 */
  Arg arg; /* 应用程序 */
  Uns cmd; /* 命令字段 */
  Int status; /* 命令完成状态 */
  } IOM_Packet;
  数据包中数据长度与数据地址两字段由应用程序提供,分别表示获取图像的大小及图像存储目的地址。微驱动依据数据包中的命令字段,调用mdSubmitChan函数将数据包放入数据包队列,等待中断服务函数的处理。视频采集中的硬件中断由视频端口内部FIFO的状态触发,中断服务程序根据数据包中的数据地址字段,通过EDMA将视频端口内部FIFO中的视频数据读入SDRAM中的图像存储目的地址。依据数据包中的数据长度字段,在完成相应大小图像的采集后,中断服务程序还将完成以下功能:出列数据包;设置下一次传送或服务请求;设置数据包中的命令完成状态,并向应用程序返回。
3 视频采集驱动中的视频数据传输
  视频端口内部FIFO与SDRAM之间的视频数据传输通常有以下几种方法:软件查询、中断和EDMA方法。软件查询消耗CPU的资源太大,是不可取的,中断数据传输虽可节省很多CPU时间,但没有发挥DM642的EDMA资源。EDMA[6]是在DMA基础上发展起来的,用于在没有CPU参与的情况下完成不同存储空间之间的数据搬移。DM642提供了64个独立的EDMA通道,通道的优先级可编程设置,在没有CPU参与的情况下实现片内存储器、片内外设以及外部存储空间之间的数据高速搬移。因此,为减轻CPU的负担,发挥DM642的强大的外部数据传输能力,视频采集驱动使用EDMA完成视频数据从FIFO到SDRAM的传输。
3.1 基于双EDMA通道的视频数据传输
  利用EDMA将FIFO中的数据传输到SDRAM中有两种方法,但是它们的性能却差别很大。一种方法是利用EDMA将FIFO中的数据直接传送到SDRAM中。这种方法虽然简单且易于操作,但它没有充分发挥SDRAM的页读写的优越性,原因在于EDMA读取FIFO和写入SDRAM时分为两个不同过程来实现,因此EMIF(外部存储器接口)的时序不断地在两者之间切换,造成很大的时间浪费,所以这种传输效率不高。
  由于DM642视频端口的内部FIFO提供“满”、“半满”、“空”三种状态,另一方法使用两个EDMA通道进行数据传输。以亮度信号的传输为例,当用于存储亮度分量的内部FIFO半满(640字节)时,触发DM642的硬件中断,在中断服务程序中启用一个EDMA通道将数据从FIFO中读出,存放到缓冲区BUF中。传输完毕后,启动另一个EDMA通道将数据从BUF中传输到SDRAM中。这样,两个EDMA通道分别进行读取FIFO和写入SDRAM的操作,避免了EMIF时序的切换,可以保证EDMA的有效传输。
3.2 EDMA链表在场合成中的使用
  在隔行扫描模式下,每帧分为两场,两场在时域上是分开的,但在数据处理时需要将两场合成一帧进行处理,因此要进行大量的数据搬移,占用了大量的CPU时间。通过EDMA链表可自动实现场合成,不需占用额外的CPU时间。
  EDMA的参数RAM存放了有关的传输参数,这些参数用于产生EDMA读写操作所需要的地址。如图4所示,在使用EDMA通道传输奇数场与偶数场时,分别使用不同的EDMA参数RAM。两组参数RAM的目的地址分别指向存储图像的第一行与第二行象素的首地址,并且两组参数RAM通过链接地址循环相连。在EDMA通道的传输中,奇数场传输任务的结束会自动地根据当前参数RAM的链接地址装载传输偶数场的参数RAM,又由两组参数RAM的目的地址可知,奇数场与偶数场分别经EDMA通道传输至帧缓冲区后被隔行存储,这样在无需占用额外CPU时间的前提下就实现了场合成。


4 视频采集驱动程序的调用实例
  DSP/BIOS应用程序通过GIO类驱动调用微驱动之前,需使用DSP/BIOS配置工具注册微驱动,将其命名为VP_CAPTURE,并启动GIO模块。
  在应用程序中,GIO_create函数使用已注册的微驱动VP_CAPTURE创建GIO通道,通过调用GIO_submit函数完成应用程序对视频数据的采集操作。部分源代码如下:
  (1) 创建通道
  GIO_Handle capChan;
  int status;
  capChan = GIO_create('VP_CAPTURE'),
  IOM_INPUT, &status, (Ptr)&DM642_vCapParams, NULL);
  (2) 发送获取图像的数据包
  GIO_submit(capChan, IOM_READ, bufp, NULL, NULL);其中,DM642_vCapParams包含了视频采集的初始化参数,如图像大小、同步方式等;bufp用于指出采集图像的存储地址。不同的视频应用程序在使用类驱动时,可以通过改变这两个变量复用视频设备。这样,极大地提高了驱动程序的工作效率,对视频外设的控制也大大简化了。
  使用类/微驱动模型开发的视频采集驱动程序,有效地解决了图像采集和图像实时处理之间的关系,在几乎不需要CPU的干涉下,利用EDMA完成了数字视频图像数据的高速传输;通过使用类驱动复用驱动程序,视频应用程序的开发效率获得了极大的提高。视频采集驱动程序现已在自主开发的视频处理板卡上运行良好,为进一步开发远程视频监控系统、可视电话等视频应用打下了坚实的基础。


参考文献
1 DSP/BIOS Driver Developer’s Guide. Literature Number: SPRU616. Texas Instruments Incorporated, November 2002
2 TMS320C6000 Chip Support Library API Reference Guide. Literature Number: SPRU401. Texas Instruments Incorporated,December 2002
3 TMS320C6000 DSP/BIOS Application Programming Interface. Literature Number: SPRU403. Texas Instruments Incorporated,October 2002
4 TMS320DM642 Technical Overview.Literature Number:SPRU615.Texas Instruments Incorporated, September 2002
5 TMS320C64x DSP Video Port/ VCXO Interpolated Control (VIC) Port Reference Guide. Literature Number: SPRU629. Texas Instruments Incorporated, April 2003
6 TMS320C6000 Peripherals Reference Guide. Literature Num-ber:SPRU190. Texas Instruments Incorporated, February 2001



相关文章
· DSP与PC机的无线交换调制模块设计[325]
· ARM CPU S3C44B0X与C54X DSP的接口设计[107]
· 利用双处理器延长电池使用寿命[157]
· 基于C语言设置TMS320 DSP中断向量表[123]
· 用FPGA构成液晶显示控制器[143]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM嵌入式系统基础教程(N

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
赛普拉斯为用于机器视觉与运动分析应用
赛普拉斯针对机器视觉与全息数据存储应
金融危机来袭 台湾LED产
半导体市场环境恶化 安森美
Vishay 的新型&nb
Intersil推出采用小尺寸QFN
富士通微电子携手西安电子科技大学成立
纤巧和高压的 LDO&nb
华为计划收购北电业务 华为
华为计划收购北电业务 华为
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
四折批发各种数码相机,摄相机等...
最低价销售各种品牌手机...
震撼出售各种品牌笔记本电脑等!...
IC design 的流程...
电子工程师,别拿一分钱不当回事...
新款安全多用途非接触式芯片(T...
关于ARM启动的一篇文章!...
Linux网络设备驱动编程...
linux文件系统基础知识...
求奇想达QXD-DM642开发...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网