毕业设计论文基于嵌入式系统的图像采集系统.doc

上传人:laozhun 文档编号:3975788 上传时间:2023-03-30 格式:DOC 页数:63 大小:1.63MB
返回 下载 相关 举报
毕业设计论文基于嵌入式系统的图像采集系统.doc_第1页
第1页 / 共63页
毕业设计论文基于嵌入式系统的图像采集系统.doc_第2页
第2页 / 共63页
毕业设计论文基于嵌入式系统的图像采集系统.doc_第3页
第3页 / 共63页
毕业设计论文基于嵌入式系统的图像采集系统.doc_第4页
第4页 / 共63页
毕业设计论文基于嵌入式系统的图像采集系统.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《毕业设计论文基于嵌入式系统的图像采集系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于嵌入式系统的图像采集系统.doc(63页珍藏版)》请在三一办公上搜索。

1、毕 业 设 计题 目:基于嵌入式系统的图像采集系统姓 名: 华永奇 学 号: 2008080303107 学 院: 信息学院 专 业: 电子信息工程 同 组 人: 指 导 教 师: 高美娟 协助指导教师: 2012 年 5 月 12 日北京联合大学毕业设计任务书题目: 基于嵌入式系统的图像采集系统 专业: 电子信息工程 指导教师: 高美娟 学院: 信息学院 学号: 2008080303107 班级: 0808030301 姓名: 华永奇 一、主要内容和基本要求图像采集系统作为一种比较通用的图像采集装置,在各个行业有着广泛应用,本题目设计以嵌入式系统为核心的图像采集系统,具有一定的通用性。基本要

2、求:1设计系统的总体方案。2设计图像传感器与嵌入式系统的接口。3设计图像采集和存储的软件。4部分实验及调试。5撰写毕业设计论文,答辩。二、主要参考资料1方彦军. 嵌入式系统原理与设计,国防工业出版社 2011.72赵燕. 传感器原理及应用, 北京大学出版社, 2011.73伊拉希 (美)(ElahiA.). 网络通信技术,科学出版社,2007.124. 任哲. 嵌入式实时操作系统uC/OS-II原理及应用(第2版),北京航空航天大学出版社.2009.105. 张绮文. 解书刚.ARM嵌入式常用模块与综合系统设计实例精讲(第2版), 电子工业出版社.2008.106. 刘文耀. 数字图像:采集与

3、处理, 电子工业出版社, 2007.8三、进度要求17周-18周:根据本课题的具体设计任务,熟悉课题,收集相关资料,进行调研和分析。19周-20周:确定总体方案。撰写并完善开题报告,进行开题答辩。01周-04周:学习相关知识,设计系统的总体方案。嵌入式图像采集系统的硬件设计。设计图像传感器与嵌入式系统的接口。05周-08周:嵌入式图像采集系统的软件设计。设计图像采集和存储的软件。09周-10周:实验及调试。11周-13周:总结毕业设计阶段的工作,撰写毕设论文,毕业设计答辩。指 导 教 师: (签字)专业负责人系主任: (签字)摘 要Linux是个开源的操作系统,由于其源代码开源、内核功能强大、

4、安全性高、支持的硬件平台多等特点,linux在嵌入式系统和服务器上中得到了极其广泛的应用,Linux也是当前最热门的嵌入式操作系统,嵌入式市场占有率最高。近几年,随着android的兴起,商用linux的市场越来越大,很多大公司在linux内核基础上开发新的操作系统,并把linux用到更广泛的领域。将Linux内核应用到一个特定的嵌入式图像采集系统首要的工作就是Linux系统移植和驱动开发。这部分工作完成后,就为上层应用程序的开发屏蔽了硬件平台的复杂性与多样性,极大提高了产品开发的效率。本毕业设计选用FL2440平台,以完成一个嵌入式图像采集系统为目标,该平台使用三星S3C2440A片上系统为

5、底板,选用Linux2.6.12版本内核,涉及的工作主要是linux USB驱动移植,数据采集程序,用于发送视频的通信服务器端和数据接收的客户端编写。毕业设计论文的主要内容为:1、研究linux内核的usb驱动模型,给出嵌入式linux开发环境的搭建方法和编写linux驱动代码的方法,并移植开源的gspca驱动到内核中。 2、研究linux服务器端数据采集程序接口(v4L)和tcp/ip协议接口,编写上层的数据采集程序和基于tcp/ip的图像传输程序(服务器端)。3、在Ubuntu Linux PC上编写客户端,利用SDL显示图像。关键词:ARM9 Linux 嵌入式 视频监控 USB驱动 V

