首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于GIO/FVID的DSP视频驱动程序(2)

基于GIO/FVID的DSP视频驱动程序(2)

本帖最后由 yuyang911220 于 2016-12-29 15:19 编辑

③mdSubmitChan函数。负责管理缓冲区。分别接受应用程序发出的FVID_ALLOC、FVID_EXCHANGE、FVID_FREE三个命令并进行处理。其中FVID_ALLOC命令对应图4中(a)到(b)的过程,应用程序从两个缓冲区中取出最新的一帧视颧数据,埘其中的数据做处理,而只剩下一个缓冲区用来接受外部设备输入的数据。FVID_EXCHANGE对应图4中(b)到(c)的过程,应用程序处理完1帧数据,将这1帧数据返回驱动程序,准备用来显示,同时再读入新的l帧数据进行处理。FVID_FREE对应图4中(c)到(a)的过程,应用程序将处理完的数据帧返回驱动程序,而不再向驱动程序申请新的数据帧。以上3个命令足针对视频输入接口GIO_capture而言的,而对于输出设备接口GIO_play,在SRAM中没有分配缓冲区,所以其nldSubmitChan函数内部设为空函数。

④mdControlChan函数。用来操作外部视频设备,完成对视频数据的采集和输出。对于GIO_capture和GIO_play这两个设备接口的mdControlChan函数接受的命令是不同的:
  视频输入GIO_capture接口的mdControlCham函数只接受cmd_start命令,完成1帧视频数据的采集;而视频输出GIO_play接口的mdControlChan函数只接受cmd_display命令.完成视频信号的输出。
  3.4 视频驱动模型裁剪的一般方法
  TI公司设计的GIO/FVID视频设备驱动原型相对复杂,且占用较多的系统资源,要使其可以应用于更通用的低端处理器系统,就必须进行改造和裁减。在改造中要注意以下几个方面:
①阻塞的I/0操作。TI公司6000系列的DSP具有FDMA功能,传输数据不需要CPU的干预,而DM64X还具有专用的视频接口,传输数据不会占用外部扩展总线,所以视频数据的处理和输入输出是可以并行的。而低端处理器是不具备这样功能的,视频设备一般都是通过外部扩展总线连接的,所以对视频设备的操作必须设计为阻塞型的I/O操作,视频数据输入/输出的过程是由CPU来完成,且要保证对视频设备的操作不会被其他操作中断。
②对视频数据缓冲区的管理。GIO/FVID视频设备驱动原型中使用的3缓冲区模型,虽然功能很完善,却占用了太多的存储空间,所以对于实际的视频处理系统就要进行调整,改为两缓冲区甚至是单缓冲区模型。对于具有独立硬件缓存的输出设备,可以考虑不再为其分配动态缓冲区。


③对视频设备的操作。mdControlChan函数主要用来操作外部视频设备,只要保留对实际系统有用的操作就足够了,而GI0/FVID视频设备驱动原犁中定义的很多操作都可以省略。
  4、小结
  本文介绍了基于DSP/BIOS的外设驱动程序模型,并针对基于F2812DSP的视频处理系统这一具体的硬件平台,重点介绍了开发GIO/FVID设备驱动的流程和针对低端处理器系统的视频驱动模型裁减方法。本视频驱动程序为开发各种视频处理应用程序(如JPEG图像EPA控制网络中ZigBee压缩、MPEG视频压缩、视频监控程序等)提供了有力的支持。本文介绍的设备驱动程序的开发方法,对于同类视频处理系统,特别是对于使用TI2000系州DSP这样系统资源比较有限的视频处理系统,具有很好的可借鉴性。
继承事业,薪火相传
返回列表