基于DSP的视频采集驱动程序的实现
发布时间:2008/8/25 0:00:00 访问次数:597
视频终端的核心是图像的数字化处理模块。基于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所示。
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所示。
-->
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所示。
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所示。
热门点击
- 怎样使用DSP的cache
- DSP入门必看
- dsp编程优化方法
- 中断在TMS320C54x系列DSP中的应用
- 调度器在DSP编程中的应用
- TI推出可编程PLL时钟合成器
- matlab滤波器设计-IIR滤波器的设计与
- ADS下C语言中局部变量的存储位置分配
- 使用C/C++语言编写基于DSP程序的注意事
- 智安邦携TI推出SMTK02智能视频服务器产
推荐技术资料
- 业余条件下PCM2702
- PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]