文档介绍:计算机应用
!"#$% 系统下&’( 摄像头驱动开发
南京大学电子科学与工程系79IPPQR8 王滔于洁
摘要! 介绍了在+%,-. 系统下开发符合$%&’( )(* +%,-. 标准的!"# 摄像头驱动的方法!并对该
标准提出"不间断采集#的改进思路!配合双!O#$双帧缓冲等方法!提高采集速度%
关键词! +%,-. 设备驱动!"# 摄像头$%&’( )(* +%,-. 不间断采集
!"# 摄像头以其良好的性能和低廉的价格得到广在应用程序发出文件操作的相关命令时# 核心根据这些
泛应用! 同时因其灵活"方便的特性# 易于集成到嵌入式指针调用相应函数# 并将该结构作为参数传递给它们!
系统中! 但是如果使用现有的符合$%&’( )(* +%,-. 标准这样# 就完成了驱动和核心之间的通信! 例如’
的驱动程序配合通用应用程序# 难以充分利用!"# 带 26A6%@ 26*-***@6 ?%&’(4&’?%@’?&’?46’B=>A6’ C D (( EF
宽# 帧速不高# 不易满足实时监控等要求! 本文首先介绍!!!!GG 声明?%&’(4&’?%@’# 指出挂接驱动
在+%,-. 系统下!"# 摄像头驱动编制的一般方法# 然后 26A6%@ 26*-***@6 )%>’4(=’*A6%(,2 (?HII4)(=2 C D (( EF
声明本驱动的文件操作函数指针
说明在此基础上如何提高帧速! !!GG
! "#$%& 系统中的’() 摄像头驱动程序 26*-***@6 ?%&’(4&’?%@’ J?&’? C ?%&’(4&’?&A6A7)%>’8F
从文件指针中提取出结构
!"# 设备驱动程序完全符合通用设备驱动的准则# GG ?%&’(4&’?%@’
在?%&’(4&’?%@’结构中# 有一个私有指针=*%? # 可以
不同的是内核提供了一些特别的/01 函数# 方便驱动注
将它指向一块保留内存! 在这块内存中# 保存着本驱动"
册" 销毁自己# 例如-234*’5%26’* 78 和-234&’*’5%26’* 78 $9:;
本设备的相关初始化信息! 这块内存的申请" 初始化"指
版的内核还提供了对于<(6=>-5 的支持!
针指向等工作都是在驱动的枚举函数中完
!*! ’(+ 摄像头驱动的一般编写方法!"# :=*(3’
成! 这样#在枚举函数将控制权返还给系统后# 因为内核
摄像头属于视频类设备! 在目前的+%,-. 核心中#视
不销毁保留内存# 所以驱动仍然保留着自己的信息! 这
频部分的标准是$%&’( )(* +%,-. % 简称$;+ &! 这个标准
点与系统中驱动有异曲同工之处! 当然#
其实定义了一套接口# 内核" 驱动" 应用程序以这个接口 K%,&(L2 KMN
在驱动卸载函数中#应当将申请的各块内存全部释放!
为标准进行交流! 目前的$;+ 涵盖了视"音频流捕捉及
!*, 使用双’-+ 轮流通信
处理等内容#!"# 摄像头也属于它支持的范畴!
众所周知# 总线标准定义了控制" 中断" 批
因此#!"# 摄像头的驱动应当与内核提供的视频驱!"#I:I
量" 等时等四种管道! 对于时间性极强但是准确度要求
动挂钩! 即首先