基于Linux的嵌入式网络摄像机设计 (1)

2008-03-21 18:06:11   来源:嵌入式在线   

关键字:网络摄像机 嵌入式Web Linux嵌入式系统 设计选用 操作系统 视频捕获 Boa 视频数据采集 嵌入式Linux int

  本嵌入式网络摄像机采用高性能ARM9芯片微处理器,内置嵌入式Web服务器。

  通过嵌入式多任务操作系统采集摄像机视频数据;采集的视频信号数字化后经MJPEG算法压缩,再通过内部总线送到内置的Web服务器;使用者可以直接用浏览器观看Web服务器上的摄像机图像;通过通用网关接口CGI,授权用户还可以控制摄像机、云台和镜头的动作或直接通过Web页面对系统进行配置。

  引言

  基于同轴电缆的视频监控系统结构复杂、稳定性差、可靠性低且价格昂贵,因而出现了嵌入式网络摄像机等远程Web视频监控系统。本嵌入式网络摄像机,采用高性能的ARM9芯片作微处理器,内置嵌入式Web服务器—Boa,通过嵌入式多任务操作系统—Linux采集摄像机视频数据;摄像机采集的视频信号数字化后经MJPEG算法压缩,压缩后的视频流再通过内部总线送到内置的Web服务器;通过在网页中嵌入图像播放器,用户可以直接通过浏览器观看Web服务器上的摄像机图像;通过通用网关接口CGI,授权用户还可以控制摄像机、云台和镜头的动作或直接通过Web实现对系统进行配置。

  1 嵌入式网络摄像机系统原理及组成结构

  嵌入式网络摄像机的基本原理:在嵌入式Linux操作系统中内置Web服务器Boa,摄像机采集视频信号并将其数字化,经MJPEG压缩后,传送到内置的Web服务器,通过Web页面将视频信息发布到Internet。由于嵌入式网络摄像机是视频采集终端和Web服务器的融合,因此,用户可以直接通过浏览器观看摄像机拍摄的视频图像,达到远程监控的目的。

  整个系统由视频采集模块、视频压缩模块、Web服务器、通用网关接口、Web页面等5个部分组成。 其硬件结构如图1所示:

  

  

  图1 嵌入式网络摄像机硬件结构图

  视频采集模块包括以S3C2410X为核心的中央控制和数据处理中心,以及USB Camera数据采集单元。中央控制和数据处理中心主要完成视频采集终端的控制和视频图像的压缩;Web服务器完成基本服务器的功能,负责响应HTTP请求,配合视频采集、压缩模块完成图像信息发布;通用网关接口—CGI,可以根据用户输入的数据信息,控制摄像机、云台和镜头的动作或直接通过Web实现对系统进行配置。

  嵌入式微处理器是嵌入式系统的“硬核”。微处理器的选择将对整个嵌入式系统的成本和性能产生决定性的影响。目前,比较流行的处理器主要有:Power PC 、MIPS、Intel、ARM等。ARM(Advanced RISC Machines)公司是一家全球领先的嵌入式微处理器IP(Intellectual Property )核提供商,它设计了一系列高性能、低功耗、低成本和高可靠性的RISC处理器核、外围部件和系统级芯片应用解决方案。当前,ARM系列微处理器核广泛应用于便携式通讯设备、手持终端、多媒体数字消费产品等嵌入式系统解决方案中。本设计选用以ARM920T为核心的S3C2410X 32位微处理器,该处理器集成了LCD控制器、USB Host、USB Slave、NAND控制器、中断控制、功率控制、UART、SPI、SDI/MMC、IIS、GPIO、RTC、TIMER/PWM、ADC等丰富的资源。

  操作系统是嵌入式系统的“软核”。早期的嵌入式系统,由于当时还没有操作系统的概念,系统的主要功能都是用汇编语言实现的,其兼容性、通用性及扩展性都很差。随着硬件性能不断提高,在嵌入式系统中使用通用操作系统已成为现实。在嵌入式系统中引入操作系统后,利用软件工程的思想指导嵌入式系统开发,其开发效率和资源可重用率都将得到很大的提高。目前较为流行的嵌入式操作系统有:VxWorks、Neculeus、WindowsCE、Linux等。相对其它商业操作系统,Linux这个开源网络操作系统有以下独特优势:

  (1) 价格低廉。在保证产品性能的前提下,价格永远都是系统设计时必须考虑的重用因素之一。由于Linux来源于开源社区,相对于其它商业操作系统,其价格几乎为零。

  (2)文档丰富。全世界的Linux程序员都是技术顾问,任何人都可以在开源社区得到其系统所需要的文档和帮助。

  (3)网络性能优良。与Unix一脉相承的Linux支持多种网络协议,并能够使系统长期稳定运行。

  (4)知识创新。在国产操作系统中,嵌入式操作系统被认为是唯一可以赶超国外同行的操作系统。而Linux是操作系统中的佼佼者,任何人都可以遵照GPL规则发布包含自己知识产权的产品,可以高效地进行知识创新,少走弯路。

  为此,本设计选用高性能ARM9芯片和嵌入式Linux操作系统。

  2 视频采集模块设计与实现

  视频采集模块是嵌入式网络摄像机的核心模块之一。它通过嵌入式Linux操作系统调度V4L(video4linux)和影像设备驱动程序来完成视频捕获。V4L是Linux影像系统与嵌入式影像的基础,是Linux kernel里支持影像设备的一组APIs,配合适当的视频采集卡与视频采集卡驱动程序,V4L可以实现影像采集、AM/FM无线广播、影像CODEC、频道切换等功能。目前,V4L主要应用在影像串流系统与嵌入式影像系统里,其应用范围相当广泛,例如:远程教学、远程医疗、视频会议、视频监控、可视电话等。V4L为2层式架构,最上层为V4L驱动程序,最下层则是影像设备驱动程序。

  在Linux操作系统中,外部设备都作为设备文件来处理,因此,对外部设备的操作就转变成对设备文件的操作。视频设备文件位于/dev/目录下,一般情况下为video0。当摄像机通过USB接口连接到视频采集终端后,在程序中调用V4L APIs对设备文件video0的读操作即可实现摄像头视频数据采集。其主要过程如下:

  1) 打开设备文件: int v4l_open(char *dev, v4l_device *vd){}打开影像源的设备文件;

  2) 初始化picture: int v4l_get_picture(v4l_device *vd){} 获取输入的影像信息;

  3) 初始化channel:int v4l_get_channels(v4l_device *vd){} 获取每个channel的信息;

  4) 对channel设置norm:int v4l_set_norm(v4l_device *vd, int norm){} 对所有的channel设置norm;

  5) 设备地址映射:v4l_mmap_init(v4l_device *vd){} 返回存放图像数据的地址;

  6) 初始化mmap缓冲区: int v4l_grab_init(v4l_device *vd, int width, int height){};

  7) 视频捕获同步: int v4l_grab_sync(v4l_device *vd){};

  8) 视频捕获: int device_grab_frame(){}。

  通过以上操作,即可将摄像机视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后通过网络发布到Internet。本设计采用后一种处理方法,即:将采集的视频数据经MJPEG压缩,生成视频数据流并发布到Internet。

  3 视频压缩模块设计

  由于摄像机采集到的视频数据信息量较大,如果直接将其处理成视频,将会给视频处理和网络数据传输带来很大的负担。因此,本设计采用高性能ARM9处理器对采集到的数据进行MJPEG压缩。

  JPEG(Joint Photographic Experts Group)—联

[1] [2]
相关阅读
Axis Communications 采用 MIPS处理器开发新款网络监控摄像机 2011-11-25
Sony推出最新款网络摄像机SNC-RZ50P 2011-08-09
高清网络摄像机应用技术探讨 2011-06-27
实践为王 四大技术引领高清摄像机发展 2011-06-09
3G网络摄像机逐渐成为家庭安防的核心 2011-03-21
智能卡操作系统的加密算法命令 2011-03-11
未来15年视频监控系统八大发展新趋势 2011-02-23
基于S3C2410嵌入式视频监控系统的研究 2011-02-15
如何打造属于自己的家庭监控系统? 2011-01-24
网络监控小阳春 2011视频监控市场预测 2011-01-17
看得更多看得更清 全景摄像机应运而生 2011-01-11
编辑:ssb
本文引用地址: http://www.eeworld.com.cn/afdz/2008/0321/article_571.html
[发表评论]
[加入收藏]
[告诉好友]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]

小广播

最热点击

专栏

向农,EEWORLD副总编。被英特尔董事长贝瑞特称为“中国可与之对话的两名记者之一”

【详细】

总编随笔
汤宏琳,人皆称为“汤汤”,电子工程世界高级编辑。随着EEWORLD一起成长。

【详细】

汤汤手记
今年,是中国集成电路产业丰收的一年,相比较往年都有大幅提升。

【详细】

凯哥博客

论坛精华

精选博文