基于ARM嵌入式的视频监控系统的设计

发布者:知者如渊最新更新时间:2012-04-07 来源: 计算机工程与设计关键字:ARM  嵌入式  视频监控系统 手机看文章 扫描二维码
随时随地手机看文章

目前,嵌入式系统在视频监控中的应用越来越广泛。伴随着网络的强大功能,视频监控更侧重网络监控方案,要求体积小、远程化、成本低、功耗小、操作界面人性化等。本系统基于嵌入式Linux 平台上利用USB 摄像头采集视频图像,通过视频图像压缩及结合网络进行视频图像传输,使远程监控成为可能。

1 系统概述

视频图像监控系统由4 部分组成, 分别为视频图像采集、视频图像处理、视频图像传输、视频图像显示。视频图像采集部分由数字摄像头、USB 通道和嵌入式处理器构成、视频图像处理主要是视频图像压缩,由算法实现、视频图像传输主要利用视频服务器来实现、视频图像显示主要是在远程的主机上实现视频图像的浏览、保存和处理等,Linux 主机上由应用程序实现,Windows 主机上通过浏览器上的JAVA 程序实现。系统原理框图如图1 所示。

图1 系统框图

2 系统硬件

CPU 处理器使用Samsung S3C2440A, 主频400 MHz,最高533 MHz;64 M SDRAM、32 bit 数据总线、SDRAM 时钟频率100 MHz;256 M/1 GB Nand Flash, 掉电非易失、2 M NorFlash,掉电非易失;统宝3.5 真彩LCD,屏集成4 线电阻式触摸屏, 屏幕分辨率可以达到1024×768 象素;100 M 以太网RJ-45 接口(采用DM9000 网络芯片)、串行口、USB Host、USB Slave B 型接口、SD 卡存储接口、路立体声音频输出接口, 麦克风接口、JTAG 接口、4 USER Leds、6 USER buttONs(带引出座)、I2C 总线AT24C08 芯片、20 pin 摄像头接口;摄像头用良田,兼容SN9C20X 系列芯片的驱动,本系统的内核中集成了该驱动。[page]

3 系统软件

3.1 Linux 内核的移植

移植新内核主要是为了给LCD 以及摄像头添加相应的驱动支持,在Fedora 9 中打开内核的目录,使用缺省配置文件进行配置:在内核中添加V4L 支持、添加万能USB 摄像头驱动GSPCA。

3.2 基于V4L2 的图像采集程序

系统使用的交叉编译工具为arm-linux-gcc-4.3.2.设计使用到的应用程序都要通过该编译器编译后下载到开发板上运行。将编好的应用程序V4L2.c 交叉编译后下载到板。

V4L(Video for Linux)是Linux 下提供的一个音视频接口规范,所有的音视频驱动编写都要用到这些接口。

V4L 从2.4.1.x 的内核版本中开始出现, 设计使用的Video for Linux2(简称V4L2)是V4L 的改进版,修复了第一代中的部分BUG。

设计的图像采集及处理程序主要基于V4L2 架构, 通过对一些ioctl 函数的调用来实现视频设备的打开,图像的采集处理,图像的显示等。几个主要的ioctl 函数的简介:

1)ioctl(fd,VIDIOC_S_FMT, &fmt):用于设置图像的格式。

2)ioctl(fd, VIDIOC_REQBUFS, &req):向内存申请缓冲区,申请的buffer 个数存在count 中。

3)ioctl(fd, VIDIOC_QUERYBUF, &buf):查询已经分配的V4L2 的视频缓冲区的相关信息, 包括视频缓冲区的使用状态、在内核空间的偏移地址、缓冲区长度等。

4)ioctl(fd, VIDIOC_QBUF, &buf):放一个空的视频缓冲区到视频缓冲区输入队列中,函数执行成功后,指令的视频缓冲区进入视频输入队列,在启动视频设备拍摄图像时,相应的视频数据被保存到视频输入队列相应的视频缓冲区中。

5)ioctl(fd, VIDIOC_STREAMON, &type):启动视频采集命令,应用程序调用VIDIOC_STREAMON 启动视频采集命令后,视频设备驱动程序开始采集视频数据,并把采集到的视频数据保存到视频驱动的视频缓冲区中。[page]

图像采集处理流程图如图2 所示。

图2 图像采集处理流程图

3.3 网络服务器

系统采用Boa 服务器。Boa 是一种非常小巧的Web 服务器, 其可执行代码只有大约60 kB 左右。作为一种单任务Web 服务器,Boa 只能依次完成用户的请求,Boa 支持CGI,能够为CGI 程序fork 出一个进程来执行。板上移植该服务器,Boa 服务器默认开机自动运行,配置conf 文件。

服务器端应用程序使用servfox, servfox-R1_1_3 解压修改Makefile 文件:CC=arm-linux-gcc,编译后得到可执行文件servfox,下载到板上,输入命令chmod +x servfox 为它添加可执行属性。

客户端程序使用spcawiew, 该程序用于在Linux 主机上对服务器进行监控,无需移植。在Linux 上编译spcaview.由于此软件包依赖与libsdl,所以在安装spcaview 之前,需要安装SDL-1.2.13. 安装spcaview 软件后,在源文件目录上有3 个可执行文件,spcacat :简单图片的抓取工具,不能用于网络监视客户端,Spcaserv:流媒体服务器,Spcaview: 用来纪录数据流,也能用来播放数据,也能作为网络监视客户端用。

4 监控过程

4.1 在Linux 操作系统上的监控

正常启动运行开发板,运行服务器端程序servfox: servfox-d /dev/video0-s 320x240-w 7070。

在Linux 上运行: ./spcaview-g-s 320x240-w 10.1.91.230:7070

其中10.1.91.230 是服务器的IP 地址,这样就可以在PC机上看见USB 摄像头采集进来的数据了。

系统是装在虚拟机中的fedora 9 linux 系统,可以流畅地观察到摄像头监控区域的情况。[page]

4.2 Windows 操作系统上的监控

对于网络监控的客户端,能够跨平台的工具目前只有浏览器,通过浏览器来监控,无论是Linux、Windows、MacOS 或者其他的UNIX 系统,只要有图形界面的浏览器,在桌面环境下都可以对远程的摄像头所"控制"的范围进行监控。

Mini2440 上已经有Boa 服务器可供使用,Spcaview 中的http-java-applet 文件夹中已经包含了一个可以监控使用的web 页面,将该文件夹复制到Boa 服务器的主文件夹/www 下。

由于http-java-applet 文件夹内含的WEB 主页面(Index.html)包含了JAVA 控件,所以先在主机上安装JAVA 环境,让浏览器支持JAVA 插件。

安装好JRE 后, 在浏览器的地址栏上输入服务器地址,即可实现远程监控。

4.3 远程抓拍

通过web 表单提交CGI 来运行应用程序。

通用网关接口(CGI)规范允许Web 服务器执行其他的程序并将它们的输出储存在发送给Web 浏览器的文本、图形和音频中。服务器与CGI 程序的结合能够扩充World WideWeb 的能力。

CGI 程序可以由C、Perl 或者UNIX Shell 脚本等流行编程语言编写。

在本设计中,网页上的按钮shoot the picture 提交了一个名为V4L 的CGI 文件v4l.cgi,该文件是用shell 脚本编写的,用于在板上运行已编译好的图像采集程序并对抓拍的图片返回到新打开的网页中进行查看。

Shell 脚本(v4l.cgi)内容如下:

#! /bin/sh

/www/http-java-applet/v4l2

echo "Content-type: text/html; charset=gb2312"

echo

echo "……"

echo "

"

exit 0

5 结束语

系统采用开源的Linux 系统,降低了开发成本,可以任意裁剪和制定内核,方便移植。与传统PC 机的监控系统相比,本系统具有体积小、成本低、可靠性强等优势。本系统还具有一定的扩展性,可以增加适当的功能扩展来满足用户更高的要求, 如在图像采集端加入设置入侵检测或者报警等控制功能。

关键字:ARM  嵌入式  视频监控系统 引用地址:基于ARM嵌入式的视频监控系统的设计

上一篇:基于ARM9与WinCE的车辆GPS定位信息采集系统
下一篇:无线传感器网络协调器的研究和设计

推荐阅读最新更新时间:2024-03-16 12:57

决定ARM内核MCU性能和功耗主要因素浅析
继ARM推出Cortex-M0+内核后,其32位MCU内核增加到了4个。不久前,恩智浦也宣布取得了Cortex-M0+处理器授权,成为目前唯一一家能够提供完整的Cor tex-M0、Cortex-M0+、Cortex-M3和Cor tex-M4系列内核MCU的半导体厂商。飞思卡尔在今年3月份也已经推出了基于ARM Cortex-M0+的MCU Kinetis L系列。 在ARM内核对MCU统一化进程的同时,各个厂商要怎样才能使得各自的产品与众不同、性能突出呢?恩智浦半导体的Jan JaapBezemer(全球微控制器产品线总监)表示,除了内核外,还有别的资源也能体现差异化,比如内存、数字/模拟IP等。Bezemer说:“有些IP
[单片机]
ARM64体系结构编程与实践学习笔记(九) 高速缓存介绍
1. 高速缓存简介 由于处理器的访问速度和内存的访问速度差距越来越大,使得极端及整体系统的性能受到了巨大的影响。高速缓存,也就是Cache位于CPU和主存之间。相比于主存,它的容量要小的多,但是速度也快很多。它的存取速度能与中央处理器相匹配。 根据程序局部性原理,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性很大。因而,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的那一组单元内容调入高速缓冲存储器,中央处理器即将存取的主存储器单元很可能就在刚刚调入到高速缓冲存储器的那一组单元内。于是,中央处理器就可以直接对高速缓冲存储器进行存取。在整个处理过程中,如果中央处理器绝大多数存取主存储器的操作
[单片机]
采用ARM嵌入式微处理器的VGA显示技术分析
目前很多SOC厂商的微处理器芯片都集成了LCD控制器,如三星公司的S3C2410.S3C2440,Intel的Xscale系列等。大多数嵌入式系统也采用流行的LCD显示技术。但是在需要大屏幕显示、对分辨率要求不高的场合,如车间、厂房,采用大屏幕LCD则成本过高。另一方面,VGA显示技术因为技术发展成熟,成本低廉,仍在被大量使用,直到今天它仍是所有显示终端最为成熟的标准接口。如果让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。 1 基于S3C2440的VGA显示技术分析 通过分析VGA显示技术的时序逻辑与S3C2440内部集成LCD控制器驱动TFT LCD的时序逻辑,找出它们的共同点,分析在S3C244
[单片机]
采用<font color='red'>ARM</font><font color='red'>嵌入式</font>微处理器的VGA显示技术分析
ARMGNU伪指令
符号定义伪指令 .global,.local,.set,.equ .global 使得符号对连接器可见,变为对整个工程可用的全局变量 .global symbol .local 表示符号对外部不可见,只对本文件可见 .local symbol .set 给一个全局变量或局部变量赋值,和.equ的功能一样 .set symbol expr .set start, 0x40 .set start, 0x50 mov r1, #start ;r1里面是0x50 .equ 和.set一样,只是格式不同 symbol .equ expr start .equ, 0x40 start .equ, 0x50 mov r1
[单片机]
云存储应用是视频监控系统发展的必然需求
    近些年来大数据、云计算、云存储在IT界可谓炙手可热,那其在视频监控行业的需求和应用又怎么样呢?不同行业、规模、应用需求的视频监控系统是否需要建设云存储呢?各行业的决策者们无疑还存在一些疑惑,但是随着视频监控系统对视频图像清晰度的不断追求、系统规模的不断扩大、应用需求不断趋向多样化,云存储应用是视频监控系统发展的必然需求。   云存储的需求分析   首先是视频图像清晰度发展需求。视频监控对视频图像的清晰度需求是无止境的。视频图像的分辨率从QCIF、CIF、D1、720P、1080P、4K、8K一路走来,仅仅使用了不到十年的时间,现在已开始步入4K分辨率主流年代。随着视频图像分辨率的不断增大,相应对视频图像的存储要求也
[安防电子]
GPU整合手势辨别技术 ARM阵营再出击
    在触控技术之后,手势辨别技术(Gesture Recognition)已然成为消费性电子战场中另一块兵家必争之地。继惠普(HP)、英特尔(Intel)及Google分别收购Leap Motion、Omek、Flutter等三家手势辨别/动作追踪公司后,安谋国际(ARM)亦不甘示弱,宣布将与eyeSight合作,拟将其手势辨别技术整合至ARM Mali T600系列绘图处理器(GPU),从根本上优化手势辨识技术的处理效能。   ARM多媒体处理部门执行副总经理Pete Hutton表示,ARM将与eyeSight合作,共同提供客户先进的手势辨别技术。透过将eyeSight技术整合至运用于Cortex-A系列的Mali GPU,
[手机便携]
基于ARM核微处理器的便携式管道泄漏检测仪分析
目前输油管道泄漏监测定位的主要方法可分为两大类,一类是 检测 输油管线的管壁状况,如管内探测球等,另一类则依赖于监测输油管内流体的状态,如压力、流量的变化,常用的方法有压力梯度法、负压力波法、流量平衡法、相关法等。随着计算机、通信和仪表技术的快速发展,监测输油管道内流体的状态变得越来越容易实现,逐渐成为输油管道监测的主流方法。由于这些依赖监测输油管内流体的状态的方法各有其优缺点,所以目前输油管道的泄漏监测往往是采用多种方法联合判断。近几年来,随着高性能、低功耗处理器ARM的出现,信号采集存储系统的功耗和体积不断减少,满足了便携式的要求,使得掌上仪器的开发成为可能。本文利用ARM核微处理器LPC2214研制的相关检漏仪,采用了负压波法
[单片机]
基于<font color='red'>ARM</font>核微处理器的便携式管道泄漏检测仪分析
基于嵌入式ARM Linux步进电机驱动程序的设计
0 引言 随着激光雕刻机的不断发展和改进,嵌入式Linux的激光雕刻机比CNC(Computer numerical control)激光雕刻的优势不断显现,它大幅度提高了处理能力,方便了设计开发,节约了成本,是未来经济型激光雕刻机发展的趋势。而嵌入式ARM(Advanced RISC Machines)Linux步进电机驱动是实现激光雕刻的核心。 嵌入式开发过程中,经常需要为特定设备开发驱动程序。这些驱动程序的编写和编译与PC上的Linux驱动开发相比存在明显的差异,需要考虑的因素较多,实现过程较为复杂。本文以Samsung公司的友善之譬S3C2440开发板为例,探讨如何使用嵌入式Linux开发字符设备驱动程序来驱动步进
[单片机]
基于<font color='red'>嵌入式</font><font color='red'>ARM</font> Linux步进电机驱动程序的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved