当前位置:首页 >> 信息与通信 >>

嵌入式Linux下USB摄像头驱动实现


第36卷
VoL36

第9期
No.9 文章编号l

计算机工程
Computer Engineering

2010年5月 May
文献标识码I A 2010

?开发研究与设计技术?

loom-3428(20lo)o争卅282—03<

br />
中图分类号;TP301.6

嵌入式Linux下USB摄像头驱动实现
宋罾华,高珂
(北方工业大学信息工程学院,北京i00144)

■要:在嵌入式系统中开发USB摄像头驱动需要充分利用USB总线带宽并保证内存与摄像头之间数据的高速稳定交换。为满足该要求,
参考开源项目GSPCA/SPCA5xx,采纳Linux内核建议并遵循Vide04Linux标准,提出双URB分配策略和MMAP内存映射机制以最大限 度地提高视频采集速度。在S3C2440AL_-ARM开发平台上设计并实现USB摄像头的嵌入式Linux设备驱动,对该驱动程序进行功能验证 和性能分析。

关t诃:嵌入式Linux;USB摄像头;双URB策略;MM映射机制

Implementation of USB Camera Drive Under Embedded Linux
SONG Li-hua,GAO Ke

(College

ofInformation Engineering,North China University

ofTechnology,Beijing i00144)
use

IAbstnctl In the design and development of USB camera drive based
ellSure a

on

embedded system,it should make full

of USB bus bandwidth and

high
to

and stable data transfer speed between memory and peripherals.In order tO meet the real?time video capturing requirements,reference

is made

open—source projects GSPCA/SPCA5xx,recommendation of Linux kernel is adopted,and using double-URB strategy and MMAP
to

mapping mechanism

maximize the video capturing speed,eventually realizes


this USB camera drive in

line with

Vide04Linux

011

the

¥3C2440AL—ARM dcvelopment platform and provides

functional verification

and performance analysis.

[Key wordsl embedded Linux;USB camera;double-URB strategy;MMAP mapping mechanism

l概述
随着CMOS和CCD图像传感器技术的迅速发展,USB 摄像头由于性价比高、接口统一和支持多种高质量图像输出, 因此应用十分广泛,如可视电话、视频会议、视频传感器和 手持设备。在此类嵌入式设备中,基于ARM结构的高性能、 低功耗、低成本的处理器已成为嵌入式解决方案的RISC标 准。但嵌入式系统中支持USB摄像头的驱动很少,因此,研 究和开发USB摄像头驱动具有较高的实用价值和现实意义。 USB摄像头由传感器芯片和图像处理芯片组成。传感器 芯片负责图像采集,图像处理芯片负责压缩及与主机的通信。 本文使用的摄像头传感器芯片为HYUNDAI公司的HV7131C CMOS芯片,图像处理芯片为Vimicro公司的ZC0301系列 芯片。开发平台为EMBEDSKY公司的SKY2440开发板 (Samsung¥3C2440AL ARM9芯片,主频400 MHz),操作系 统为Linux 2.6.13,交叉编译环境为gcc-3.4.1-glibc-2.3.3。

2.1

巴步 叫璐舻驱动


JL

设备功毖层

1广
JL

SBGadgetAPI



USB核心层



USB主控制器

1广
J-

USB设备 I控制器驱动l

USB总线接口层

—一卜一 SB设备控制器f
USB疆动层结构

圈1

2.2主机侧与设备筒 设备侧非常复杂,生产商按照USB协议进行实现,Linux 内核提供的USB核心处理了大部分的复杂性。主机侧驱动开 发关心的是设备侧的构成,包括配置、接121和端点,以及USB 主机侧驱动如何绑定到USB设备接13上。按照协议13】,USB 是一种“单主方式”的实现,主机轮询各种不同的外围设备, 基金硬目:国家“十一五”科技支撑计划基金资助重点项目(2009
BAl71802);北京市属高等学校人才强教计划基金资助项目(PHR 201007121);北方工业大学重点研究基金资助项目(NCUT2009
0106)

USB驱动程序系统架构
USB驱动层结构 Linux内核主要支持2种类型的USB驱动程序:主机侧

(host)驱动和设备侧(gadget)驱动。主机侧驱动负责控制 插入其中的USB设备,而设备侧驱动控制该设备如何与主机

通信旧】。
USB驱动层如图l所示,在主机侧中,最底层是USB 主控制器驱动,中间层为USB核心层,最上层为USB设备 驱动层。通常,内核本身带有前面2层驱动程序,而开发者 只需完成USB设备驱动层的开发工作。
—_282-一

作者倚介:宋丽华(1979--),女,博士,主研方向:嵌入式系统,
网络通信协议;高珂,硕士研究生

收稿H期:2009?}2-04

