您的位置 首页 发布

根据Video4Linux的摄像头驱动规划

0 引言随着多媒体技术、网络技术的迅猛发展和后PC机时代的到来,利用嵌人式系统实现远程视频监控、可视电话和视频会议等应用已成为可能。为了实

0 导言
跟着多媒体技能、网络技能的迅猛发展和后PC机年代的到来,运用嵌人式体系完结长途视频监控、可视电话和视频会议等运用已成为或许。为了完结这些运用,实时取得视频数据是一个重要环节。针对这一点本文在嵌入式体系渠道上,依据Video4Linux(简称V4L)技能,完结了摄像头驱动开发,详细叙说了V4L技能和摄像头在Blackfin536 DSP渠道上的Linux驱动程序规划。

1 Video4Linux
V4L是Linux的印象串流体系与嵌入式印象体系的根底。Linux在TV、多媒体上的运用是现在恰当抢手的研讨范畴,而其间最要害的技能则是Linux的V4L。V4L是Linux kernel里支撑印象设备的一组APIs,合作恰当的摄像头与摄像头驱动程序,能够让我们完结印象收集、AM/FM无线播送、印象CODEC、频道切换等功能;而现在最首要的则是运用在印象串流体系与嵌入式印象体系里,其运用规模恰当广泛,例如:远距离教育体系、远距离诊断体系、视频会议等。
现在,V4L这套接口已发展为V4L 2,前者比后者简略,但存在两个不足之处:驱动程序规划时不能一起翻开多个设备;现存的V4L API不能很好地支撑带编码才能的设备。本文为便于研讨摄像头驱动开发,仍是运用V4L。
V4L首要结构体如下:

camera_open,camera_close是翻开和封闭视频收集设备;camera_read,是读取视频图画;视频驱动首要的操控接口都是经过 ioctl来完结的,如图画的格局、亮度、色度等信息都是经过ioctl函数获取和设置的。ioctl指令部分如下:

V4L支撑两种方法捕获图画:mmap(却嬗成浞绞?和read(直接读取方法),本体系选用mmap。需预先设置好图画的巨细和深度,接着运用 VIDIOCGMBUF指令,它会回来用于mmap的缓存(buffer)的巨细以及每帧缓存的偏移地址(offset)。驱动程序里的映射函数为 static intbf536_v411_mmap(Struct file*filp,structvm_area_struct*vma);抓帧完结后,在运用程序里经过内存映射,读取图画数据。

2 硬件渠道
本体系选用CMOS模仿传感器,经TI公司的TVP5150A视频解码芯片把模仿信号转成 ITU-R BT.656视频信号,再送给ADI公司的Blackfin536 DSP处理器进行图画处理,如图1所示。TVP5150向DSP供给采样时钟信号CLK(27MHz),8根数据线传输内嵌同步操控码流的ITU-R BT.656格局的数据,DSP经过I2C接口对视频解码器进行装备。视频数据由DMA搬运到SDRAM。

3 驱动程序规划
3.1 驱动程序中心结构体的介绍
本体系的软件渠道是嵌入式uclinux,因而,摄像头作为一个设备驱动加载到uclinux内核中。一般来说,每个设备驱动都会有它的中心结构体,摄像头驱动的中心结构体规划如下:struct camera device

该结构体贮存了简直悉数与摄像头视频图画相关的信息。其间的结构体videoDev和videoV4l1是与V4L相关联的,ppiDev是与ADSP- BF537处理器硬件装备相关的,而frame[CAMERA_NUMFRAMES]则与收集时当时视频帧数据相关联。此外,camera_device 该中心结构体还界说了表明奇偶场的成员变量frame_field,表明当时帧的抓取状况的成员变量grabbing等。
3.2 硬件装备
本体系在开发过程中,最首要的难点在于硬件的装备,正确装备TVP5150、PPI、DMA需求搞清楚整个摄像头的作业原理,以及各种图画格局的基本知识。本文首要给出PPI和DMA的几个要害装备选项。
3.2.1 PPI装备
TVP5150A视频解码芯片把模仿信号转换成ITu-RBT.656视频信号,ITU-R BT.656是4:2:2并行接口的数字演播室规范。关于PAL制体系(NTSC体系相似),一帧图画包含两场视频数据(奇偶场),每一场图画由四部分构成:有用视频数据,水平消隐,笔直消隐以及操控字。而PPI接口在ITU-656输入形式下能够支撑3种数据传输,若挑选有用视频数据,则能够完结PPI 与TVP5150A解码器的无缝衔接。且传输的有用视频数据便是UYVY422格局,所以装备PPI操控寄存器为ITu-656输入、传输有用视频数据。 PPI传输的有用视频数据每场都由288行组成,每行有1440个取样字,其间720个亮度Y取样字,360个蓝色色差Cb,360个赤色色差Cr,按 Cb、Y、Cr、Y的次第摆放。而UYVY422格局数据是:每个像素点都取亮度值,而蓝色色差和赤色色差是每两个像素点才各取一个,两者替换取,所以图画像素是720×576。这样能够确认ppi frame=576(整幅图画的行数)。而ppi count不必装备,因为在ITU-R BT.656视频信号中有H和V信号。
3.2.2 DMA装备
本体系选用二维DMA来进步数据的传输速度,选用16位传输,且传输完一场视频数据后发生中止。dma_x_count=720(恰当于每行数据需传输的次数,每行720个像素点,每个像素点2个字节。每行要传720×2个字节,而dma是16位传输,所以x_count=720)。 dma_x_modify=2(相邻两次传输数据的偏移地址,以字节为单位,因为是16位传输,所认为2)。
因为PAL制视频数据是隔行扫描,每帧分为奇偶两场,两场在时域上是分隔的,可是在数据处理时需求将两场组成一帧进行处理,因而为了削减CPU的处理时刻,能够运用DMA直接进行场组成。在一场的传输中,DMA在传输完一行数据后,预留下一行的存储空间,将数据寄存到第三行的地址。在一场数据传输完后,下一场的数据就填充上一场预留的存储空间,也是隔行存储,这样两场数据就组成一帧数据了。所以,dma_y_modify=1442(一行720像素点,占720×2字节。而一行末地址到下一行首地址还需2字节。所以720×2+2=1442)。一起,两场数据寄存的开始地址的设置距离也是1442字节。
3.3 中止服务子程序
本体系的中止服务子程序首要是一场数据收集完后,发生中止,并依据数据的奇偶场做出相应的处理。其流程如图2所示。

4 结束语
本文介绍了在Blackfin DSP和Linux的渠道下,摄像头驱动的体系结构和详细完结。此驱动由测验程序测验,能够正常作业。此驱动尚存在不足之处,那便是在驱动的抓帧过程中没有选用乒乓操作,可是选用了两个帧缓存来存取数据,因而乒乓操作能够在上层运用中完结。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/132998.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部