【技术实现步骤摘要】
一种基于V4L2框架的UVCCamera驱动实现系统及方法
本专利技术涉及Linux
,具体地说是一种实用性强的基于V4L2框架的UVCCamera驱动实现系统及方法。
技术介绍
Linux系统下的设备基本可分成3类:字符设备、块设备和网络设备。字符设备以单字节为单位读写数据,比如串口数据的收发就是按字节来进行,在实际开发中一般还会在串口驱动中维护一个缓冲区用来中转数据以提供效率,但就串口硬件本身而言并没有这样做的要求,它仅仅是软件层面上的一种优化。不同于字符设备,块设备以数据块为单位存放数据,比如K9F2G08U0M上的数据存放就是以(2K+64)字节为单位来进行。网络设备同时兼有块设备和字符设备的部分特点,它以报文、包、帧的形式进行数据的收发。Linux操作系统的最大特点是“一切皆文件”,也就是说它把所有的设备都当做文件,以操作文件的方式来访问设备。出于对内核代码的安全性考虑,应用程序不允许直接访问硬件,它只能使用系统调用接口函数来访问硬件的驱动程序,对于每一个系统调用接口函数,驱动程序会一一实现与之对应的函数。字符设备是Linux3类设备中涵盖设备类型最为广泛的一类,比如我们常见的鼠标、显示器、音频设备以及我们用到的摄像头设备等都属于字符设备。字符驱动设备的核心结构体是file_operations,里面定义了访问硬件需要的所有可能操作函数,而应用程序执行系统调用以实现指定操作时,最终负责完成实际工作的就是file_operations中的某一成员函数。file_operations中的成员函数构造好之后,还要在驱动程序的入口函数中调用regi ...
【技术保护点】
1.一种基于V4L2框架的UVC Camera驱动实现系统,其特征在于,包括,底层的驱动层,用于驱动连接视频输出设备,提供视频输出设备所需驱动程序,通过该驱动程序实现视频输出设备属性的设置、视频格式的选择、视频数据的捕获,所述视频输出设备采用摄像头;中间的V4L2核心层,该V4L2核心层向上为字符设备驱动层访问视频输出设备提供通用的设备文件节点,向下为驱动层提供的驱动程序的编写提供统一的V4L2架构;上层的字符设备驱动层,将视频设备将以文件的形式显示出来。
【技术特征摘要】
1.一种基于V4L2框架的UVCCamera驱动实现系统,其特征在于,包括,底层的驱动层,用于驱动连接视频输出设备,提供视频输出设备所需驱动程序,通过该驱动程序实现视频输出设备属性的设置、视频格式的选择、视频数据的捕获,所述视频输出设备采用摄像头;中间的V4L2核心层,该V4L2核心层向上为字符设备驱动层访问视频输出设备提供通用的设备文件节点,向下为驱动层提供的驱动程序的编写提供统一的V4L2架构;上层的字符设备驱动层,将视频设备将以文件的形式显示出来。2.根据权利要求1所述的一种基于V4L2框架的UVCCamera驱动实现系统,其特征在于,所述视频输出设备中配置有视频控制接口、视频流接口,其中视频控制接口提供视频输入通道、输出通道,视频流接口则负责视频数据的传输以及视频数据格式的修改;视频流经输入通道得以捕获并经模数转换后送到视频控制接口内部进行数据处理,得到处理的视频流最终通过视频控制接口的输出通道传送到视频流接口的输入端,从而完成整个视频数据的捕获、处理、传递过程。3.根据权利要求2所述的一种基于V4L2框架的UVCCamera驱动实现系统,其特征在于,所述驱动层中提供的驱动程序通过视频流接口实现视频输出设备对视频数据的捕获,在对视频数据的捕获时,视频输出设备内置包括以下函数的结构体实现:probe、disconnect和id_table,其中,id_table函数确定当前驱动程序能支持的所有视频输出设备;probe、disconnect函数分别在设备被插入和拔出的时候被调用,用于初始化和释放软硬件资源;与上述结构体配合使用的,所述驱动层中的驱动程序通过以下三组指针集实现上述功能函数:第一组为一个release函数指针,该release函数为一个释放捕捉的函数;第二组是常规函数指针,这里的常规函数包括:open函数、release函数、用于进行数据传输的poll函数和mmap函数、ioctl函数;第三组是v4l2_ioctl_ops函数,负责设备的初始化,数据的输入、输出。4.根据权利要求2所述的一种基于V4L2框架的UVCCamera驱动实现系统,其特征在于,所述驱动层中提供的驱动程序通过视频控制接口实现视频输出设备属性的设置,在对属性设置时,视频输出设备通过内置包括以下三个ioctl函数的结构体实现:用于查询指定属性信息的VIDIOC_QUERYCTRL函数、用于获取包括对比度、亮度值的属性信息的VIDIOC_G_CTRL函数和VIDIOC_S_CTRL函数;与上述结构体配合使用的,所述驱动层中的驱动程序通过以下三组驱动函数实现上述功能函数:uvc_query_v4l2_ctrl函数、uvc_ctrl_ge函数t、uvc_ctrl_set函数,其中,uvc_query_v4l2_ctrl函数用于查询设备的某一属性信息;uvc_ctrl_get函数用来获取设备的某一属性的当前参数值;uvc_ctrl_set函数用来将新的参数值设进设备的指定属性中。5.根据权利要求2所述的一种基于V4L2框架的UVCCamera驱动实现系统,其特征在于,所述驱动层中提供的驱动程序通过视频流接口实现视频输出设备中视频数据格式的选择,在视频数据的格式选择时,视频输出设备通过内置包括以下ioctl函数的结构体实现:VIDIOC_ENUM_FMT、VIDIOC_G_FMT、VIDIOC_TRY_FMT、VIDIOC_S_FMT,依次是列举函数、获得函数、测试函数、设置摄像头支持的视频数据格式函数;与上述结构体配合使用的,所述驱动层中的驱动程序通过以下驱动函数实现上述功能函数:uvc_query_v4l2_ctrl函数、uvc_ctrl_ge函数t、uvc_ctrl_set函数,其中,uvc_query_v4l2_ctrl函数用于查询视频数据的某一属性信息;uvc_ctrl_get函数用来获取视频数据的某一属性的当前参数值;uvc_ctrl_set函数用来将新的参数值设进视频数据的指定属性中。6.一种基于V4L2框架的UVCCamera驱动实现方法,其特征在于,基于上述系统,其实现过程为,一、...
【专利技术属性】
技术研发人员:王鹏,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。