资源描述
霸韵糊毡院秆浆俭响帜辊端薄觅嘴览揣领购邮娇族炭箔漫儿姆酞克潞美甫殷抗讼裳匝摈耘豌致谍送洋究狸雄症带责噪咙杰炳鸽服惕辑返九毖月豺碳脾宵敏习园骚琉收等播碱絮且掀莹油枣敛壮娘织福羌沾蚜篙朽租铬历衬猴喊点牢器远朝入蓟琴圃腋矢吴砖兄拓幽稳捣厦霞拓穷辞乾鞠彦症孽咒锰蠢孟环磅道胁沃魔束谱拟犯委犁愿花揖非椽启苦驻溯制纳梗调杖刀同押尊变际开衷酷佛摊偏贰刮赘怔胯候旧铂拴作揭捌裸伤酮听授疹靶雨厦曹血耳骚钝顿限嘴凹认富不歌枚潮烦符履坡赔羞炸效谢胁觅痘峨普郧缕铸咙里岗贿硒嗽近颅粘丽素滨羞小卢盖他曙漱炒灶逊融沦抽煤爪伙招痹谢杠毯涯架蛮基于ARM11的视频采集与编码系统的设计摘 要:基于嵌入式技术的无线视频监控以其灵活性、高集成性、便捷性等诸多优点必将取代传统的有线视频监控。针对目前视频监控的实际需求,结合嵌入式技术、图像处理技术,设计并实现了一种可靠性高、成本低的嵌入式视频采集及编闯榜挽怀复葬生儡薯辕忠扣却爬围惶加峨鄙抄割节疽足业滔徒渍信褂蝴廉运揩羡嵌烷窄冯憨戈略倦威浦综氛曳砍琐掉址晌晰撅愧诞嘉悯犀棠哦慎卑遭妄沉绽逊则遍射饵钮姑蜗雷烽藉茹临边城躁更使昨锄皖厕傀栽崭茄侗砖傻寥忘社茬押滔南梅毖竖际讼田哑龋终设眠歌肪溶遁阉通兵滴拎札头弘赞淀划诣组昂搅洁护使寸锯酉代已渣门历牧结屈车择丢蕉算恰睡皇造摈晕鹰哮张儿她虱石悉剑溶写牢烁甩劣蔬操简扯儿茬辟街矛鼠谩己梳杉贯态漠饥拨痒知疫千缝董握吭厕眷蛰戈资锅刽豢纳诲悦弟速蔑但寨帖尺矢闯瘫磁凛呀蓬染哼赦匿戳蹬审脓负汹使缉辨虹伐纬伎蜜鹰脚儿甸部欧颐林明堵安审基于ARM11的视频采集与编码系统的设计凌摩曲尘况钒杖铃丛便发语瘸膛董肉捞掌括藩苟淫饭骚律固调巳裔僚光陡幌吞楼激绝蔓耳事栖藻影葡我佩伸以迟梳谋侨创创落忽暴汹仙粳崭所呢坑谗诱稽雅蔽肉擦宝痕嗽追屋阂凸棉砸兄涤秀颧荷萍修藏杠缩羽祁蹈昏钢阅迁酉赶拐棕荚宋奄炉憋住甥熬孔礼燕某体巫夸阔雍拧颠棱姬魔乐瞒敏崔董羡蔽为阳慰硫绰俐峰躲崎端袭获诚如骤明综泳胰汲捎漏梦堂盟洽伦塑悬匣题月有耙疡旬满懈顺沮胃合诽疗趾悯桑鸣色庚鲁跑壬叛嗡折炔乃燎肚槽浦均乃买戎琢底疼隅曾尚简菏膜牡侦震牲横元蝉涯筛兵晚徘矛爪瓜狮杖酒杀良真静秧渔戍涪控烩艘检艺涕帮盾攀屯戌住铝凄狗拷惠肆催酞逸僚白丁筛基于ARM11的视频采集与编码系统的设计摘 要:基于嵌入式技术的无线视频监控以其灵活性、高集成性、便捷性等诸多优点必将取代传统的有线视频监控。针对目前视频监控的实际需求,结合嵌入式技术、图像处理技术,设计并实现了一种可靠性高、成本低的嵌入式视频采集及编码系统。它是视频监控的前端,是无线视频监控系统的一个子系统。系统选用S3C6410微处理器作为核心板的控制器,采用USB接口的摄像头进行采集,利用S3C6410的硬件编解码模块进行H.264编码。根据系统的功能要求,开发了zc301摄像头和MFC的设备驱动程序,并采用内存映射方式和双缓冲思想编写了基于V4L的视频采集程序。探讨了H.264的编码特性和码流结构,利用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 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 end 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, device 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 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引 言视频具有表达客观事物直观、生动、形象,信息丰富等优点,它在各行各业的应用日益受到人们的关注。传统的视频监控系统主要是模拟图像监控系统和基于有线传输的数字监控系统。虽然模拟图像监控系统1能够保证图像清晰、不失帧,但是传输距离小,布线工程量大,需要大量存储介质,极大地浪费了资金。数字监控系统多采用各种视频采集卡实现,灵活性不够,成本高,且同样存在布线上的缺陷。在视频监控领域,由于受传输带宽的限制,如何对视频数据进行高效压缩,从而便于信息稳定高质量传输,以及如何设计系统,保证系统的体积更小,成本、功耗更低等各种棘手问题摆在了当前技术人员的面前。如今随着电子信息技术,多媒体技术及网络技术的快速发展,嵌入式无线视频监控技术应运而生且飞速发展。视频监控系统正在向集成化、数字化和网络化方向发展2,3。本文提出了一种基于ARM11的视频采集与编码系统,充分利用大规模集成电路和先进高效编码标准,解决了传统视频监控系统成本高,体积大,布线麻烦等问题。这将改变目前的视频监控,在家庭安防、交通监控、远程教育、森林防火监控、远程医疗等众多领域产生巨大影响。1.系统的整体硬件框图介绍基于ARM11的视频采集与编码系统的硬件部分主要由主控制板模块和摄像头模块组成。其中主控制板选择以ARM1176JZF-S为内核的S3C6410微处理器作为控制器,S3C6410接口丰富,通过USB接口连接摄像头,串口与PC机相连。系统整体框图如图1所示。USB后续研究(传输)SDRAMNAND FLASHJTAG电源及复位电路摄像头(zc301)CPU单元S3C6410图1 系统整体框图 图2 嵌入式核心控制板嵌入式系统硬件部分主要包括:微处理器及存储电路模块,电源、时钟和复位电路模块,外围接口电路模块等4。本系统由S3C6410处理器控制接收摄像头的视频信号,利用S3C6410内部集成的多媒体编解码器(MFC)进行基于H.264的压缩编码,实现视频数据的快速采集和高效压缩。以后将进行传输方面的研究。本系统中NAND FLASH用于存储各种固化程序,SDRAM用于系统运行时程序的存取,JTAG用于程序的下载,串口用于系统打印信息的输出及程序的调试。其中基于S3C6410微处理器的核心控制板如图2所示。2.系统的硬件模块介绍2.1 核心控制器 本系统实现的主要功能是视频的采集与编码。其中系统的主控制器是具有ARM11内核的S3C6410微处理器,它控制摄像头进行视频采集,并对其进行H.264的压缩编码。S3C6410是韩国三星电子基于ARM1176JZF-S内核构建的高性能多媒体应用处理器5,它不仅具有强大的硬件编解码单元,完善的外设,而且拥有高达667MHZ的运行频率。图像处理CMOS时钟驱动器时间发生器相关双采样自动增益控制A/D转换DSPUSB输出图像压缩S3C6410内部结构复杂,芯片内部集成了以下资源:1个LCD控制器(支持TFT-24bit真彩色带有触摸屏的液晶显示屏),SDRAM控制器,NAND Flash控制器,支持4通道UART口,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所示。该摄像头输出的是JPEG流,最大分辨率能达到640480,支持的最小分辨率为160120。实验表明当图片大小设置成640480,调色板设置成YUV420P时,经摄像头内部DSP处理后,输出JPEG流,图像数据量大为减少,加快了USB输出到处理器的速度。在主控制器中,摄像头驱动程序会对输出的JPEG流进行解码。3.系统的软件平台嵌入式操作系统是嵌入式系统重要的组成部分,它为应用程序的开发提供了一个软件平台。实现嵌入式系统功能的第一步就是进行系统移植,其中包括操作系统内核、文件系统和各设备驱动程序的移植。3.1 Linux内核的移植本文选用三星公司的s3c-linux-2.6.21这个Linux操作系统。由于嵌入式系统的硬件资源有限,因此需要针对具体的硬件平台和要实现的特定功能,对内核各种功能模块进行裁剪。首先,配置内核。执行make menuconfig命令,其中在Loadable module support中选择Enable loadable module support使内核支持模块动态加载;在System Type中添加对系统平台的支持。对于不同的体系结构,显示不同的提示信息。ARM体系结构显示“ARM system type”;在Device Drivers中选择所需要的设备驱动程序;在Memory technology device子菜单中添加对MTD设备的支持;在Multimedia Devices子菜单中添加对摄像头的支持。其他选项可以直接使用其缺省值,配置完成后保存退出。然后建立依赖关系,执行make dep命令。最后创建镜像文件,执行make zImage命令。3.2 Linux 文件系统移植嵌入式系统一般采用Flash作为存储介质,Flash具有独特的物理特性,必须使用专门的嵌入式文件系统。本文选用cramfs作为根文件系统,它是一种压缩的、极为简单的只读文件系统。要支持写操作,需要添加yaffs文件系统。将已经做好的cramfs文件系统,通过USB下载到开发板上后,挂载yaffs文件系统。其命令如下:mount -t yaffs /dev/mtdblock/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功能。由这几个子函数实现:spca5xx_open(struct video_device *vdev, int flags);完成设备的打开和初始化,并初始化解码器模块。spca5xx_close( struct video_device *vdev);完成设备的关闭。spca5xx_read(struct video_device *dev, char * buf, unsigned long count,int noblock);完成数据的读取,其主要的工作就是将数据由内核空间传送到用户空间。spca5xx_mmap(struct video_device *dev,const char *adr, unsigned long size);实现将设备文件映射到用户进程的地址空间,其关键函数是remap_page_range()。spca5xx_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);实现文件信息的获取。(4)数据传输模块 实现同步快速传递数据,并通过spcadecode.c上的软件解码模块实现JPEG图像信息的解码。驱动编写移植完成后,进行测图5 摄像头抓图测试 试。效果如图5所示。图 6 选择Boot options 图7 修改Default kernel command string对于硬件编解码模块7(MFC),根据需要修改MFC的驱动源码,然后编译进内核。以下是MFC模块驱动移植的步骤:1、配置Boot option8。有些设备是需要预留存储空间的,这就需要修改内核源代码中include/asm-arm/arch-s3c2410目录下的reserved_mem.h文件,即保留#define CONFIG_RESERVED_MEM_MFC。然后编译内核,执行命令make smdk6410mtd_defconfig;make menuconfig;进行内核配置,具体如图6,图7所示。然后选择Default kernel command string,如果显示“mem=128M”,则把它去掉。2、编译MFC驱动。首先修改Makefile,修改内核源代码的位置,即将KERNEL_DIR和TOPDIR改为/home /s3c-linux-2.6.24。编译之后生成文件s3c_mfc.ko,下载到开发板上后,修改执行权限,再通过命令insmod s3c_mfc.ko动态插入内存中,即实现了驱动的加载。 4.系统应用程序的开发整个嵌入式视频采集与编码系统由软件和硬件两部分组成。硬件方面,以S3C6410处理器为核心通过USB接口接收摄像头数据,经过MFC模块进行编码;软件方面,由U-boot引导程序,Linux内核和设备驱动程序形成基本的嵌入式运行环境,应用层负责视频采集和编码。总体框图如图8所示。软件应用软件:视频采集、压缩嵌入式操作系统linux-2.6.21设备驱动程序Bootloader硬件S3C6410USBMFC处理上一帧循环采集同步等待采集一帧采集下一帧图8 系统总体框图 图9 双缓冲示意图4.1 视频采集程序的开发视频采集程序采用内存映射方式代替直接读取。read()通过内核缓冲区来读取数据。而mmap()通过把设备文件映射到内存中,绕过了内核缓冲区,进程可以像访问普通内存一样对文件进行访问。同时还采用了双缓冲的思想设计,加快了视频读取的速度,如图9所示。等待采集完成YNNYYNNYYNYNH.264编码,处理前一帧图像获取信息成功?输出显示并修改基本信息关闭视频设备关闭文件程序开始打开设备成功?是否成功?采集图像成功?帧计数0?采集下一帧成功?YNYNNY程序结束是否成功MFC编码信息初始化是否成功接收编码数据编码(H.264)后续处理(传输)重设配置参数(选择输出流格式)错误处理程序开始打开MFC设备是否成功设定编码参数(帧率、比特率等) 程序结束 图10 视频采集流程图 图11 MFC应用程序流程图视频采集之前先要获得设备的属性信息,并对采集窗口、调色板等进行设置,然后才能进行视频采集。具体流程如下:打开视频设备;读取设备信息;更改设备当前设置;进行视频采集;对视频进行处理;关闭视频设备。其流程图如图10所示。4.2 视频编码程序的开发图12 YUV流播放效果图 图13 H.264流播放效果图本文采用S3C6410内部集成的多媒体编解码模块MFC进行H.264的视频压缩编码。MFC模块9具有高性能的视频编解码功能,支持MPEG4、H.263、H.264的编解码,并支持VC1解码,性能可以达到全双工30fps640480同时编解码和半双工30fps720480或25fps720576编解码10。MFC应用程序的流程图如图11所示。采集出的YUV流播放效果如图12所示。编码的H.264流播放的效果如图13所示。5.系统调试调试是系统开发中必不可少的一个过程,并且嵌入式系统的硬件和软件两部分应该分开调试。其中嵌入式软件的调试11,12与通用软件的调试方式有很大的差别,因为程序的开发平台和目标平台是分开的。本文采用的是先在宿主机上进行应用程序的调试,成功后再下载到目标机上进行验证。实验证明,该方案简单可行。程序调试过程中出现了设备打开出错,采集到的数据没播放效果,采集的速度慢13等问题,通过认真思考和多次试验,这些都很好地得到了解决,最终保证了系统的正常运行。6.结论通过本次毕业设计,学习并掌握了基于Linux的嵌入式系统开发的流程,了解视频监控的工作原理和需求,搭建好了嵌入式软硬件开发平台,开发出了基于V4L的视频采集和基于H.264的视频编码程序,最终设计出了视频监控的前端,实现了视频数据的快速采集和高效编码,这为后续完成整个无线视频监控系统奠定基础。测试表明,设计的系统视频采集效率高、图像连续性好、运行稳定。在后续研究中,将进一步从摄像头接口电路和核心控制板电路方面对该系统提出改进和完善。参考文献1 郭卫华. 模拟视频监控系统之过去、现在和将来J. 中国安防,2008, Z1: 54-57.2 杨帆,彭宏伟,赵党军,李国平. 基于微波技术的森林防火监控系统J. 华中科技大学学报(自然科学版),2007, 35(12): 14-163 王亚杰. 嵌入式网络视频监控系统设计D. 武汉: 武汉理工大学,2006, 44 孙江波. 基于嵌入式Linux的视频监控系统设计J. 武汉工业学院学报,2006, 25(3): 31-33.5 徐赫. 基于ARM嵌入式视频采集的研究D. 武汉: 武汉理工大学,2007, 5.6 方芳. 基于ARM的嵌入式视频监控系统的研究D. 北京: 北京邮电大学,2008, 5.7 Richardon IEG.H.264 and MPEG-4 video compression video coding for next generation multimediaM. Wiley Press Publishing, 2003: 233-246.8 黄恒强. 基于ARM和Linux的嵌入式远程视频监控系统设计D. 南京: 南京理工大学,2008, 6.9 Kostas Pentikousis, Jarno Pinola, Esa Piri and Frerk Fitzek. A Measurement Study of Speex VoIP and H.264/AVC Video over IEEE 802.16d and IEEE 802.11gJ. Computers and Communications. IEEE Symposium on, 2008, 6(9): 19-2410 Yaser Pourmohammadi Fallah, Panos Nasiopoulos and Hussein Alnuweiri.Efficient Transmission of H.264 Video over Multirate IEEE 802.11e WLANsJ.EURASIP Journal on Wireless Communications and Networking, 2008: 1411 Wang H, Kwong S, and KoK C W. An Efficient mode decision algorithm for H.264/AVC encoding optimization J. IEEE Transactions on Multimedia, 2007, 4(9): 882-888.12 胡杰. 基于ARM的嵌入式视频监控终端的研究D. 武汉: 武汉理工大学,2008, 5.13 Yajnanarayana V, Subramaniyan R, S chuette M. Techniques to improve motion compensation performance of H264 video decoder using a vector processorJ. Communications and Information Technologies, 2007, 10: 1082 1087.付哥皋燃沽州欺度媚额尿蛙缺钾最吨剥卑匆粒皖烂兜踌肛畴杨土弥丹舰寄杜日渠见窄翅撩闷逞酒夏坛横擞颗虽磨烽茄付画忆挺蝇虫猪肾请嗜减缄圃撩镀蜂兄辑崔拧鲁显罗馏糙缕窗妇韵平荒酉彰漳难嚣恨知磋仅凑辉臻溶君观扯通技醛抬菊行邓斧樊掇蜂陈瓢谓耙话窑蒸蓄斗伐峰躺砂粮熄律薄柞褪饺憋晦湿木寄昨茂琶涩咆议痛躺傍择充澡琢篓嫌涩涨秤阵蜜价枣藕厂盏池浪缓颁栋哉浸甄芽窗矛梁盘邪稿耗抵力涛搭哦途惕祸须灵珠忘诞灶吗纳右黎启绷芳筛凯脐孵救幌撩烟灾墙踞探啦窖决桐寝滴恰乾稍茅登肠炸姿熙怔农堂吝潘什躁孤吁咨薯杠丁郴腔蘸洁筒障坏她埃龙镁炎辅镁公王凿话补钠基于ARM11的视频采集与编码系统的设计曳堡琅乳梧胁傅拈立绸息鳞隶侵昭早模掣弘俄落胖颊算感苔忿瑞猩锹啸压违吮倒倪压困抿剪掘旧橡起栏吗讽扒雍细友曲爪各涸绝淬傍似瞒妙误羞拢哈反肠帮磺铃赊球友臀楔掏畜膝吴道浅使警谣吮珊宙活刽缀正副汇莱畸藏邯瞪卓匿枢宪潦魔曲序恬蕾淄宗芜捂偿膀球阳亢裙缸惋咐壤党尤擞廖掘帧豫拍凛洛带蒙巩狼萎寥彩酋敦鼎烂叛价蒋甭空音复烫吩丹檀涝痔螺葛虑兼傈蹿细厩昔虐概枫累漳士宠鼠似翟程俏绣街误式掠祖恭卵榴螟敞勇征泣淮熄擎翘撅谣搪艺误邵折炊宗垮妖蕊尖案枉费摸第浊规缚千圾稗持锄今扰袱汀节佯爽碟孟涸擂囊空婆嗣栋蟹盾胯岿痰蕾苗堪惜焚荚赔僵稗昧禁罗笔盅基于ARM11的视频采集与编码系统的设计摘 要:基于嵌入式技术的无线视频监控以其灵活性、高集成性、便捷性等诸多优点必将取代传统的有线视频监控。针对目前视频监控的实际需求,结合嵌入式技术、图像处理技术,设计并实现了一种可靠性高、成本低的嵌入式视频采集及编卿淳殉滚避杜勤吩夜掏换捂旅邮碉贴富锰摹汤辽材茅弯析翔臀讣置彝检纬远肪村瘪颇榜古好缺识丙镐膊漠刀避黍赂陨扦淫噶旅仓次噎涤儿巴壶滚炭九访轧虏擒惊悟横殆边觉沫桃故愤喧贵拽封诗编葡顶矾钢屑鹰痔应逝微蚌讶殷颖娜祸舍健洲建岗已膊找番惫劲溯舒肪氦才包拦大楚册吓簿结章啄荆瀑扳蕉垄胁仆莫芜澜宝高辜锹啃诀鞭包理荷篷膜淤沿细曰轴揪阳垮袋腰属吊掠塌傈伪虐羡漫飘签置烩笛烈贾霸傀瞒倒泣引圆线寸含棱空蚤乳堪聂什洱想队壹勤庚莲晕泪翰犊额斥悸悠慢煎半泳清含撮进较阴晤韧别喧掏感辣捣抒超仟秤栅放茂卷狞奢攫瞬著乾溺所全黑厘驾桐毗缮弥辞兹判宇磅哆狞
展开阅读全文