基于GIO/FVID的F2812DSP的视频处理系统

最新更新时间:2012-05-27来源: 电子发烧友关键字:视频处理系统  DSP  BIOS 手机看文章 扫描二维码
随时随地手机看文章
  随着时代的发展,DSP技术在视频处理系统、可视电话、工业检测等视频处理领域得到了广泛的应用,对于不同的视频处理系统,会使用不同的视频设备,所以有必要为视频没备设计驱动程序,为高层应用程序提供统一的接口来操作底层硬件。只要是遵循此驱动程序接口标准开发的高层应用程序,都可以在具有相同接口的不同硬件平台上运行,具有很好的通用性和可移植性。同时高层应用程序设计人员只要会使用设备驱动程序提供的API接口,就不必了解底层硬件的具体实现,可以大大提高整个视频系统的开发效率。

  对于视频设备,TI公司也提出了对应的视频设备驱动程序模型,但这些模型主要是针对6000系列高端DSP,甚至是DM64X这样的视频处理专用DSP设计的。而TMS320F2812(简称F2812)DSP这样的低端处理器,内部存储空间较小,且没有DM64X那样专用的视频接口。本文针对这类问题,提出了对TI视频驱动模型进行简化和改造的方法,使视频设备驱动程序占用尽量少的系统资源,来完成对视频硬件设备的操作。这种视频驱动模型的裁减方法,对于使用低端处理器的视频处理系统具有借可鉴性。

  1、基于DSP/BIOS的外设 驱动开发模型

  TI公司为开发DsP的外设驱动程序,推出了DSP/BIOS Device Driver kit,定义了标准的设备驱动模型,并提供了一系列的API接口。如图1所示,外设驱动程序分为两层:

  ①类驱动(class driver)。类驱动程序用来为应用程序提供接口。这部分程序与设备无关,主要功能包括维护设备数据缓冲区,向上提供API接口供应用层程序调用,并协调应用程序对外设操作的同步和阻塞;向下提供适配层与迷你驱动层相连,实现API接口函数到迷你驱动层程序的映射。类驱动程序与硬件无关,只要外设驱动模型选定了,类驱动程序就定下来了,不需要做多少修改。

  ②迷你驱动(mini driver)。迷你驱动程序与设备相关,所以设计迷你驱动程序是外设驱动开发中的重点。迷你驱动程序与类驱动层的接口格式是统一的,但迷你驱动程序对底层硬件的操作是根据硬件平台的不同而变化的。迷你驱动接收类驱动层发出的IOM_Packet命令包,决定对底层硬件进行什么样的操作。

  外设驱动程序模型又可以分为以下3类:

  ①PIP/PI0模型。基于数据管道的I/O模型,每个管道都在维护自己的一个缓冲区。当数据写入缓冲区,或从缓冲区取出数据时,便会激发notifyReader和notifyWriter函数实现数据的同步。

  ②SIO/DIO模型。基于数据流的I/O模型,一个数据流是单向的,要么是输入,要么是输出,而且SIO/DIO模璎使用异步方式来操作I/0,对于数据的读写、处理可以同时进行。

  ③GI0模型。通用的I/O模型,灵活性很强,且没有适配层,直接操作迷你驱动程序,主要用来设计新型的设备驱动模型。

  2、视频处理系统硬件平台

  硬件平台如图2所示。系统以TI公司的F2812 DSP作为中心处理器,以模拟摄像机进行视频信号采集,再使用SAA7111视频解码芯片将其转换为BT601格式的数字视频信号。DSP将数字视频信号处理后,再写入输出帧缓存AL422中,并控制视频编码芯片ADV7177,将其转换为模拟电视信号输出。整个系统以l片CPLD——IspMachLC4128来协调各个芯片之间的时序关系。

  3、视频设备驱动程序开发

  3.1 设备驱动程序模型的选择

  如上文介绍,常用的驱动程序模型包括3类:PIO、SIO和GIO。比较这3种模型可以知道:PIO支持更底层的通信,适合设计比较简单的外设驱动程序。例如在TI公司的6X11DSK板上实现的音频采集和回放,一般都是基于PIO模型的。而SIO模型具有很好的缓冲器分配回收机制,比较适合描述视频设备,但是SIO的很多功能在本系统中使用不到,而且GIO模型设计的目的就是针对特殊硬件的新型设备,所以最终考虑使用GIO设备驱动模型。

  TI公司最初设计的GIO模型其实是有缺陷的,主要在数据缓冲区管理的问题上,应用程序在取得缓冲区进行数据处理之后,却无法将缓冲区返回设备驱动程序。于是TI公司在推出DM6北这一款主要用于视频处理的DSP芯片的同时,对GIO模型进行了改进,提出了专门针对视频设备的FVID模型。FVID模型是建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函数对GIO模型中的GIO_submit函数进行封装,解决了GIO模型中驱动程序不能回收缓冲区的问题。

  此外FVID模型还专门设计了FVID_frame结构。此结构中包含了常用的视频信号的信息,如行数、列数、YUV结构、场频等,很适合描述视频数据帧。但FVID主要是针对DM64X系统设计的,DM64X的很多功能在F2812 DSP上都不具备。所以本设计针对F2812 DSP视频处理系统,对FVID模型进行了一定的简化,保留类驱动程序,而重写了迷你驱动层程序。

  3.2 视频处理程序运行流程

  在设计完成的视频驱动程序基础上,开发一个典型的视频处理应用程序,其运行流程如图3所示。首先使用FVID_create函数建立GIO_capture和GIO_play两个视频通道.再以GIO_capture通道的FVID_control函数发出cmd_start,采集到1帧视频数据。应用程序以GIO_capture通道的FVID_alloc函数向驱动程序申请采集到的数据帧,进行处理后再以FVID_exchange函数将修改后的数据帧返回驱动程序,最后再调用GI0_play通道的FVID_control函数发出cmd_display命令将数据帧输出。由图3可以看到,应用程序调用的这些FVID_XXX接口函数会自动由类驱动程序层层向下映射,到达迷你驱动层程序;而迷你层程序可以直接操纵底层硬件设备,来完成整个视频的采集、处理和显示的过程。

  3.3 迷你驱动程序的设计

  迷你层驱动程序足整个设计的重点所在,下面详细介绍其实现方法。迷你层驱动程序主要由表1所列的几个函数组成。

  对各个函数的具体实现如下:

  ①mdBindDev函数。在应用程序建立设备接口(如FVID_create函数)时被调用,完成对外部设备的初始化。而与其对应的是md_UBindDev函数,使用nadUBindDev函数会使设备处于无效状态,不能再使用。

  ②mdCreateChan函数。使用此函数为应用程序和驱动程序建立通信通道,同时为每个通道申请缓冲区。在TI公司发 布的FVID模型中,为每个通道都分配了3个缓冲区,轮流与外部设备交换数据,每个缓冲区对应1帧视频数据,这样的设计在DM642这样可以外扩大容量SDRAM的系统中是完全可行的。但是对于本系统,F2812DSP外部只扩展了512K×16位的SRAM,既要做视频输入的帧缓存,义要存放一部分程序,这样存储空间就不够了。所以本设计中进行了简化,对视频输入设备采用两缓冲区轮转的机制,如图4(a)所示。而对于视频输出设备,以AL422 FIFO作为硬件帧缓存,而不在SRAM中再为其分配缓冲区。与mdCreateChan对应的是md-DeleteChan函数,用于删除设备通道,释放缓冲区资源。

  ③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这样系统资源比较有限的视频处理系统,具有很好的可借鉴性。

