《基于ARM11视频采集与编码系统设计》由会员分享,可在线阅读,更多相关《基于ARM11视频采集与编码系统设计(8页珍藏版)》请在金锄头文库上搜索。
1、-基于ARM11的视频采集与编码系统的设计摘 要:基于嵌入式技术的无线视频监控以其灵活性、高集成性、便捷性等诸多优点必将取代传统的有线视频监控。针对目前视频监控的实际需求,结合嵌入式技术、图像处理技术,设计并实现了一种可靠性高、成本低的嵌入式视频采集及编码系统。它是视频监控的前端,是无线视频监控系统的一个子系统。系统选用S3C6410微处理器作为核心板的控制器,采用USB接口的摄像头进行采集,利用S3C6410的硬件编解码模块进行H.264编码。根据系统的功能要求,开发了zc301摄像头和MFC的设备驱动程序,并采用内存映射方式和双缓冲思想编写了基于V4L的视频采集程序。探讨了H.264的编码
2、特性和码流结构,利用MFC驱动中的API函数,开发了基于H.264算法的视频编码程序。测试表明,设计的系统视频采集效率高、图像连续性好、运行稳定。关键词:嵌入式系统;ARM11;S3C6410;视频采集;视频编码;H.264ABSTRACT: In the future, Wireless video monitoring system based on embedded technology, with many advantages such as flexibility, integration, convenience and so on, will replace existing
3、wired video monitoring system inevitably. Aiming at actual demand of present video monitoring, this paper designs and realizes a reliable and cheap embedded video capturing and compression system, with the combination of embedded technology and image processing technology. This system is the front e
4、nd of video monitoring and a subsystem of wireless video monitoring system. This system chooses S3C6410 as the kernel boards controller uses the camera with USB interface to capture pictures and encodes the video data using the codec of S3C6410. According to functional requirements of the system, de
5、vice drivers of MFC and zc301 camera are developed, and video capturing application based on V4L using Memory Mapping and the idea of the double buffer are also developed. After a brief study on the feature and stream structure of H.264, video encoding application based on H.264 with the MFC drivers
6、 API is completed. The test shows that this system has a high efficiency to capture video data, has good continuity for pictures and can run stably.KEY WORD:Embedded system; ARM11; S3C6410; Video capturing; Video encoding; H.264引 言视频具有表达客观事物直观、生动、形象,信息丰富等优点,它在各行各业的应用日益受到人们的关注。传统的视频监控系统主要是模拟图像监控系统和基于
7、有线传输的数字监控系统。虽然模拟图像监控系统1能够保证图像清晰、不失帧,但是传输距离小,布线工程量大,需要大量存储介质,极大地浪费了资金。数字监控系统多采用各种视频采集卡实现,灵活性不够,成本高,且同样存在布线上的缺陷。在视频监控领域,由于受传输带宽的限制,如何对视频数据进行高效压缩,从而便于信息稳定高质量传输,以及如何设计系统,保证系统的体积更小,成本、功耗更低等各种棘手问题摆在了当前技术人员的面前。如今随着电子信息技术,多媒体技术及网络技术的快速发展,嵌入式无线视频监控技术应运而生且飞速发展。视频监控系统正在向集成化、数字化和网络化方向发展2,3。本文提出了一种基于ARM11的视频采集与编
8、码系统,充分利用大规模集成电路和先进高效编码标准,解决了传统视频监控系统成本高,体积大,布线麻烦等问题。这将改变目前的视频监控,在家庭安防、交通监控、远程教育、森林防火监控、远程医疗等众多领域产生巨大影响。1.系统的整体硬件框图介绍基于ARM11的视频采集与编码系统的硬件部分主要由主控制板模块和摄像头模块组成。其中主控制板选择以ARM1176JZF-S为内核的S3C6410微处理器作为控制器,S3C6410接口丰富,通过USB接口连接摄像头,串口与PC机相连。系统整体框图如图1所示。USB后续研究(传输)SDRAMNAND FLASHJTAG电源及复位电路摄像头(zc301)CPU单元S3C6
9、410图1 系统整体框图 图2 嵌入式核心控制板嵌入式系统硬件部分主要包括:微处理器及存储电路模块,电源、时钟和复位电路模块,外围接口电路模块等4。本系统由S3C6410处理器控制接收摄像头的视频信号,利用S3C6410内部集成的多媒体编解码器(MFC)进行基于H.264的压缩编码,实现视频数据的快速采集和高效压缩。以后将进行传输方面的研究。本系统中NAND FLASH用于存储各种固化程序,SDRAM用于系统运行时程序的存取,JTAG用于程序的下载,串口用于系统打印信息的输出及程序的调试。其中基于S3C6410微处理器的核心控制板如图2所示。2.系统的硬件模块介绍2.1 核心控制器 本系统实现
10、的主要功能是视频的采集与编码。其中系统的主控制器是具有ARM11内核的S3C6410微处理器,它控制摄像头进行视频采集,并对其进行H.264的压缩编码。S3C6410是韩国三星电子基于ARM1176JZF-S内核构建的高性能多媒体应用处理器5,它不仅具有强大的硬件编解码单元,完善的外设,而且拥有高达667MHZ的运行频率。图像处理CMOS时钟驱动器时间发生器相关双采样自动增益控制A/D转换DSPUSB输出图像压缩S3C6410内部结构复杂,芯片内部集成了以下资源:1个LCD控制器(支持TFT-24bit真彩色带有触摸屏的液晶显示屏),SDRAM控制器,NAND Flash控制器,支持4通道UA
11、RT口,32通道DMA,4通道具有PWM功能的计数器和1个内部时钟,全功能的SPI,IIC总线接口,IIS数字音频总线接口,看门狗计数器,USB OTG(最高480Mbps),USB HOST,3通道MMC/SD控制器等。其内部结构如图3所示。 图3 ARM11内部结构图 图4 USB数字摄像头的结构框图2.2 数字摄像头本文选用中星微的zc301数字摄像头,其工作原理为:景物通过镜头生成光学图像投射到CMOS图像传感器表面上,转为电信号,经过A/D(模数)转换后变为数字信号,再送到DSP芯片中加工处理,将其转化为特定的图像格式如JPEG,再通过USB接口传输到处理器中6。其结构框图如图4所示
12、。该摄像头输出的是JPEG流,最大分辨率能达到640480,支持的最小分辨率为160120。实验表明当图片大小设置成640480,调色板设置成YUV420P时,经摄像头内部DSP处理后,输出JPEG流,图像数据量大为减少,加快了USB输出到处理器的速度。在主控制器中,摄像头驱动程序会对输出的JPEG流进行解码。3.系统的软件平台嵌入式操作系统是嵌入式系统重要的组成部分,它为应用程序的开发提供了一个软件平台。实现嵌入式系统功能的第一步就是进行系统移植,其中包括操作系统内核、文件系统和各设备驱动程序的移植。3.1 Linux内核的移植本文选用三星公司的s3c-linux-2.6.21这个Linux
13、操作系统。由于嵌入式系统的硬件资源有限,因此需要针对具体的硬件平台和要实现的特定功能,对内核各种功能模块进行裁剪。首先,配置内核。执行make menuconfig命令,其中在Loadable module support中选择Enable loadable module support使内核支持模块动态加载;在System Type中添加对系统平台的支持。对于不同的体系结构,显示不同的提示信息。ARM体系结构显示“ARM system type”;在Device Drivers中选择所需要的设备驱动程序;在Memory technology device子菜单中添加对MTD设备的支持;在Mu
14、ltimedia Devices子菜单中添加对摄像头的支持。其他选项可以直接使用其缺省值,配置完成后保存退出。然后建立依赖关系,执行make dep命令。最后创建镜像文件,执行make zImage命令。3.2 Linux 文件系统移植嵌入式系统一般采用Flash作为存储介质,Flash具有独特的物理特性,必须使用专门的嵌入式文件系统。本文选用cramfs作为根文件系统,它是一种压缩的、极为简单的只读文件系统。要支持写操作,需要添加yaffs文件系统。将已经做好的cramfs文件系统,通过USB下载到开发板上后,挂载yaffs文件系统。其命令如下:mount -t yaffs /dev/mtd
15、block/3 /tmp/flashdisk/;cd flashdisk。3.3 Linux设备驱动的编写及移植驱动程序屏蔽了硬件实现上的细节,向应用程序提供访问硬件设备的接口,应用程序可以像操作普通文件一样对硬件设备进行操作。本文中主要用到摄像头和MFC这两个设备,其驱动程序的开发是本设计中的一个关键部分。设备驱动程序一般完成以下功能:对设备初始化和释放,把数据从内核传送到硬件和从硬件读取数据,检测和处理设备出现的错误等。由于Linux的开源性,可从网上获得万能驱动源码,进行修改编译进内核后即可使用。USB摄像头驱动程序的开发流程如下:(1)模块初始化 建立设备文件,注册设备。由子函数:proc_spca50x_create ();usb_register (&spca5xx_driver) 实现。(2)模块卸载 包括注销USB设备驱动,消除设备文件。主要由子函数:usb_deregister (&spca5xx_driver);proc_spca50x_destroy ()实现;(3)上层软件接口模块 通过file_operations数据结构,依据V4L标准,实现设备的关键系统调用,像open,close,read,mmap和最主要的ioctl功能。由这几个子函数实现: