摘要:嵌入式环境下的USB摄像头驱动须要充分借助USB总线与内核中的USB核心密切配合而且保证数据流的高速与稳定。本文从Linux内核的USB核心模块出发,遵守Video4Linux插口标准,采用urb策略与显存映射的方法以增强数据读取速率,设计开发了基于Linux环境下的USB摄像头驱动,并在ARM9实验平台上对该驱动程序进行了测试与剖析。

序言

linux cdc wwan驱动架构_linux camera驱动架构_android camera 架构

嵌入式图象处理的应用范围随着嵌入式技术的不断发展而不断扩大,摄像头作为数字图象采集的基础linux camera驱动架构,驱动程序的开发变得尤为重要。作为操作系统内核与硬件设备之间的插口,驱动程序是否优良,直接影响着硬件设备能够正常、高效运转。带有USB(通用串行总线)插口的摄像头因其具有支持热拔插、接口通用性好、实时性强、较高的传输速度、低成本、易于扩充等优点而倍受追捧。而且嵌入式系统中支持USB摄像头的驱动程序极少,因而,研究和开发嵌入式环境下的USB摄像头驱动程序具有应用价值和现实意义。

USB摄像头驱动程序架构

设备驱动程序是计算机软、硬件之间存在的悖论的产物:软件和硬件不应当相互渗透到对方的领域。为此,设备驱动程序是介于操作系统与硬件之间,将硬件设备的具体工作细节对操作系统内核完全屏蔽的插口。用户的操作通过标准化的调用执行,经设备驱动程序映射到实际的硬件设备上。

因为在不同的环境下一般须要不同的方法来操作硬件,所以在编撰访问硬件的设备驱动程序时,不能给用户强加任何特定的策略(策略,既是怎样使用这种功能[1])。驱动程序应当处理怎样使硬件工作的问题,而将如何使用硬件的问题留给下层应用程序,即驱动程序的作用在于提供机制(机制,既是须要提供哪些功能[1])。

USB子系统剖析

一个USB子系统是由几个点对点的联接方法建立而成的树形结构sogou pinyin linuxlinux基础教程,在该系统中USB只是担当设备和主控制器之间通讯通道的角色,对它所发送或则接受的数据没有任何特殊的内容和结构上的要求。

linux camera驱动架构_android camera 架构_linux cdc wwan驱动架构

Linux内核支持两种主要类型的USB驱动程序:寄主系统上的驱动程序和设备上的驱动程序[2]。寄主系统上的USB驱动程序控制插入其中的USB设备,而设备上的驱动程序则控制该设备怎样与主机通讯。

Linux内核提供了USB核心模块,该模块将不同类型的USB主控制器完全屏蔽,而为下层的USB设备驱动程序提供了用于访问和控制USB设备的插口(如图1)。因而USB核心模块将USB主控制器和USB设备驱动程序隔开,也同时将USB驱动程序的编撰与具体的硬件隔开。

驱动模块架构

每位硬件设备在操作系统内核中都对应一个驱动模块。USB摄像头设备在内核中表现为一个字符设备linux camera驱动架构,而且属于视频类的硬件设备。Linux内核为视频类设备提供了内核插口Video4Linux,该内核插口促使Linux环境下的下层应用程序可以像访问普通文件一样对其进行读写操作。因而该驱动模块提供的机制应当符合Video4Linux插口:

本文原创地址:https://www.linuxprobe.com/usxtqdxycfly.html编辑:刘遄,审核员:暂无