DM642视频驱动程序设计的研究

2022-09-11

DM642是TI公司专门为多媒体应用而开发的一款DSP, 采用第二代高级超长指令字结构 (Veloci TI) , 使得在一个指令周期能够并行处理多条指令, 同时具有丰富的片内外围接口, 因此其在视频处理系统中有着广泛的应用空间。Video Port接口作为DM642芯片上视频的采集硬件接口有着比较丰富的功能。本文着重介绍了基于Video Port接口驱动程序的详细设计。

1 DM642 Video port硬件结构和工作原理介绍

DM642芯片上的Video port由图像分量接收FIFO、专用DMA、图像分量发送FIFO等几个重要部分构成。Video port为DM642DSP的采集和处理视频图像的数据接口, 接收从Video Decoder芯片发送来的BT656格式的数据, 并按照Y, cb, cr分别缓存在三个FIFO中, 其中存储Y图象分量的FIFO的大小是另两个分量FIFO大小的2倍。Video Decoder芯片负责按照设定的采集帧数把PAL格式的模拟电视信号转换为BT656格式数字图象信号发送给DM642的Video port处理。应用程序在配置完成Video Port控制器后, 便启动Video Port, 其按照一定的格式将采集图象放到FIFO中, 当FIFO中的图象数据到达一定值后, 产生一个EDMA事件, EDMA开始把采集到的数据从FIFO搬运到驱动管理的Buffer中。由于在采用BT656格式采集图象的时候y, cb, cr的数据是分别存在3个不同的FIFO中的, 那么就有三个不同的threshold值和产生三个不同的EDMA事件。

2 video port视频采集驱动程序设计描述

2.1 基于DSP/BIOS的视频驱动程序的架构

DM642的视频驱动的设计是基于DSP/BIOS的三层驱动结构来进行设计的。根据BIOS的驱动结构, 视频驱动也是分为类驱动、MiniDriver驱动、CSL驱动三部分。其中类驱动在GIO的驱动的基础上又进行了封装, 而MiniDriver驱动主要分为Generic驱动和Decoder Specific驱动这两这个部分。Generic驱动主要完成配置EDMA控制器, 通过EDMA把Video Port的FIFO中搬运到Mini-Driver管理的Buffer中, Decoder Specific的驱动主要完成Video port端口的配置和Video Decoder芯片的配置, 使Video Decoder芯片和Video Port端口配合工作, 完成指定格式的图象采集的任务。在Mini-Driver驱动中需要调用CSL层的驱动进行端口的设置。CSL驱动主要使用了CSL库的库函数中对于EDMA的配置函数和用户开发的Video Decoder的配置函数为上层的Mini-Driver的驱动提供对端口的操作的函数。

对于视频驱动, BIOS提供了对于视频应用的比GIO驱动更高级的驱动封装, FVID类驱动。FVID类驱动是基于GIO类驱动, 在GIO类驱动之上进行了对于视频应用的修改和优化, 为视频的应用程序提供更加合理的访问驱动的接口 (1) 。

2.2 Video Port Mini-Driver驱动设计

视频驱动的Mini-Driver主要完成m d B i n d D e v () , m d C o n t r o l C h a n, mdSubmitChan这几个函数的设计。通过这几个函数实现Video Port接口、Video Decoder芯片和EDMA的配置, 是整个视频驱动系统中最底层的部分, 跟硬件设备直接交互。

下面分别介绍Mini-Driver中各个函数的实现和流程。

mdBindDev () 函数的流程如下。

(1) 初始化描述设备的数据结构portObjs, 在这个数据结构中写入DM642控制寄存器的基地址指针、设备状态标志、通道状态标志、Video Port id号、通道号、Video Port控制器的基地址、分配给这个Video Port通道使用的EDMA通道的id号、EDMA搬运的目的地址。

(2) 通过写Video Port的控制寄存器, Reset V i deo Port接口。

(3) 调用mdControlChan函数配置初始化Video Port端口。

mdCreateChan函数的流程如下。

(1) 根据调用这个函数中的设备的参数名, 从系统的设备描述队列中取得Video Port的设备描述数据结构。

(2) 调用设备描述结构中操作Video Decoder芯片的函数, 打开Video Decoder芯片, RESET这个Video Port的A通道和B通道。

(3) 配置通道对象, 设置通道状态为打开, 挂接GIO类驱动注册的回调函数, 打开这个通道中传输Y:cb:cr数据的三个EDMA通道。给这三个EDMA通道分配配置参数表的内存。调用mdconctrolchan函数的configchan子函数对这个Video Port通道进行具体的配置。

(4) 通过调用mdconctrolchan函数的子函数configchan完成调用Config Chan子函数配置通道, 这部分主要完成Video Port的channel的工作模式的配置和与图象采集有关的参数的配置。

mdSubmitChan函数的流程如下。

(1) 关DM642的中断。

(2) 根据上层GIO驱动的命令, 从驱动Buffer中取出Buffer, 把处理完成的Buffer内存释放给驱动。

(3) 根据Buffer管理的内存的状态, 设置EDMA搬运的新的目的Buffer的地址。

(4) 打开中断。

3 结语

由于DM642的视频监控系统的应用越来越广泛, 而视频驱动程序设计的合理性直接关系到采集到的图像质量和采集效率。本文深入研究和探讨了DM642 Video Port视频驱动, 对视频监控系统中的视频采集过程的控制和优化有着的重大意义。

摘要:DM642多媒体处理作为一款高性能DSP在视频处理系统中有着广泛的应用。本文描述了DM642Video port接口的视频驱动程序, 并依次介绍了Video port接口的工作原理、DSP BIOS系统的特有的三层结构的驱动程序和视频驱动MINI DRIVER程序的详细设计。

关键词:视频处理,DSP,视频驱动

参考文献

[1] 李健, 黄伟志.基于ARM和DSP的多通道数字硬盘录像机的研究与设计[J].工业控制计算机, 2009, 22 (9) :49.

上一篇:影响母乳喂养的社会心理因素分析下一篇:论优化消费结构对我国产业升级的意义