资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
醪或丽圧篩和。獭询也M师“卿生超血侮诙=方亍基于0V511芯片的摄像头图像采集显示系统【实验目的】1、掌握OV511摄像头和V4L视频驱动的配置方法。2、掌握 JPEG 的交叉编译与移植的过程。3、掌握帧缓冲编程原理以及利用帧缓冲显示图像的编程方法【实验原理】USB 摄像头以其良好的性能和低廉的价格得到广泛应用。同时因其灵活、方便的特性 易于集成到嵌入式系统中,现有的符合Video for Linux标准的驱动程序配合通用应用程序, 可以实现 USB 摄像头视频数据的采集及应用开发。摄像头属于视频类设备。在目前的Linux核心中,视频部分的标准是Video for Linux(简 称V4L)。这个标准其实定义了一套接口,内核、驱动、应用程序以这个接口为标准进行交 流。目前的V4L涵盖了视、音频流捕捉及处理等内容,USB摄像头也属于它支持的范畴。1、Video4Linux和USB摄像头驱动配置如果需要在Linux操作系统中使用USB摄像头进行视频数据采集,则必须在进行内核 配置时,应检查Linux内核中是否已经添加了对Video4Linux驱动和对USB摄像头驱动模 块的支持。本实验采用静态加载驱动。首先切换linux源代码所在的目录,并终端输入make menuconfig,系统弹出基于Ncurses 内核配置图形界面(如图1 所示),便可进行内核选项的配置。1.1、配(1)、在菜单方式的配置界面上可用上下方向键来在各菜单之间移动;2)、在标有 标志的地方按回车键进入下级菜单;(3)、按两次vESC或选择vExit则返回到上级菜单;(4)、按“h”|或选择下面的vHelp则可看到配置帮助信息;(5)、按键则在各控制选项之间移动;(6)、Y表示包含该功能选项配置在内核中,M表示以模块的方式编译到内核中,N表示 该功能选项不进行编译;(7)、设置状态在 或 中以 “ * “(选择), “ M “ (模块), 空格(除外)来表示。 1.2、Video4Linux 驱动配置对Video4Linux支持驱动进行配置,选中多媒体设备选项“Multimedia device”(如 图 1-1所示)按回车,进入多媒体设备配置界面(如图2 所示),在多媒体配置界面中,选 中“Video For Linux”,加载video41inux模块,就可以使内核实现对Video4Linux驱动的支 持,为视频采集设备提供编程接口。配置好内核对Video4Linux驱动后,返回内核配置主界面,选中USB支持选项(如图3 所示)“USB support”按回车,进入USB支持配置界面。图3内核配置主界面一USB支持在USB支持配置界面中,选中“USB Multimedia device”选项下的“USB 0V511 Camera support”,使内核中加入OV511接口芯片的USB数字摄像头的驱动支持。(如图4所示)。文件归)编辑电)查看仪)终端标签蛙)帮助妃)roottw local host: f wy/A R M/LJod A R M/Ke rn el/Hn ux-2.451-51Board_D VK图 4 OV511 USB 摄像头驱动配置界面2、JPEG的交叉编译与移植本实验为了节省有限的存储空间,将数据帧转为J PEG格式存储,为了支持对实验过程 中生成的JPEG格式图片的各种操作,例如将JPEG格式的图片转为BMP格式图片显示时, 需要JPEG的交叉编译与移植。在移植前,需要找到libjpeg,可以在以下网址下载:http:/freeware.sgi.com/source/libjpeg/libjpeg-6b.tar.gzojpeg的交叉编译与移植的过程如下:tar -zxvf libjpeg-6b.tar.gzcd libjpeg-6b./configure -enable-shared -enable-static -prefix=/usr/local/arm/3.4.5/arm-linux -build=i386 -host=arm然后修改生成的 Makefile gedit Makefilecc =gcc 改为 CC=arm-linux-gcc AR=ar rc 改为 AR=arm-linux-ar rc AR2=ranlib 改为 AR2=arm-linux-rablib make make install-lib 然后在当前的目录下 ls -cd .libs ls会出现图5所示的结果,这就是需要移植到目标板上面的文件。cj peg jpegtrajit ibj peg . Ea I ibj peg . so A?2dj peg I ibj peg .ai ibj ppjf. s /dev/fb0则将图形文件tmp显示在屏 幕上。(2) 映射(map)操作:由于Linux工作在保护模式,每个应用程序都有自己的虚拟地址空间,在应用程序中是不能直接访问物理缓冲区地址的。为此,Linux 在文件操作 file_operations 结构中提供了 mmap 函数,可将文件的内容映射到用户空间。对于帧缓冲设 备,则可通过映射操作,可将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址中,之 后用户就可以通过读写这段虚拟地址访问屏幕缓冲区,在屏幕上绘图了。实际上,使用帧缓 冲设备的应用程序都是通过映射操作来显示图形的。由于映射操作都是由内核来完成,下面 我们将看到,帧缓冲驱动留给开发人员的工作并不多。(3)I/O 控制:对于帧缓冲设备,对设备文件的 ioctl 操作可读取/设置显示设备及屏幕的 参数,如分辨率,显示颜色数,屏幕大小等等ioctl的操作是由底层的驱动程序来完成的。在本实验中,使用内存映射(m map)将帧缓冲设备中的屏幕缓冲区映射到进程中的一 段虚拟地址空间,接着,通过读写该虚拟地址来访问屏幕缓冲区,实现在屏幕上绘图或者保 存屏幕上的绘图信息等操作。3.2、帧缓冲设备的开启(1)只需要将/etc/grub.conf改成如下形式就行了(加粗那一行中的vga=0x314是修改过的):# grub.conf generated by anaconda# Note that you do not have to rerun grub after making changes to this file# NOTICE: You do not have a /boot partition. This means that# all kernel and initrd paths are relative to /, eg.# root (hd0,0)# kernel /boot/vmlinuz-version ro root=/dev/sda1# initrd /boot/initrd-version.img#boot=/dev/sdadefault=0timeout=10splashimage=(hd0,0)/boot/grub/splash.xpm.gztitle Red Hat Linux (2.4.18-14)root (hd0,0)kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ hdc=ide-scsi vga=0x314其中vga=色彩640x400640x480800x6001024x7681280x10241600x12004bits?0x302?8bits0x3000x3010x3030x3050x3070x31C15bits?0
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号