E-maih

slh29@126.tom

万方数据

一个USB设备不能主动发送数据。 2.3驱动模块结构 每个USB设备由一个USB模块驱动,但设备本身可能 表现为一个字符设备,如USB摄像头。因此,对于一个USB 摄像头来说,它首先是“USB”的,其次是“视频类”的。 USB模块与Linux内核用于支持视频设备的附加层 Vide04Linux一起工作。Vide04Linux驱动程序组划分出了一 个通用模块,它导出的符号可供与具体硬件相关的驱动程序 使用14弓j。

.mmap



spca5xx—mmap,

.ioctl=spca5xx—ioctl,

,llseek=no—llseek,};

在上述结构体中,spca5xx—open()i函数是对设备文件执行 的第一个操作,所有客户端程序对设备的访问都将从它开始。 该函数主要完成初始化usb—spca50x中的各个缓冲区工作、 寻找匹配的iso端点、开始同步传输等工作。spca5xx—close() 用于释放file结构,注意并非每次关闭设备时都会被调用, 只要file结构被共享,spca5xx—close()就会等到所有的副本都 关闭之后才会得到调用【61 spca5xx—read()用于从设备中读取 数据。spca5xx—mmap0用于请求将设备内存映射到进程地址 空间,此函数是MMAP内存映射机制的主要实现函数。

3关键模块的设计与实现
3.1重要的数据结构 所有USB驱动程序都必须创建的结构体是struct
usb—

driver。创建一个有效的usb driver只要初始化以下5个字段:
static
struct

spca5xx—ioctlO用于执行设备相关的特定命令。 3.2双USB请求块及MMAP映射 Linux内核通过URBUSB请求块(USB
Request Block,

usb—driver

speaSxx—driver={

.owner=THIS—MODULE, .name=”gspca”. .id—table=device_table, .probe=spca5xx_probe,

URB)与所有的USB设备通信。该请求块使用struct urb结构 体表示。根据USB协议,URB的传输有4种:控制,中断, 等时和批量。对于USB摄像头,USB传输方式必须为等时传 输¨j。驱动程序对URB的分配和提交策略及核态空间和用户 空间转换开销是影响USB摄像头传输性能的2个关键因 素V“J。本文采用的双URB策略和MMAP内存映射机制可以 最大限度地提高视频采集速度。 3.2.1双URB策略 驱动程序可以为单个端点分配多个URB,也可以一个 URB被多个端点重用。关于URB的分配策略,Linux内核是 这么建议的:当URB被驱动提交后,通常都在排队。对于音 频或视频之类数据流设备,为了能以同定的速率传输,驱动 程序在安排传输的URB时,至少应该是双缓冲的,并且在回 调函数中应明确地重新提交该URB。主要代码如下:
int

.disconnect=spca5xx—disconnect};

其中,id_table是指向struct usb—device—id表的指针,该表包 含了驱动程序可以支持的所有不同类型的USB设备。probe 是指向驱动程序中探测函数的指针,当USB设备在总线上 加电启动后,USB将检测与之匹配的驱动程序,如果找到, 调用spca5xx__probe0函数,该函数主要完成初始化工作,包 括:配置设备信息以及连接摄像头操作函数;初始化zc301 桥芯片和解码器信息;创建设备驱动文件系统等。 感光芯片和桥芯片的寄存器设置与具体硬件相关,初始 化细节可参阅相关硬件的datasheet。disconnect是指向断开函 数的指针,当USB设备从系统中移除或者驱动程序卸载时, 将调用spca5xx_disconnecK)i垂i数,主要完成内存释放和资源 回收工作。struct usb—spca50x是本驱动中非常重要的结构体, 几乎所有的函数调用都会用到它。
struet

gspca_init—transfert(struct usb_spca50x’spca50x)

{… for(n=0;n<2;n++){ urb=usb—alloc—urb(FRAMES—PER—DESC,GFP—KERNEL)); spca50x->sbuf【n].data=usb—buffer_alloc(spca50x?>dev,psize‘
FRAMES—PER DESC,

usb_spca50x{
struct struct struct struct

video—device+vdev; usb—device+dev; tasklet——struct spca5xx——tasklet; dec—data maindecode;

GFP—KERNEL,&urb一>transfer_dma); urb->pipe=usb__rcvisocpipe(spca50x一>dev.ep->desc.bEndpoint Address);
urb?>transfer_flags=URB—ISO—ASAP DMA—MAP;

unsigned char iface; int ait; int epadr; int customid;
struct struct

URB—NO—TRANSFER—

urb?>interval=印一>desc.bInterval; frame[2]; urb->transfer—buffer=spca50x一>sbuf[n].data;
urb一>complete亍spca50x_isoc_irq;

spcs50x—frame

spca50x—sbuf[2];

…};

…) for(n=0;n<2;n++) usb—submit—urb(spca50x->sbuf[n].urb,GFP—KERNEL); }

usb—spca50x是USB摄像头驱动的“上下文”结构,包 含了“当前”摄像头的硬件配置信息,包括:桥芯片和感光 芯片信息,来自设备侧的“配置”、“接13”、“端点”信息, 主要编解码信息,与摄像头相关的操作函数及帧缓冲信息。 硬件设备在Linux系统中是作为文件而存在的,struct file.operations结构体实现了“设备文件”与在“设备文件上 的操作”的连接。
static
struct

首先调用usb—alloc—urbO分配2个URB。由于等时URB 没有初始化函数,因此此处必须显示初始化。调用宏usb— rcvisopipeO设置接收URB的设备端点地址;URB—ISO—ASAP IURB—NO—TRANSFER—DMA~MAP用于指定URB传输方式 为iso等时传输,并采用DMA方式以提高传输速度;transfer buffer指定DMA关联数据的缓冲区地址;最后调用usb— submit—urb分别提交这2个URB。 spca50x—isoc—irq为指向该URB生命周期结束后的回调 函数地址,它主要完成一帧数据获取和解码工作,并完成重

file_operations spcaSxx—fops={

.owner=THIS—MODULE, .open


spcaSxx—open,

.release=spca5xx—close, .read=spca5xx

—-283—

万方数据

新提交该URB的任务。主要代码如下:
void

4测试与性能分析
4.1功能测试 嵌入式驱动测试平台见图4,由ARM9 成,可以支持低速和全速的USB设备。
CPU、64 MB Flash

spca50x—isoc-irq(struct urb+,struct pt—regs‘)

{if(spca50x->curframe>=01 /+解码并将数据传输到缓冲区中?/ len=spca50x—move—data(spca50x,urb);
else

存储器、3.5英寸TFT LCD屏幕以及2个主机端USB接口组

if(waitqueue—actiVe(&spca50x?>wq)) wake—up—interruptible(&spca50x一>wq);

urb->dev=spca50x一>dev; urb一>status=O:

usb—submit—urb(urb,GFP—ATOMIC); …}
3.2.2

MMAP内存映射机制

圈4

USB曩像头疆动舅试平台

在Linux系统中,文件操作通常是由read,write系统调 用完成。这些系统调用在驱动中的解决方法是用copy—to— user(),copy—from—user()等函数在核态、用户态空间互相拷 贝,如图2所示。但对大晕的图像数据来说,这种频繁互拷 会增加系统开销,特别对资源相对较少的嵌入式系统来说更 加明显。

驱动程序可以快速正确地完成CMOS传感器探测、桥芯 片设置和初始化。运行客户端软件后,顺利出图,视频显示 平滑流畅,可连续工作数十个小时,稳定可靠。 4.2性能分析 搭建好ARM.GCC交叉编译环境一1后,分别测试不同时 间间隔下摄像头的帧速情况,测试参数和结果见表l。测试 平台为400 MHz ARM9处理器。由于嵌入式系统限制,因此 在320×240分辨率F视频采集平均帧速大于ll∥s,能够满足 大多数嵌入式系统的需求。
袁1帧速潮试数据

内核宅间 (不町替换)

用户空问
(可替换)

5结束语
本文介绍了USB驱动的层次结构以及主机侧和设备侧 的关系,阐述了开发符合Vide04Linux标准的USB摄像头驱 动的方法。根据嵌入式系统的视频实时性要求,采用了双 URB分配策略和MMAP内存映射机制,最大限度地提高了 视频采集速度,实际测试表明其具有良好的性能和可靠性。 这对其他平台的相关驱动开发工作也具有一定的指导意义。 参考文献

目2

read系统调用

MMAP内存映射可以提供给用户直接访问设备内存的 能力,以减少系统开销。主要代码如下:
ssize—t

spca5xx_mmap(struct

file+,struct

vm—area—struct+)

{..? down—interruptible(&spca50x->lock); page=kvirt_to_pa(pos); if(remap—pfn—range(vma, PAGE—SIZE,PAGE—SHARED)){ up(&spca50x?>lock);
return—EAGAIN; start,page>>PAGE—SHIFT,

【1】魏永明,耿岳,钟书毅.Linux设备驱动程序【M].3版.北京: 中国电力出版社,2005. [2】宋宝华.Linux设备驱动开发详解【M】.北京:人民邮电出版社。
2008.

}}

【3】3

Compaq,Intel,Microsoft,NEC.Revision 1.1

Universal Serial Bus

在spca5xx—mmap()/¥i数中,首先将驱动中帧缓存地址转 换成页,然后调用remap_page_rangeO函数将其逐页映射到用 户空间中,如图3所示。

Specification[Z].1 998. 【4】Schimek M H,Dirks B,Verkuil H,et a1.Video for Linux Two API
Specification Reversion

0.24[EB/OL].(2009-09—03).http://v412

spec.bytesex.org/v412spec/v412.pdf. 【5】Cox A.Vide04Linux Programming[EB/OL].(2003—11-29).http://
kemelbook.sourceforge.net/videobook.html.

[6】Fliegl D.Programming Guide for Linux USB Device Drivers[Z】. (2000—03?oi).http:Husb.CS.rum.edu/download/usbdoc. 【7】杨伟,刘 强,顾新.Linux下USB设备驱动研究与开发【J】.

计算机工程,2006,32(1 9):283.285. 【8】刘飞,张曦煌.基于嵌入式平台的USB摄像头驱动程序的实 现【J].计算机工程与设计,2008,29(8):1994—1996. 【9】Yaghmour l(,Masters J,Ben?Yossef G
Linux
et

a1.Building Embedded

Systems[M].2nd ed.【S.1.】:O’Reilly Media,Inc.,2008.

圈3

MMAP映射机■

编辑张正兴

~284_一

万方数据

嵌入式Linux下USB摄像头驱动实现
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 被引用次数: 宋丽华, 高珂, SONG Li-hua, GAO Ke 北方工业大学信息工程学院,北京,100144 计算机工程 COMPUTER ENGINEERING 2010,36(9) 0次

参考文献(9条) 1.魏永明.耿岳.钟书毅 Linux设备驱动程序 2005 2.宋宝华 Linux设备驱动开发详解 2008 3.Compaq,Intel,Microsoft,NEC Revision 1.1 Universal Serial Bus Specification 1998 4.Schimek M H.Dirks B.Verkuil H Video for Linux Two API Specification Reversion 0.24 2009 5.Cox A Video4Linux Programming 2003 6.Fliegl D Programming Guide for Linux USB Device Drivers 2000 7.杨伟.刘强.顾新 Linux下USB设备驱动研究与开发[期刊论文]-计算机工程 2006(19) 8.刘飞.张曦煌 基于嵌入式平台的USB摄像头驱动程序的实现[期刊论文]-计算机工程与设计 2008(8) 9.Yaghmour K.Masters J.Ben-Yossef G Building Embedded Linux Systems 2008

相似文献(10条) 1.学位论文 潘春鹏 基于嵌入式Linux的视频信号实时采集系统的设计 2007
视频技术在科学研究、工农业生产、医疗卫生、公共安全等领域得到了越来越广泛的应用,而视频信号采集工作需要一套高速的视频系统来完成 ,同时视频采集也是进行视频信号处理、视频压缩和传输的基础,所以对视频信号采集系统的研制有着重要的现实意义和很高的研究价值。 实时视频采集控制给开发者提出广泛的要求,包括较高的处理性能,低功耗,高速数据I/O,较高的存储能力,高可靠性等。而种类繁多的ARM处理 器具有成本低、功耗低、易开发和性能好等特点,能帮助开发者生产出较佳性能的视频采集系统。S3C2410A就是其中的一种ARM芯片,具有性价比高,可 靠性高等特点,因此选用它做为视频信号采集系统的处理器。 Linux操作系统由于其开源性,精简而高效的内核,丰富的网络性能以及对多种处理器结构的支持,使其在嵌入式领域得了广泛的应用。利用 Linux操作系统实现网络视频监控、可视电话和视频会议等应用已经成为可能,而实时获得视频数据是实现这些应用的必要前提。嵌入式Linux操作系统 是从Linux衍生出来的一种操作系统,它支持众多嵌入式处理器,并具有Unix的很多优点,因而成为当前主流的嵌入式操作系统。 本课题“基于嵌入式Linux的视频信号实时采集系统的设计”实现了一个完整的通用嵌入式系统开发平台。首先简要介绍了系统的实现方案,说明了 嵌入式系统开发的特点。在此基础上,把系统设计分为硬件设计和软件设计两大部分。 硬件部分首先对ARM处理器和S3C2410A微处理器进行了简单的介绍,重点论述了S3C2410A处理器与存储器(Nand Flash和SDRAM)、JTAG和USB接口等的 设计。 软件部分主要包括介绍嵌入式Linux系统和应用程序的开发。首先讨论了如何构建嵌入式Linux,主要包括引导程序的原理,内核的编译和移植,以 及如何实现嵌入式Linux下USB接口摄像头驱动。接着重点对Linux下的视频采集技术进行了详细的分析,介绍了Video4Linux2编程接口API的使用方法 ,最后在使用USB摄像头采集时,给出了Linux下视频采集的主要流程以及核心代码。

2.期刊论文 周金和.刘泉华.ZHOU Jin-he.LIU Quan-hua 基于ISP1161的USB摄像头嵌入式Linux设备驱动 -电视技 术2006,""(3)
介绍一种在嵌入式Linux环境下实现USB摄像头驱动的方法,它采用具有USB Host协议的接口芯片ISP1161,通过分析Linux设备驱动原理以及ISP1161和 USB摄像头芯片组工作机制,实现了USB摄像头的嵌入式Linux设备驱动,并在基于IntelXscale PXA255的Sitsang平台上实现了基于USB等时传输模式的图像 数据采集.

3.学位论文 陈荣涨 基于嵌入式Linux的视频图像采集实现 2009
目前,图像采集系统在工业生产、军事、医学等多个领域得到了广泛的应用。主流的图像采集系统由CCD摄像头、采集卡和计算机组成,然而这类系 统往往暴露出结构复杂、成本高、体积大等缺点。近年来,随着传感技术、半导体技术以及嵌入式系统的不断发展,一种新的图像采集系统--基于嵌入 式的图像采集系统得到广泛的关注和研究。嵌入式图像采集系统以其结构简单、成本低、体积小、灵活性好等众多优点有效地克服传统图像采集系统的 缺点,具有广阔的发展前景。 本论文把嵌入式系统与图像采集相结合的理念,研究与开发了一款由USB摄像头、嵌入式系统开发板以及PC主机三部分组成的嵌入式图像采集系统 ,达到了视频图像采集和监控的目的。本论文主要完成了以下任务:针对本论文所使用的S3C2440嵌入式系统以及内置Ox305b芯片的USB摄像头,在研究 Linux内核体系结构和驱动程序结构的基础上,修改和优化了USB摄像头驱动程序源代码,解决了摄像头传感器不能被识别的问题;在分析各种网际协议 适用场合的基础上,采用TCP/IP协议实现了服务器和客户端,解决了视频图像数据网络传输的问题。本论文的创新之处在于通过在不同平台上反复试验 ,解决了驱动程序不能识别传感器芯片的问题;修改了USB摄像头驱动程序,实现了帧速可调的目的。

4.期刊论文 糜元根.夏纯全.MI Yuan-gen.XIA Chun-quan 基于ARM和WEB浏览器的矿井视频监控系统 -煤炭技术 2010,29(7)
为了安全生产需要,在煤炭开采矿井中需要安装监控系统.设计一种精简型嵌入式监控系统,可以通过远程浏览器访问.文章主要以Linux和S3C2410A为 平台,介绍了该系统的硬件接口和软件部分,着重分析了基于Linux下的USB摄像头驱动设计方法和基于boa服务器的图像采集并在web中显示过程.

5.学位论文 李保国 基于嵌入式ARM的远程视频监控系统研究 2009

随着科技的进步,视频监控系统正在向嵌入式、数字化、网络化方向发展。嵌入式视频监控系统充分利用大规模集成电路和网络的科技成果,实现 了体积小巧、性能稳定、通讯便利的监控产品。 本文以S3C2410为核心硬件平台开发了基于嵌入式的远程视频监控系统,并对关键技术进行了论述和研究。首先给出了系统总体软硬件设计方案,针 对本系统硬件对vivi进行了修改和移植,对编译和移植Linux内核以及制作YAFFS文件系统也做了深入的研究,重点讨论了在嵌入式Linux操作系统下开发 USB接口摄像头驱动程序和利用linux提供的Video4Linux API函数实现视频数据采集,其次采用背景差法实现了对视频图像中运动目标的检测,然后通过 MJPEG压缩算法实现了视频数据压缩,接着介绍了在Linux下基于TCP/IP协议的socket编程,实现了视频数据的网络发送。最后着重论述了嵌入式Web服务 器的设计,编写了视频监控主界面程序,并实现了基于B/S模式的视频监控系统结构。 本系统采用模块化设计方法,使得设计更加简洁、高效,具有良好的扩展性和易用性,有利于系统升级。另外采用嵌入式的方法,系统成本较低 ,易于推广使用。

6.期刊论文 畅卫功.CHANG WEIGONG 嵌入式Linux中USB摄像头驱动的研究 -微计算机信息2008,24(5)
本文介绍了嵌入式Linux系统中USB设备驱动程序开发的基本原理,通过分析USB驱动程序开发的程序框架和重要数据结构,实现了USB摄像头的嵌入式 Linux驱动程序,并在S3C2410的平台上实现了图像采集.

7.学位论文 金福辉 基于Intel Xscale270平台与嵌入式Linux的图像采集系统设计 2007
基于Linux的嵌入式监控系统提供统一的、可伸缩的解决方案,利用嵌入式linux系统实现远程监控、图像采集己成为可能。针对这一点,本文在基 于嵌入式Linux系统的pxa270平台上,利用linux支持USB摄像头进行对图像的采集,压缩、发送和接收的过程。在USB摄像头以其良好的性能和低廉的价 格得到广泛应用。同时因其灵活、方便的特性,易于集成到嵌入式系统中,成为大多数监控设备的首选。USB设备的驱动程序完全符合通用设备驱动的准 则,而且标准规的1inux内核也提供了一些特别的API函数,方便驱动注册、销毁自己。[1-2]本论文首先介绍了基于嵌入式Linux系统的pxa270平台和在 平台上进行开发所需的软件环境,[3]特别是配置软件环境这部分是需要着重理解的。接着详细论述了在该平台上如何实现视频采集这一应用,并对视频 采集程序的实现进行具体的介绍,包括采集,压缩和传输。最后完成应用程序向目标平台的移植以及客户端的接受程序。同时主要介绍了开发板Linux内 核的支持USB摄像头的技术redio4linux。基于不同摄像头芯片会有不同的处理,通过调用Video4Linux的API实现视频的实时采集和播放,并且通过 websever服务器端程序完成了图像的采集与传输,图像的接受则是通过.java applet程序来完成的。 图像的压缩技术则是在变换编码的基础上,综合应用了DCT和哈夫曼编码两种手段达到了很好的图像压缩效果,通过USB摄像头捕捉视频,经MPEG4算法压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。jpeglib库代码,使用其中的压缩函数将 数据图像加入jpeg文件头并且压缩数据,这样就获得了我们最后想要乘呈现在大家面前的数据信息。在编程的技术上则需要掌握线程的编程以及对于 arm开发板的程序的移植,以上两种方法都是嵌入式linux中重要的编程技术。

8.学位论文 程科 嵌入式Linux设备驱动程序的设计与研究 2007
在数字信息技术和网络技术高速发展的后PC时代,嵌入式系统因其体积小、可靠性高、功能强、灵活方便等许多优点,已渗透到工业、农业、教育 、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化进程、提高生产率等方面起到了极其重要的推动作用。同 时,嵌入式Linux操作系统以其开放源代码、易于开发、功能强大、稳定、成本低等优势迅速跻身于主流嵌入式开发平台。基于嵌入式Linux操作系统的 研究和应用具有巨大的学术和商业价值。在嵌入式Linux系统的开发中,嵌入式设备种类繁多的特点决定了不同的嵌入式产品在开发时都必须设计和开发 自己的设备驱动程序,使得嵌入式Linux设备驱动程序的开发在整个嵌入式系统开发工作中占有举足轻重的地位。 本文首先详细介绍了嵌入式Linux系统的体系结构以及嵌入式Linux系统设计的基本步骤,并阐述了在基于$3C24.10芯片的FS2410开发板上构建了一 个可实用的嵌入式Linux系统的全过程;然后分析了Linux内核的组成和工作机制、内核与设备驱动之间的关系,Linux设备驱动的结构,并总结了 Linux设备驱动的设计和实现步骤;再概述了USB总线协议的拓扑结构、通信流模型、数据传输流程等问题,实现了基于ZC301P芯片的USB摄像头的嵌入式 Linux驱动程序。最后概述了PCI总线协议的体系结构、总线信号、总线配置等问题,实现了流媒体数据缓存PCI卡的Linux设备驱动程序。在硕士课题的 研究工作中,作者的主要工作成果是: 1.研究和分析了项目开发中USB摄像头和USB鼠标数据传输带宽冲突所造成的花屏、死机的问题和原因。从减小冲突的影响和降低传输带宽需求这两 个方面出发,提出并实现了三种解决USB传输带宽冲突问题的方法。实验证明,综合使用这三种方法就能够有效地解决带宽冲突带来的花屏、死机问题。 并且,据此发表核心文章一篇。 2.总结了Linux设备驱动程序的设计和实现步骤,并实现了基于ZC301P芯片的USB摄像头和流媒体数据缓存PCI卡的Linux设备驱动程序。

9.期刊论文 王永清.何波.王乾.郭磊.WANG YONGQING.HE BO.WANG QIAN.GUO LEI Linux下基于ARM920T的USB摄像头 图像采集 -微计算机信息2007,23(2)
随着USB摄像头的普及和基于ARM核的嵌入式芯片的快速发展,二者结合的便携性越来越受到人们欢迎,而嵌入式Linux的迅速发展更为二者的结合铺平 了道路,本文介绍了基于ARM920T的嵌入式Linux下利用USB摄像头采集图像的硬件、软件设计过程,最终实现了在目标板上图像的采集和显示.

10.学位论文 吴琼 采用USB摄像头的嵌入式远程视频监控系统的设计 2009
视频监控系统作为安防领域的重要组成部分,是一种防范能力很强的综合性系统。随着各种安全事故的频繁发生,很多西方的发达国家开始更多的 安全产品的开发,在全社会范围内大量使用监控设备,以防范恶性事件的发生,维持社会的稳定。与此同时快速发展的嵌入式系统技术,与网络技术相 结合,产生了众多的应用。包括基于嵌入式系统的网络视频监控技术。实现基于网络的视频监控系统的关键是一种嵌入式设备,它应该能够采集视频数 据并通过网络进行传输。 本文利用嵌入式系统开发技术与Internet技术,根据固定场所使用的特点,提出了一种采USB摄像头的嵌入式远程视频监控系统实现方案。该方案采 用ARM9S3C2410为处理器和嵌入式Linux作为系统服务器端,将USB摄像头采集的视频数据压缩后,通过Internet传输,实现对固定场所的远程视频监控。 本文首先简要介绍了嵌入式网络视频监控系统的发展现状,以及系统平台构建及工作原理,分析了系统的软件技术与硬件实现原理,接着分析宿主 机下Linux系统的安装与配置,并对在嵌入式Linux下USB接口摄像头驱动的加载进行讨论与研究。最后着重实现了嵌入式流媒体服务器的构建,并实现了 建立基于B/S模式的远程智能视频监控系统结构,并进行了系统整体测试。本文重点讨论了图像采集、编码和网络通信程序的设计原理与实现。

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgc201009100.aspx 授权使用:哈尔滨理工大学(heblgdx),授权号:3e77d842-c003-41f9-b025-9e2300b89d4d 下载时间:2010年11月3日


相关文章:
嵌入式Linux视频采集系统的设计与实现
首先讨论了如何构建嵌入式 Linux,主要包括引导程序的原理,内核的编译 和移植,以及如何实现嵌入式 Linux 下 USB 接口摄像头驱动。接着重点对 Linux 下的视频 采集...
usb摄像头驱动移植第一步总结
usb摄像头驱动移植第一步总结_IT/计算机_专业资料。usb摄像头驱动移植今日...基于CH374的USB摄像头驱... 6页 免费 嵌入式Linux下USB通用摄... 57页 2...
Linux 下摄像头驱动支持情况
Linux 下摄像头驱动支持情况_计算机软件及应用_IT/计算机_专业资料。转载,如有...系列芯片, 此类芯片被广泛运用于各种 USB 摄像 头中,在嵌入式开发板上尤其常见...
基于USB摄像头的嵌入式图像采集系统设计
基于USB摄像头嵌入式图像采集系统设计_计算机软件及应用_IT/计算机_专业资料。...图3.2给出了Linux中USB驱动的体系结构。 图 3.2 Linux 下 USB 驱动体系...
嵌入式Linux设备驱动程序的设计与研究
式Linux 操作系统的研究和应用具有巨大的学术 和商业价值。在嵌入式 Linux 系统的开发中,嵌入式设备种类繁多的特点决定了不 同的嵌入式产品在开发时都必须设计和...
摄像头驱动
主要工作: Usb 摄像头驱动程序。Usb 摄像头图像采集,YUV2 转 RGB24。求取图像重心。 开头你可以写写学习嵌入式开发的基础知识,比如建立虚拟机 linux 与主机 ...
嵌入式Linux下Camera编程--V4L2
嵌入式Linux下Camera编程--V4L2_计算机软件及应用_IT...最近有个需求,要在 ARM Linux 上实现 USB Camera ...通常,摄像头都支持以上两个能力。 3.3:查询当前...
嵌入式Linux下AD7490驱动的实现
嵌入式Linux下AD7490驱动实现_计算机软件及应用_IT/计算机_专业资料。嵌入式 Linux 下 AD7490 驱动实现 摘要: 用 AD7490 对 s3c2440 进行了扩展, 提高其数...
嵌入式Linux驱动实例
嵌入式Linux之我行——S... 50页 2下载嵌入式Linux设备驱动程序... 暂无.../*调用内核头文件,和应用程序调用的头文件不一样*/ #include #include #...
基于arm的视频采集与传输
基于嵌入式 Linux 的网络视频监控系统实现方案,系统嵌入式 Linux 和嵌入式微...USB 摄像头, Linux 操作系统上运行 USB 摄像头驱动和相应的视频采集处理传输...
更多相关标签:
嵌入式usb驱动 | 嵌入式linux usb驱动 | 3.8嵌入式usb驱动移植 | 嵌入式usb驱动移植 | usb摄像头驱动下载 | 安卓usb摄像头驱动apk | usb摄像头万能驱动 | usb摄像头驱动 |