6、4L AbstractLinux is an open source operating system, and with the character of open source code, powerful kernel, safe, supporting more hardware platforms, Linux get a very wide range of applications in embedded systems and server.Linux is currently the most popular embedded operating systems,and ha

7、s the highest market share. In recent years, with the android rising, commercial linux market is growing, Many large companies to develop a new operating system on the basis of the linux kernel and try to use it in wider areas.Linux system porting and driver development is the primary work to apply

8、Linux kernel to a particular embedded image acquisition system. When this part of the work is completed,the kernel will shield the complexity and diversity of the hardware platform for the upper layer application development, greatly increase the efficiency of product development.This graduation des

9、ign use FL2440 platform, in order to complete the embedded video monitoring system as the goal, the platform using the Samsung S3C2440A chip selecting Linux2.6.12 version of the kernel, the work involved in the linux USB drive transplant, the data acquisition program used to send the video communica

10、tion server side and client data receiving programming.The main content of the graduate design thesis as follows:1. Study linux kernel usb driver model, given the structures of embedded Linux development environment and the preparation of the linux driver code.2.Study linux server-side data collecti

11、on program interface (v4L,) and tcp / ip protocol interface, write the top of the data collection procedures and tcp / ip-based image transmission program (server side).3.Writing the client on Ubuntu LinuxPC with SDL librarytodisplay images.Key words:ARM9 Linux EmbeddedVideo Monitor USB Driver目 录摘 要

12、.Abstract.引 言11 概述21.1 课题任务与目的21.1.1课题任务21.1.2课题目的22 总体方案设计32.1系统的总体方案设计32.2硬件设计32.3软件设计43嵌入式Arm-Linux交叉开发环境的配置73.1 交叉开发环境概述73.2 GNU工具链73.2.1 交叉编译工具链73.2.2 交叉编译相关工具73.2.3 交叉编译的构建83.3 系统硬件平台配置93.3.1 ARM9处理器介绍93.3.2 USB摄像头原理114 Linux USB驱动程序144.1 Linux驱动程序144.1.1设备驱动的简介144.1.2设备驱动程序结构154.1.3 linux设备模型

13、184.2 Linux USB驱动224.2.1 usb协议224.2.2 内核中的USB框架254.2.3 usb驱动程序设计264.3 内核、文件系统及驱动移植284.3.1 USB摄像头设备驱动移植284.3.2 Linux 文件系统移植305 嵌入式图像采集系统的服务器端315.1 Linux V4L视频采集315.1.1 Linux V4L视频采集编程接口分析315.1.2 服务器端视频采集程序335.2 Linux网络编程375.2.1 linux套接字编程API375.2.2 linux多线程API和线程间的通信方式435.3 服务器端程序456 图像采集系统的客户端程序476.

14、1 SDL库476.2 客户端程序49结 论52致 谢53参考文献54引 言1、研究背景与意义近年来,随着通信、计算机技术的飞速发展,尤其是移动互联网的发展和消费电子产品尤其是智能手机、pad上网本等设备的大众化,电子产品的微型化和专业化成为潮流,嵌入式产品日渐成为IT产业的中流砥柱。Linux从1991年产生到现在,二十多年时间已经发展成为功能极其强大的操作系统;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等各类硬件平台,并且开放所有源代码,可以按需定制,可与传统的windows竞争。目前,Linux应用相当广泛,如信息家电,移动计算设备,网络设

15、备,工控,仿真,医疗仪器等智能信息和通信产品。1因为嵌入式市场远大于pc市场,Linux在嵌入式市场的大作为也吸引了许多大公司、科研单位和高校进行研究。嵌入式Linux开发的主要部分是驱动开发,即对新的硬件芯片进行内核的支持,是当前的嵌入式的热门。图像采集系统作为视频监测的一个部分,在安全防范领域有着广泛的应用,也是嵌入式Linux的一个应用方向。视频监测系统其直观、方便、信息内容丰富而被广泛应用于许多重要场合,成为监控的主要手段。监控系统作为现代企业不可或缺的重要组成部分,已广泛应用于交通、医院、银行、家居和教育等诸多领域,可以有效地避免安全隐患,提高工作效率。22 、本毕业设计论文的主要工