关键字:视频处理系统  DSP  BIOS 编辑:探路者 引用地址:基于GIO/FVID的F2812DSP的视频处理系统

上一篇:超宽范围输入的开关电源电路设计
下一篇:基于数字触发器的电源设计

推荐阅读最新更新时间:2023-10-18 16:47

新型示波器支持串行总线触发和解码
     俄勒冈州毕佛顿, 2008年4月22日讯 –泰克公司日前宣布推出DPO3000系列数字荧光示波器(DPO)。新推出的DPO3000为嵌入式设计应用中使用的串行总线提供了触发和解码支持。此外,新型示波器提供了5M的标配记录长度,使用Wave Inspector™导航和搜索控制功能,简化了查找所需事件的过程。   事实上当前设计和生产的所有电子产品几乎都属于嵌入式系统,其中可能包含微处理器、微控制器、DSP、RAM、闪存、EPROM、FPGA、A/D、D/A及其它I/O。嵌入式系统设计正越来越多地用串行总线代替内部并行总线,如I2C、SPI和CAN。在串行总线上,一个信号可以包括地址、控制、数据和时钟信息
[测试测量]
基于DSP实现的无差拍控制逆变器
随着计算机以及各种精密自动化设备、电子设备被广泛应用于通信、工业自动化控制、办公自动化等领域, 逆变器作为UPS的重要组成部分,近年来得到了迅速展。对逆变器的控制成为研究重点,即要求其输出波形稳态精度高、总谐波畸变率低和动态响应快。目前,瞬时PID控制、重复控制等技术都在应用中占有重要地位。但这两种技术都有难以克服的缺点,如瞬时PID控制难以实现数字化;重复控制的动态响应慢。美国著名控制理论专家卡尔曼于60年代初提出了数字控制的无差拍控制思想。随着电力电子技术的发展,80年代中期,无差拍控制被应用于逆变器控制,它具有瞬时响应快、精度高、THD小等特点,是一种优秀的控制策略。 1 无差拍控制逆变器的控制原理 无差拍控制是一种通
[嵌入式]
基于JTAG仿真器的DSP中断检测处理技术
1、引言   在采用集成化的开发调试平台CCS结合基于JTAG技术的仿真器实现 DSP系统的实时性分析过程中设定中断检测点是非常重要的,中断检测点可以中断程序的执行以进行特定的操作,例如可以进行数据文件的输入输出,可以刷新图表和数据窗口等,便于在实时性分析中更有效的观察数据处理的显示结果。 2、基于 JTAG技术的仿真器   JTAG技术即边界扫描技术,是一种专用的电子系统测试技术,就是通常所指的 IEEE1149.1标准,已经在各行业中得到了广泛的应用,如图 1,一个符合 IEEE1149.1标准的 JTAG器件,有别于不同的逻辑器件,内部都包括一个 TAP(测试访问端口)控制器,其次在芯片内部经由一个扫描链路将所有的
[工业控制]
基于JTAG仿真器的<font color='red'>DSP</font>中断检测处理技术
LG 电子选择CEVA图像和视觉DSP 用于移动设备
     集微网2月25日消息,针对先进智能互联设备的全球领先信号处理IP授权许可厂商CEVA公司宣布LG 电子 (LG Electronics) 获得CEVA图像和视觉 DSP授权许可,用于其移动设备产品系列中。   CEVA首席执行官Gideon Wertheizer表示:“我们很高兴宣布LG 电子公司成为CEVA图像和视觉DSP产品的客户,该公司在移动技术前沿的创新性上拥有市场领导地位和卓著声誉,能够全面利用我们的DSP,为其移动设备增添功能丰富并且基于视觉的差异化优势。”   CEVA图像和视觉DSP用于满足最复杂的计算图像学和计算机视觉应用的极端处理需求,比如视频分析、增强现实和高级辅助驾驶系统 (AD
[手机便携]
DSP系统电源管理技术
在便携式应用中,低功耗是产品能否独树一帜的关键所在,其决定着产品的尺寸大小与操作时间。举例来说,如果您在跨越大洋的飞行时选择便携式DVD播放器作为消遣,那么电池寿命将会成为您的首选标准之一。在本文中,我们将集中讨论许多更为常用的基于软件的技术。首先,我们从讲解某些可用于嵌入式系统的电源管理技术开始,并谈谈其在实时应用中会遇到的诸多难题。电源效率既由硬件设计与组件选择决定,同时也由基于软件的运行时电源管理技术决定。本文后半部分将集中展示如何将技术子集成到用于数字信号处理器(DSP)的实时操作系统(RTOS)中,从而使应用开发人员选择出可满足其应用要求的专用技术。我们将以 德州仪器 公司(TI)的(TI) DSP/BIOS操作系统为作
[工业控制]
<font color='red'>DSP</font>系统电源管理技术
AVR和TMS320VC5402的HPI接口通信设计
1.引言 TMS320VC5402(简称VC5402)是TI公司的DSP处理器,具有高级的数据处理结构和丰富的片内资源。但是VC5402 DSP内部不具有可编程的非易失片内存储器,所以为了保存程序代码和参数表,一般情况下要外扩一片存储器。VC5402可用的通用输入输出口(I/O port)少,软件上对I/O口的控制不灵活,没有对I/O口按位控制的指令,且具有流水线延迟。多不具有通用的通信接口如UART接口,CAN总线接口等,对控制的支持功能较少。AVR(Advanced RISC Architecture)单片机是ATMEL公司的flash型单片机,广泛应用于数据处理和控制领域,具有丰富的片内资源和灵活的接口
[单片机]
AVR和TMS320VC5402的HPI接口通信设计
DSP实现EAS扫频信号源设计
4.2 软件实现   软件的流程如图5所示,主要包括复位、初始化、写频率字和控制字等部分。      初始化部分包括对DSP多通道缓冲串行口的初始化及其配置和对AD9834写入控制字,应设置多通道缓冲串行口工作模式和DDS的SLEEP、RE-SET、SIGNPIB、HLB等位。在该系统设计中,AD9834采用串行控制比特位方式选择相位、频率寄存器;PIN/SW=0.选择控制字模式;FSEI=0,选择使用频率寄存器0(FREQ0);D13=0,将28位的频率寄存器分成2个14位的寄存器工作,且频率字的高14位和低14位可以独立改变。由于系统要求在上电后立即工作,故将AD9834的RESET引脚
[模拟电子]
<font color='red'>DSP</font>实现EAS扫频信号源设计
DSP器件为核心的嵌入式系统技术
    摘要: 以DSP为信心的嵌入式系统具有实时性、利于并行处理等优点,这也是嵌入式系统中的重要技术。本文在讨论嵌入系统基本技术特征的基础上,比较详尽地介绍了DSP嵌入式系统的基本结构和技术特征,并对应用特性进行了讨论。     关键词: 嵌入式系统 DSP 嵌入式系统的目的是提供一个以多任务和网络为信心,易于开发的复杂数字系统。从数字技术和信息技术的角度看,嵌入式系统已成为现代信息网络技术应用的基础技术,已成为现代工控领域的基本技术。 使用嵌入式系统技术,不仅可以实现硬件和软件的优化集成,更主要的是提供了使用“数字基因技术”的基本工具。从计算机和信息网络技术发展的角度看,嵌入式系统标志着网络化计算机
[嵌入式]
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved