当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]针对目前嵌入式视频监控系统中,云台控制模块开发周期长且运行不稳定的问题,提出了基于简单网络管理协议(SNMP)的远程云台控制方案。该方案运用Net-SNMP作为开发工具,通过扩展MIB库在嵌入式系统上移植SNMP代理,成功地实现了IP网上云台的远程控制。实验表明,该方案不仅稳定可靠而且开发周期短,已被运用于某单位的视频监控系统中。

随着多媒体技术和网络通信技术的迅速发展,视频监控技术在国民生产生活的各个领域得到了广泛应用。而云台控制系统的出现为增加视频监控系统的监控范围、提高摄像头的监控效率起到了巨大作用。对于云台控制系统,参考文献[1]提出了基于DSP芯片的云台控制系统,参考文献[2]提出了在Visual C++编程中利用ActiveX控件实现云台控制的方案。但是,这些方案由于没有现成的开发工具支持,开发周期长、成本高且开发出来的系统在网络环境不佳时,运行不够稳定。针对这种情况,以及ARM11微处理器具有优异的多媒体数据处理能力和高度智能化的特点,本文提出了运用Net-SNMP开发工具,通过在嵌入式ARM11平台上移植SNMP代理的方法实现IP网上云台的远程控制方案。

1 基于ARM11的嵌入式视频监控系统

如图1所示为典型的嵌入式视频监控系统[3],S3C6410处理器通过控制外围设备进行视频采集,并将压缩编码后的信号发送给监控终端。同时,嵌入式处理器通过网卡接收监控终端发送过来的云台控制命令,按照云台控制协议将其解码并通过RS485端口发送给云台,实现对云台的控制功能。


2 系统硬件设计

基于SNMP和ARM11的云台控制系统的硬件部分由主控制板模块、云台模块和传输模块组成。

系统硬件部分主要包括:微处理器及存储电路模块、电源时钟模块、网卡模块和外围接口电路模块等[3]。DM9000网卡用于从IP网接收远程控制命令;RS485串口用于微处理器与云台之间的通信。Flash用于存储各种固化程序;SDRAM用于系统运行时程序的存取; 串口RS232用于打印输出信息和程序的调试。

2.1 主控制板模块

主控制板模块(即核心控制器)S3C6410是三星公司基于ARM1176JZF-S内核构建的高性能多媒体应用微处理器,由于其内部集成了硬件编解码单元MFC,使其在多媒体信号处理上大大优于早期的同类产品。S3C6410内部结构复杂,其内部集成有1个LCD控制器、SDRAM控制器、NAND Flash控制器、I2C总线接口和看门狗计数器等。完善的外设和667 MHz的运行频率,使S3C6410处理器很适用于智能控制系统的开发。

2.2 云台模块

云台是一种安装在摄像机支撑物上的工作台,用于支撑摄像机以实现水平和垂直运动等辅助功能。一般云台摄像机内置有解码器,遵循云台控制标准协议,根据外部控制信号可以对其实现控制。本系统采用3030WQ型云台和PELCO-D云台协议。其云台协议如表1所示,系统硬件架构如图2所示。

云台数据格式为:1位起始位、8位数据位、1位停止位,无效验位。波特率为2 400 B/s。
云台的停止、左、右、上、下命令分别对应:0xff,0x01,0x00,0x00,0x00,0x00,0x01;0xff,0x01,0x00,0x04,
0xff,0x00,0x04;0xff,0x01,0x00,0x02,0xff,0x00,0x02;0xff,0x01,0x00,0x08,0x00,0xff,0x08;0xff,0x01,0x00,0x10,
0x00,0xff,0x10(这里的地址码均设为0x01)。

3 软件设计

软件设计包括嵌入式系统构建和应用软件两部分[4]。嵌入式系统部分按照华恒科技S3C6410用户手册构建,其包括了引导程序(Bootloader)、Linux内核、驱动等,软件框图如图3所示。

Bootloader、Linux内核和设备驱动程序形成基本的嵌入式运行环境,应用层软件snmpd为SNMP代理软件,负责接收、解码控制命令,并将解码后的命令通过串口RS485发送到云台模块,实现对云台运动方向的控制。

3.1 Linux2.6.21操作系统定制

本系统采用开放源代码的嵌入式Linux2.6.21作为操作系统。首先对Linux内核进行裁剪,保留本系统所需的NAND Sevice Support、UDP协议以及串口支持、套接字、NFS文件系统等。裁剪包括并口支持、USB口支持、WLAN协议支持、SD卡支持等驱动模块。将裁剪后的内核通过交叉编译器编译即可得到ARM处理器能够运行的文件。然后再将镜像文件通过Bootloader下载到目标板的Dataflash中。

3.2 应用程序snmpd的开发

3.2.1 Agent开发环境的建立

由于嵌入式Linux系统的资源有限,不可能在其上运行开发和调试工具,因此,采用“宿主机即目标机”的开发形式。宿主机和目标机通过串口与网口连接。宿主机是安装了Linux系统的PC机,在宿主机上建立交叉编译环境,程序在宿主机上进行编译,然后通过交叉编译工具得到在嵌入式操作系统上运行的可执行文件。本系统采用Linux2.6.21版本作为PC机的操作系统,编译器选用Arm-linux-gcc3.4.1版本,以Net-snmp v5.4.2作为开发工具,目标机CPU为ARM11微处理器。

3.2.2 MIB库的扩展

开发环境建立后,就可以进行SNMP代理软件的开发。依据Net-SNMP开发文档,要在SNMP代理中实现自定义的功能(云台控制)就需要对其MIB库进行相应的扩展。MIB文件的编写要遵循SNMP协议中SMI部分的要求[5-6]。下面是本文编写的实现云台控制功能的MIB库文件,本文将其命名为S3C6410.txt。

S3C6410-MIB DEFINITIONS ::= BEGIN
IMPORTS
TimeTicksFROM SNMPv2-SMI
enterprisesFROM SNMPv2-SMI
OBJECT-GROUP,NOTIFICATION-GROUP FROM SNMPv2-CONF
OBJECT-TYPE, Integer32, Gauge32, MODULE-IDENTITY
FROM SNMPv2-SMI
TEXTUAL-CONVENTION FROM SNMPv2-TC;
S3C6410 OBJECT IDENTIFIER::={ enterprises 9000 }
DIRECTIONOBJECT-TYPE
SYNTAXInteger32
MAX-ACCESSread-write
STATUScurrent
DESCRIPTION
"DIRECTION controll the directions of the camera.
The number ‘0‘ equals the command ‘stop‘
The number ‘1‘ equals the command ‘left‘
The number ‘2‘ equals the command ‘right‘
The number ‘3‘ equals the command ‘up‘
The number ‘4‘ equals the command ‘down‘
The other number equals the number ‘0‘
"
DEFVAL { 0 }
::={ S3C6410 1 }
END
MIB文件S3C6410.txt描述了0、1、2、3、4分别代表的涵义。即,当SNMP代理软件(snmpd)接收到了控制端发送过来的0、1、2、3、4信息时,分别将其解释为stop、left、right、up、down命令。

3.2.3 C代码(框架)的自动生成和自定义功能的加入

按照SMI规范编写好MIB库文件后,将MIB文件放在usr/local/share/snmp/mibs/目录下面,并用Net-SNMP自带的mib2c工具生成相应的C文件S3C6410.c和S3C6410.h;然后将这两个C文件拷贝到net-snmp.5.4.2/agent/mibgroup/examples/目录下,并在生成的S3C6410.c模板上添加需要的功能[7]。下面是主要添加和修改的部分。

(1)依据PELCO-D云台协议定义一维字符型数组stop、left、right、up、down。当SNMP代理接收到stop、left等命令时,就可以按照下面的定义将命令翻译成云台模块可以识别的码流。
char stop[7]={0xff,0x01,0x00,0x00,0x00,0x00,0x01};//0
char left[7]={0xff,0x01,0x00,0x04,0xff,0x00,0x04};//1
char right[7]={0xff,0x01,0x00,0x02,0xff,0x00,0x02};//2
char up[7]={0xff,0x01,0x00,0x08,0x00,0xff,0x08};//3
char down[7]={0xff,0x01,0x00,0x10,0x00,0xff,0x10};//4

(2)打开串口并设置串口参数,SNMP代理通过串口控制云台转动。
open("/dev/s3c_serial1",O_RDWR | O_NDELAY |
O_NOCTTY)//打开串口
//设置串口参数
tio.c_cflag = B2400 |CS8 |CREAD |CLOCAL;
tio.c_cflag &= ~HUPCL;
tio.c_lflag = 0;
tio.c_iflag = IGNPAR;
tio.c_oflag = 0;
tio.c_cc[VTIME] = 0;
tio.c_cc[VMIN] = 0;
……

(3)在case MODE_SET_ACTION:下添加云台控制功能。
case MODE_SET_ACTION:
……
switch(direction)
{
case 0://当接收到0时执行stop命令
write(fd,stop,7);
close(fd);
break;
……
……
case 640://当接收到640时启动application
system("exec /mnt/nand/my.application &");
break;
default://错误处理
……
}

当snmpd接收到0、1、2…时,分别向串口写入stop、left、right…命令。

3.2.4 snmpd的编译、配置和移植

(1)在net-snmp-5.4.2.1目录下使用CC=arm-none-linux-gnueabi-gcc ./configure --build=i386-linux --host=arm-none-linux-gnueabi --enable-mini-agent --disable-ipv6 --with-endianness=little --disable-manuals --disable-ucd-snmp-compatibility --enable-as-needed --disable-embedded-perl --without-perl-modules --disable-snmptrapd-subagent --disable-applications --disable-scripts --with-mib-modules="S3C6410"命令进行配置编译选项,这里可以添加需要或者去掉一些不需要的选项。配置完成后使用make install命令进行编译、安装。编译得到的snmpd比较大,但可用arm-linux-strip snmpd进行处理即可得到需要的snmpd文件。

(2)snmpd.conf文件的配置。配置文件用于存放代理进程所需的配置信息。代理进程在初始化时访问该文件:读取所需的参数、地址以及启动运行及进入循环后读写SNMP报文所需的其他信息。下面是本设计中缩减后的SNMP代理配置文件内容:
#sec.namesourcecommunity
com2sec locallocalhostpublic
com2sec mynetwork 192.168.1.0/24public#我的网段
在168
为了便于测试,可以将组设置为可读写,如:group MyRWGroup v2c mynetwork。

(3)移植到目标开发板。将snmpd和修改后的snmpd.conf文件移到宿主机的Windows下。启动目标板,将snmpd文件上传到目标板/usr/sbin目录下(需要将访问权限更改为可执行),将snmpd.conf文件上传到/usr/local/share/snmp/下(不存在的目录先要创建)。然后就可以启动snmpd了。

4 系统测试

测试环境为:内线速率为10 Mb/s的局域网Intranet;控制终端采用戴尔Vostro230型PC机(主频2.7 GHz,内存2 GB,Windows XP操作系统,IP地址:24.84.58.129)。为了方便测试,控制软件采用ManageEngine-MibBrowser软件,ARM11板IP地址设为24.84.58.224。

在系统搭建完成后,启动ARM板,同时在控制端PC机上打开ManageEngine-MibBrowser软件,并加载MIB文件。设置好相关参数后,向ARM板分别发送控制命令1(左)、2(右)、3(上)、4(下)、0(停止)。
实验表明,该方案能够在IP网络上稳定可靠地实现对云台的远程控制功能,效果非常好。

本文将先进的嵌入式技术与SNMP协议相结合,通过MIB扩展和SNMP移植,成功地在ARM11平台上实现了对云台的远程控制,并给出了运用Net-SNMP工具实现云台控制功能的详细方法。该方案不仅新颖,而且稳定可靠,开发周期短,具有很高的市场应用价值。目前,该方案已在某单位网络管理系统的视频监控模块中得到运用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式处理器是一种特殊的计算机处理器,它被设计用于嵌入到各种设备和系统中,以实现特定的功能。由于其低功耗、高性能和可靠性等特点,嵌入式处理器在许多领域都有广泛的应用,如汽车电子、工业控制、医疗设备等。本文将对嵌入式处理器...

关键字: 嵌入式处理器 嵌入式系统

2023年10月10日, [恩智浦创新技术论坛] 在深圳湾万丽酒店举行,众多工业、物联网、新能源和医疗等行业的企业出席论坛,深入交流市场趋势与行业洞察,一同讨论如何协同面对市场的机遇与挑战,共同促进未来市场的发展。米尔电...

关键字: NXP 嵌入式处理器

嵌入式硬盘录像机(Embedded Digital Video Recorder,简称EDVR)是一种专用于视频监控系统的数字录像设备。它结合了计算机技术、视频压缩编码技术和数据存储技术,通过嵌入式操作系统进行控制和管理...

关键字: 嵌入式硬盘录像机 数字录像设备 视频监控系统

据业内信息报道,昨天 AMD 在 Embedded World 上宣布了其第四代 EPYC 嵌入式处理器,该处理器采用其 Zen 4 架构,旨在云和企业计算以及工厂车间工业边缘服务器中的嵌入式网络、安全、防火墙和存储。

关键字: Zen 4 AMD EPYC 嵌入式处理器

摘 要 :智能电网以优良的性能服务于国民生产,主要依靠接入电力系统设备间的网络通信。便携式电力设备的网络通信性能测试对于智能电网的运行具有重要意义。以嵌入式处理器为核心,提出了一种智能电网设备网络通信性能的便携式测试装置...

关键字: 智能电网 嵌入式处理器 WinCE操作系统 通信 便携式测试装置 人机接口

摘要:随着中国安防产业发展的越来越快,市场规模不断扩大,从事安防产业的公司也越来越多。对于推广智能安防产品的公司而言,只有抓住了安防市场的脉搏,掌握了关键的技术,才能正确应对未来市场的需求而不断的推陈出新,不断地在市场竞...

关键字: 视频监控系统 智能化 目标检测与识别 智慧安防

摘要:物联网技术被称为是信息产业的第三次革命,为了进一步研究物联网技术及其应用发展,文中介绍了物联网及其相关技术,并对物联网的安全及隐私问题进行了分析,最后对物联网的网络管理协议和应用进行了探讨。

关键字: 物联网 传感器 网络管理协议 拓扑结构

摘要:为了更加快捷有效地构建一套高速公路视频全程监控系统,提出了基于H.264视频压缩标准的高速公路视频全程监控方案。该系统通过H.264技术的视频压缩与网络传输一体化优势,以及数字视频光纤传输交换平台的各种视频、数字信...

关键字: 视频监控系统 H.264技术 数字视频光纤传输交换平台

设计一种嵌入式系统,以WinCE操作系统和ARM硬件平台为核心实现对现场的实时监控;通过无线网络把视频图像传输到主机端,以实现分析、存储及显示等功能。

关键字: ARM-WinCE 视频监控系统 无线网络
关闭
关闭