16、作论文主要解决的问题是在飞凌公司的FL2440开发平台上,通过移植linux2.6.12内核和usb网络摄像头的驱动,并编写通信的服务器端程序和客户端程序,从而实现图像的采集,编码,传输和保存,最终初步实现一个视频监控系统。本毕业设计的主要工作分为5部分,分别是对linux编程环境的熟悉,对linux下usb驱动进行移植,对linux内核的进行裁剪和配置,对服务器端的采集和发送程序的编写,linux客户端pc的程序编写。Linux的入门是一项艰辛的工作,由于linux的开源特性,linux社区中上有大量的参考资料,对于本毕业设计的完成有很大的帮助,本毕业设计也是站在巨人的肩膀上,对嵌入式lin

17、ux系统的图像采集系统做一个初步的探索。实现嵌入式图像采集系统需要作很多的硬件和软件工作,通过本毕业设计,本人参考阅读了大量的linux源代码和USB的规范,对usB总线协议有了一定的理解,会熟练使用嵌入式交叉开发环境,对linux c语言编程开发,多线程编程和跨平台的图形开发框架qt都有深入的理解和掌握。1 概述1.1 课题任务与目的1.1.1课题任务图像采集系统作为一种比较通用的图像采集装置,在各个行业有着广泛应用,本题目设计以嵌入式系统为核心的图像采集系统,具有一定的通用性。基本要求:1. 设计系统的总体方案。2. 设计图像传感器与嵌入式系统的接口。3. 设计图像采集和存储的软件。4.

18、部分实验及调试。5. 撰写毕业设计论文,答辩。1.1.2课题目的在当前的数字信息技术和网络技术高速发展的后pc时代,嵌入式系统已经广泛的渗透到科学研究、工程设计、军事技术以及人们生活的各个方面之中。嵌入式系统的定义是指以应用为核心,以计算机技术为基础,软硬件可剪裁,对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。它一般由嵌入式操作系统、外围硬件设备、嵌入式微处理器以及应用程序等部分组成,用于实现特定的功能。3嵌入式最大的特色是与人们的生活密切相关,基于嵌入式技术的电子产品已经普及到大众生活各个角落,像MP3,手机,上网本等娱乐设备,智能家电、车载GIS导航仪。嵌入式设备在总数量上已

19、经远超过个人PC。视频监测是安全防范系统的重要组成部分,是一种用于保护个人隐私,以及公共安全等其他用途的技术。近年来,随着网络通信以及图像处理技术的飞速发展,视频监测技术也有了长足的进步。Linux由于其内核具有强大的网络通信功能,是嵌入式监控系统的一个优选。对于本毕设的研究,结合了arm9微处理器、网络、图像处理和传输技术于一体的嵌入式网络视频图像监测系统的研究,意义非常明显。本人通过本毕业设计初步掌握嵌入式系统设计的全部流程,也掌握了监控系统的设计思路和解决方案。本毕业设计主要是针对病人监测而提出的初步解决方案。2 总体方案设计2.1系统的总体方案设计整个系统由硬件和软件两部分组成。硬件部

20、分由主控制板处理器、usb摄像头图像采集模块、网卡传输模块和视频监控PC等组成。软件部分由linux 2.6.12标准内核、gspca usb摄像头、有线网卡驱动以及图像的v4l采集程序、服务器端和客户端程序等构成。系统组成结构如图2-1所示。首先,通过usb驱动打开摄像头,然后摄像头中内置的DSP芯片产生JPEG流,主板上通过usb接口接收jpeg流,对接收到的数据进行处理及存储,当客户端启动连接时,主板中的linux套接字程序通过有线网卡将图像发送出去,最后客户端的pc对图像进行显示。图2-1 总系统构成2.2硬件设计将飞凌公司的FL2440开发板作为主板,使用USB摄像头进行图像的采集,

21、作为采集模块,并通过USB传输到主板。传输模块使用有线网卡,采用基于IEEE 802.3x以太局域网标准,对数据进行发送和接收。RS232串口把宿主机和开发板连接起来,主要用作调试和通信使用。整个硬件设计如图2所示。图2-2 系统硬件图 主控制板主控制板芯片底板为S3C2440A,它是功能强大的SOC;内置的 ARM920T内核的32位RISC微处理器S3C2440,主频最高可达400MHz,可以完成JPEG图像压缩以及传输的基本要求。FL2440对S3C2440A进行了扩充,其外设资源包括256MB NAND Flash、64MB SDRAM,串口和USB等接口电路。 数字摄像头采用中星微的

22、ZC301PH USB摄像头,该摄像头通过内部AD转换和DSP芯片,输出JPEG图像流,图像分辨率最高能达到640480,最小为160X 120。2.3软件设计程序开发环境是在ubuntu Linux系统下搭建的,所以首先需要在pc上搭建好嵌入式Linux的环境,然后才可以调试、编译和运行应用程序。 嵌入式Linux环境的建立本文选用的是FL2440开发板,飞凌公司的开发板自带了建立嵌入式Linux环境所需要的开发包,依次将boot-loader,kernel,yaffs文件系统下载到开发板上对开发板。 Usb摄像头驱动和网卡驱动的移植将开发板自带的有线网卡驱动源代码以及在网上将万能usb摄像

23、头驱动程序源代码gspcawebcam drivers下载下来,gspcawebcam drivers 是linux下摄像头支持的最广泛的一个驱动, 这是由一个法国医生(http:/mxhaard.free.fr/)所设计编写的开源驱动,针对FL2440开发板修改后,把它们放在相应的内核目录下,修改相应的Kconfig,Makefile和编译器,内核选项等修改后,通过make menuconfig命令进入内核配置界面,选择模块的方式,重新编译内核,最终得到它们相应的驱动(ko文件)。亦可用驱动补丁直接将gspca驱动加进内核中,此方法较简单。 基于V4L的视频采集程序视频采集是整个视频采集模块

24、的核心。Video4Linux(简称V4L)是Linux专门针对视频设备提供的应用程序接口,是Linux对视频设备的内核级驱动。通过它可以执行打开、读写及关闭等操作。视频采集程序的流程如图2-3所示。图2-3 视频采集流程图 网络传输程序本文选用的是基于802.3x的以太局域网,可支持高达54Mbps的速率,而FL2440选用的以太网卡,可支持高达100Mbps的数据流。采用套接字编程,初步利用利用TCPIP协议基于线程对数据进行无线传输。整体程序分为服务器端和客户端。通信流程如图2-4所示。图2-4 网络传输流程图在服务端,利用pthread_create()创建server_th线程,使用

25、socket()创建流式套接字,用bind()函数绑定端地址与和套接字,用listen()将刚创建的套接字转化到监听模式下,提醒内核应接受来自客户端的连接请求。而此时,服务器的状态从close转换到了listen监听状态。在客户端PC,创建socket(),使用connect()函数连接服务器端。当TCP的三次握手完成后,服务器端采集程序将图像数据从图像缓冲区映射到网络传输缓冲区,最后将图像数据发送给客户端程序。客户端程序通过接收图像,把数据存放在数据缓冲区中,对其处理后,显示在监控PC上。3嵌入式Arm-Linux交叉开发环境的配置3.1 交叉开发环境概述嵌入式系统的开发环境和通用计算机是大

26、不相同的,从硬件资源上说它有很大的局限性,比如存储空间小,处理器频率低,没有键盘和鼠标等设备,这限制了已有的开发工具的在其上的使用。除此之外,硬件资源的局限性会给嵌入式软件带来一定的约束,比如内存的使用。经过的嵌入式开发人员的长期探索,提出了一中方便和有效的开发模式,即宿主机-目标板交叉开发环境模式。宿主机-目标板交叉开发环境模式主要有两部分组成:一是宿主机,就是平时使用的桌面计算机。二是目标板,指的是嵌入式开发板。通过交叉开发环境的方式,在宿主机上利用已有的成熟的开发工具,专门针对目标板定制一套系统,包括引导程序,内核,文件系统,然后下载目标板上测试执行,最后利用宿主机上的调试工具对目标板上

27、运行的程序进行远程调试。Linux系统作为一款非常优秀的开源操作系统,使用了大量的GNU软件,包括shell、glibc、gcc、gdb等,还有强大的程序,比如vim和emacs。通常,宿主机和目标板的连接方式有四种,分别是串口、以太网接口、usb接口和JATG接口。在本开发板中,使用串口和usb接口连接的方式来进行调试和测试工作。3.2 GNU工具链3.2.1 交叉编译工具链交叉编译工具链是一个由编译器、链接器和解释器组成的集成开发环境。和本地编译类似,交叉编译的过程也是由编译、链接等阶段组成,源程序通过交叉编译器编译生成目标模块,并由交叉链接器最后链接成可在目标平台上执行得代码。交叉编译工

28、具链主要包括: 标准库 编译器 链接器 汇编器 调试器3.2.2 交叉编译相关工具 glibc库glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会依赖于glibc。 gcc编译器Gcc是一个跨平台的编译器,它是GNU Compiler Collection的缩写,目前被许多unix/linux系统作为默认的编译器。Gcc最初被命名为GNU C Compiler,后来,随着支持的编译语言越来越多,编程更加强大的GNU Compiler Collection。目前,gcc已经被移植到多种处理器架构上,并且在商业

29、、专利和开源软件商广泛使用。Gcc编译器编译的过程一般分为四个阶段,分别为预处理、编译、汇编和链接。在linux shell中对gcc提供了强大的命令支持,在实际编程中可以灵活运用。 binutils开发工具包Binutils是一组开发工具包,包括链接器、汇编器和其他用于目标文件和档案的工具。Binutils中的不少工具和gcc相似,binutils工具包是嵌入式系统开发中必须掌握的,主要包括addr2line、ar、as、c+filt、gprof、ld、nm、objcopy、objdump、ranlib、readelf、size、 strings、strip、libiberty、libbfd

30、和libopcodes。 gdb调试器GDB全名是Gnu Debugger,是GNU C自带的调试工具,它是一款非常强大的调试器,功能上可以与visual studio 媲美,它支持多种硬件平台,目前支持的主要调试语言有c/c+、java等 KDEVELOP IDEKDevelop的是一个自由,开放源码的Linux,Solaris和FreeBSD的IDE(集成开发环境),Max OS X和其他Unix系统。它是一个功能全面,可扩展的IDE,可以使用C / C+和其他编程语言的插件,功能非常强大,可以媲美VC+ IDE。本毕业设计的软件编程都是用Kdevelop IDE进行编译调试的。 linu

31、x shell简介linux 有多个版本的shell,一般默认的是bash shell。Shell中文的意思是外壳,实际上是操作系统内核和用户进行交互的接口,shell和windows下面的dos命令行非常相似。常用的命令有ls,cd,rm,cp,mv,du,man,mount等。3.2.3 交叉编译的构建交叉编译的过程本身并不复杂,完成交叉编工具链的制作却是比较困难的,网上又有很多交叉编译的构建方法可以提供参考。制作交叉编译工具链之前,需要明确目标平台,本平台的嵌入式开发是在arm平台下,所以选择交叉编译工具为arm-linux-gcc,arm-linux-gdb等。对于本平台的所开发的系统

32、,直接选用网上配置好的交叉编译工具链,虽然不够灵活,已经满足本系统的开发需求。3.3 系统硬件平台配置FL2440硬件平台的主要配置介绍: S3C2440A处理器,主频400MHz,可倍频至533MHz; 64M字节SDRAM,可扩展到256M ; 4M NOR Flash,256M字节NAND Flash; 12MHz系统外部时钟源;32.768KHz的RTC时钟源; 支持3.3V或5V电压供电; 两个三线串口,一个TTL串口; 一个100M网口,采用DM9000AE,带联接和传输指示灯; 四个USB HOST接口;一个USB Device接口;3.3.1 ARM9处理器介绍本论文从应用领域

33、、设计需求和开发的难易程度等因素进行考虑,最终选用三星公司的嵌入式微处理器S3C2440。下面分别介绍ARM处理器的优点和具用ARM9内核的S3C2440的特点。ARM处理器以其完整的体系结构发展系列,以及极小的体积、极低的功耗、极低的成本和极高的性能,并能及时根据嵌入对象的不同进行功能上的扩展的优势,从众多种类的嵌入式微处理器中脱颖而出。基于ARM技术的微处理器占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。采用RISC架构的ARM微处理器一般具有如下特点:(1)支持Thumb (16位)/ARM (32位)双指令集,能很好的兼容8位/16位器件

34、;(2)大量使用寄存器,指令执行速度更快;(3)加载存储结构,数据处理的操作只针对寄存器的内容,而不直接对存储器进行操作;(4)简单的寻址模式,所有加载和存储的地址都只由寄存器的内容和指令域决定,执行效率高;3.3.2 USB摄像头原理摄像头(CAMERA)作为一种视频输入设备,在过去被广泛的运用于视频会议、远程医疗及实时监控等方面。近年来,互联网技术的发展,图像传感器技术的成熟,使得摄像头的图像质量得到明显改善,同时摄像头的价格也大幅度下降。摄像头在人们的日常生活中扮演着越来越重要的角色。摄像头分为数字摄像头和模拟摄像头两大类。模拟摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进

35、而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字信号,并加以压缩后才可以转换到计算机上运用。数字摄像头可以直接捕捉影像,然后通过串、并口或者 USB接口传到计算机里。现在市场上的摄像头主要以数字摄像头为主,而数字摄像头中又以接口简单的USB数字摄像头为主,以下主要介绍USB数字摄像头。USB数字摄像头的工作原理为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片DSP中加工处理,将其转化为特定的图像格式,如JPEG格式,再通过USB接口传输到处理器中处理

36、,实现图像显示存储或编码传输。USB数字摄像头的结构框图如图3-1所示。图3-1 USB数字摄像头的结构框图在组成摄像头的所有重要部件当中,最为核心的两个部件是图像传感器芯片和DSP芯片。图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。它可以分为CCD(charge couple device)和CMOS(complementary metal oxide semiconductor)两类,它们的性能将直接决定摄像头的最大分辨率和图像的质量。CCD的优点是灵敏度高,噪音小,信噪比大,但是生产工艺复杂、成本高、功耗高。CM

37、OS的优点是集成度高、功耗低(不到CCD的1/3)、成本低,但是噪音比较大、灵敏度较低、对光源要求高。从成本考虑,市场上大多还是采用CMOS的图像传感器,各厂商通过采用影像光源自动增益补偿技术,自动亮度、白平衡控制技术,色饱和度、对比度、边缘增强以及伽马矫正等先进的影像控制技术,完全可以达到与CCD摄像头相媲美的效果。数字信号处理芯片DSP一般包括这三个模块:镜像信号处理器ISP(image signal processor),JPEG图像解码器(JPEG encoder),USB设备控制器(USB device controller),主要功能是通过一系列复杂的数学算法运算,对数字图像信号进

38、行优化处理(如压缩编码),并把处理后的信号通过USB等接口传到PC等设备。DSP芯片类型的不同将直接影响图片格式的差异。目前主要有国内的中星微,台湾的松翰、凌越和凌阳这些企业生产摄像头的DSP芯片。虽然市场上摄像头种类繁多,但绝大部分采用了以上公司的DSP芯片。特别是国内的中星微,凭借其产品良好的兼容性、较高的性价比和中国政府的大力支持,很快占领了摄像头DSP芯片市场的大半壁江山。如今中星微电子的“星光”系列数字多媒体芯片成功占据了全球计算机图像输入芯片市场60%的市场份额,更占据国内市场的90%。这是具有我国自主知识产权的集成电路芯片第一次在一个重要应用领域占到领先地位。本论文中采用的正是中

39、星微系列芯片的USB摄像头zc301。USB摄像头的图像格式主要有以下几种:JPEG格式、YUV格式和第三格式。中星微的zc301p和松翰的sn9c105采用的是JPEG格式;凌阳的spca506和spca508采用YUV格式;松翰的 sn9c101和凌阳的spca56la采用第三格式。第三格式是指厂家用自己的图像压缩算法对RGB数据压缩后得到的图片格式。同一种图像格式的摄像头由于采用芯片型号的不同,捕获的图像数据流可能也会存在微小的差异。有些芯片会在JPEG图像数据前加一定长度的头部,如中星微的zco301p;有些则没有,如松翰的sn9c105。有些YUV格式的芯片采用YYUV的数据流格式,

40、而有些则采用YUVY数据流格式。表2-1列出了一些主要芯片的图像格式。表3-1 主流DSP芯片及其图像格式公司型号图像格式中星微zc0301pJPEGzc0302JPEGzc030xJPEG松翰sn9c105JPEGsn9c102第三格式sn9c101第三格式sn9c102pJPEG凌阳spca506YYUVspca508YUVYspca561a第三格式4 Linux USB驱动程序4.1 Linux驱动程序4.1.1设备驱动的简介驱动程序本质上是硬件和应用程序之间的中间层。驱动程序工作在内核空间,应用程序一般运行于用户空间(32位Linux操作系统一般把内存地址的03g空间作为用户空间,34

41、G空间作为内核空间)。Linux下驱动程序和dos或windows下的区别很大。设备驱动程序是作为内核与机器硬件之间的接口,而系统调用则是内核和应用程序的接口。设备驱动为应用程序屏蔽了硬件的细节,硬件设备对于应用程序来说只是一个设备文件,应用程序可以像操作普通程序一样对硬件设备进行操作。5设备驱动是内核的一部分,一般完成以下功能: 设备的初始化和释放。 把数据从内核传送到硬件和从硬件读取数据到内核。 读取应用程序传送给设备文件的数据和回送应用程序的请求的数据。这需要在用户空间、内核空间、总线以及外设之间传送数据。 检测和处理设备出现的错误。6Linux设备驱动的特点是可以以模块的形式加载各种设

42、备驱动,因此允许驱动的开发人员随着内核版本的更新,在最新版本的内核上对各种新的硬件进行设备驱动的编写和开发,这对嵌入式系统非常重要,因为嵌入式设备往往具有大量独有的外设,开发人员需要把主要的精力放在设备驱动方面。1. 设备的分类Linux支持三种硬件设备:块设备、字符设备、网络设备。字符设备是指那些无缓冲可以直接进行读写的设备,如系统的串口通信设备。块设备则只能以块为单位进行读写,一般块大小是512和1024 Byte,块设备的存取是通过buffer和cache进行并且可以随机访问,一般通过文件系统来访问块设备,只有块设备可以安装文件系统。块设备主要针对慢速设备,一般采用缓存技术,支持数据的随

43、即读写,典型的块设备是硬盘和cd-rom等。对于用户来说,块设备和字符设备的访问接口都是一样的,都是一组基于文件的系统的调用,如read、write等,实际上它们的细节区别仅在内核和驱动程序的软件接口上。Linux操作系统中的网络设备的实现方法不同于字符设备和块设备,它面对的上一层是网络协议层,而不是字符型和块设备所面向的文件系统层。2. 设备文件从用户的角度,在使用不同的设备时,需要使用不同的操作方法,是非常麻烦的。用户一般希望能用同样的应用程序接口和命令来访问设备和普通文件。Linux抽象了对硬件的处理,所有的设备都看做文件:它们可以使用和操作普通文件相同的系统调用接口来完成打开、读写、关

44、闭和I/O控制等,而驱动程序的本质就是将这些系统调用接口函数具体实现。Linux中的所有外围和内部硬件设备都用特殊的设备文件来表示。7由于linux引入的设备文件的概念,linux为文件和设备提供了统一的接口。对用户来说,设备文件和普通文件没有区别。3. 主设备号和次设备号Linux为每个设备分配了一个主设备号和一个次设备号;主设备号标识具体设备的实例。有同一个设备驱动程序控制的所有设备都具有相同的主设备号。次设备号主要用来区分具有相同主设备号且由相同设备驱动控制的不同设备。设备文件的主设备号必须与设备驱动程序在登陆该设备时申请的主设备号一致,否则设备驱动程序将无法被用户程序访问到。所有已经加

45、载(即注册)的硬件设备的主设备号能够从文件系统中/proc/devices文件中得到。当应用程序通过系统调用对某个设备文件操作时,linux内核会根据设备文件的设备类型和主设备号调用对应的驱动程序,并从用户态转换到内核态,在由驱动程序找到对应的次设备号,最终完成对硬件的操作。4. linux驱动程序代码的分布所有的linux设备驱动源代码都放在drivers目录下。4.1.2设备驱动程序结构Linux驱动程序与外界的接口可以分成三部分:驱动程序与操作系统内核的接口。只是通过include/linux/fs.h中的file_operations数据结构来完成的,下面会介绍这个数据结构。 驱动程序与系统引导的接口。这部分利用驱动程序对设备进行初始化。 驱动程序与设备的接口。这部分描述了驱动程序如何与设备进行交互。这与具体的设备密切相关。8 按照功能划分,linux设备驱动程序的代码结构大致划分为以下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号