您现在的位置: 通信界 >> 互联网络 >> 技术正文  
 
深入研究嵌入式web服务器视频监控的应用[图]
[ 通信界 / 佚名 / www.cntxj.net / 2012/7/5 21:24:59 ]
 

1.引言

后PC机时代的到来引发了信息产品的产生,而Internet与信息产品的结合是当今发展的一个趋势,嵌入式Internet技术的产生正好迎合了这个趋势。据分析,嵌入式Internet系统在Internet电话、游戏装置和手持式通信装置的推动下将会有突飞猛进的发展。由于Internet技术的渗透,嵌入式系统正变得越来越智能化并具有越来越多的网络友好特性;又由于Web技术的飞速发展,给嵌入式系统带入Internet提供了绝佳的途径。

嵌入式web技术是视频监控系统设计应用最广泛的技术之一。本文根据监控系统对敖据吞吐量和安全可靠性等各方面的实际要求,结合相关研究的新进展,深入讨论了web服务器在监控系统设计中的应用技巧,并详细做了实现上的阐述。对所有基于嵌入式web技术的监控系统的设计具有非常实际的指导作用。

把图像采集、视频压缩和WEB功能集中到一个体积很小的设备内,可以直接连入局域网和Internet,达到即插即用,省掉多种复杂的电缆,安装方便,用户也无须安装任何硬件设备即可观看,这使得由嵌入式网络视频监控服务器组成的监控网络组网和扩展都极为灵活方便。

2.WEB服务器所在系统工作原理

如图1所示,系统有两种网络接入方式:通过PPPOE自动拨号,动态获取IP联入Internet;自定义静态IP连入局域网。

  之后,系统的整个工作流程包括两条主线:

1.通过HTTP/TCP/IP方式,解析来自监控端的网页请求,包括:摄像机控制(云台上下左右、镜头光圈、缩放等等),数据库读写(视频参数如分辨率、亮色度、码流,画质),视频调度与传输(多个用户之间视频数据的发送停止及其相互协调,系统参数也放在这里)。

2.通过RTP/UDP/IP方式,为监控端提供所需的实时视频信息。RTP/UDP/IP的方式兼顾了视频传输的实时性与QoS保证。

3.WEB服务器的选择

根据工作原理的描述,WEB服务器处于整个系统核心的位置,需要解决的几个难点包括:

1.安全性。只有授权登陆用户才能进行系统配置(网络参数、视频特性等等)。普通用户只能简单监控。

2.流量控制。视频数据连续且大量,服务器应该具备一定的协调各路监控数据的能力。

3.实时性。对于监控端的web请求指令响应速度,特别是在高负荷的情况下。

4.性能。在多路监控请求同时存在的情况下,系统的响应速度。

5.支持串口命令。云台控制指令需要串口支持。

6.数据库交互。包括用户数据库,系统配置参数等等,都需要实现脱机保存。

综上所述,Thttpd在安全性、性能、流量控制等方面有效的满足系统需要,当然,实时性也得到很好的保证。下面,结合源码,首先实现Thttpd的基本功能,然后将视频数据转发、安全性、支持串口命令、数据库交互的实现完善起来。

4.Thttpd基本功能的实现

首先,确保在编译uCLinux内核的makemenucONfig这一步,选中busybox中的Thttpd。

然后,根据需要,修改源码/user/thttpd下的config.h:

#defineDEFAULT_PORT80

//服务器监听端口

#defineDEFAULT_DIR/home/httpd

//设定服务器根目录

#defineINDEX_nameindex.html

//设定访问服务器时的默认主页

#defineAUTH_FILEpasswd

//授权用户数据库文件

#defineCGI_PATTERN/cgi-bin/*.cgi

//CGI的文件名格式

#defineCGI_PATH/home/httpd/cgi-bin

//CGI的所在目录

接下来,建立服务器根目录和文件目录:

由于uCLinux的根文件系统为ROMFS,只读,因此要在生成文件系统映像之前建立好其中的目录和文件。首先是Web服务器根目录,再是根目录下的子目录:文件根目录和CGI程序目录。修改/vendor/Samsung/4510B/makefile文件,在ROMFS_DIRS列出的目录中增加home/httpd(服务器根目录和文件根目录),home/httpd/cgi-bin(CGI程序目录)。

最后,将监控系统相关的网页和CGI程序分别放在/vendor/Generic/httpd和/vendor/Generic/httpd/cgi-bin中,就可以随内核编译过程时自动复制到image的相关目录下。在/vendor/Samsung/4510B/rc中添加thttpd实现上电自动执行。

5.HTTP基本验证(RFC2617)的实现

首先必须生成存放用户及其密码的数据库文件:

由于Thttpd在http验证的实现上基于b64_decode_table解密,因此需要提供相对应b64加密而成的数据库文件。然后,编译/user/htpasswd.c,切换到相应目录下,

执行。/htpasswd-cpasswdroot

Addingpasswordforroot.

Newpassword:

Re-typenewpassword:

其中,-c表示创建一个名字为passwd的新的用户数据加密文件,同时第一个用户名为root。

之后,将passwd文件复制到/vendor/Generic/httpd下面,并且注意在thttpd/config.h中define的AUTH_FILE与passwd同名。至此,thttpd的http验证功能就顺利添加完成。

6.视频调度与传输

在本系统中,模拟视频数据经过AD,采样等预处理进入支持MPEG4编码的ASIC芯片压缩后,打包发送的任务由Thttpd完成。

在多个监控端请求同时存在的情况下,指令响应本身Thttpd已经完成,所以我们只需要实现数据传输。

在main函数里Mainloop开始之前依次执行get_device,driver_init,device_init和alloc_resource,interrupt_enable,device_STart,视频流的编码压缩就开始了。添加定时器响应函数,(void)tmr_create((struCTTimeval*)0,transfer_bitstream,(ClientData)mpeg4_fd,0,1);

其中mpeg4_fd,是编码芯片的设备描述符,transfer_bitstream为响应函数(内容略)。

然后,根据Thttpd连接请求的变化,在handle_read与handle_send中添加简单相应连接有效性判断的代码即可完成数据调度与传输的功能。

7.串口命令支持

云台控制指令的发送需要RS485的支持。

在thttpd.c的main函数里添加设备支持:打开串口设备。

intcom1fd=open(/dev/ttyS1,O_RDWR|O_NOCTTY);

传输波特率的设定:

tcgetattr(com1fd,&oldtio);

cfmakeraw(&oldtio);

cfsetispeed(&oldtio,B9600);

cfsetospeed(&oldtio,B9600);

tcsetattr(com1fd,TCSANOW,&oldtio);

在libhttpd.c里包含定义云台信令的头文件后,在httpd_parse_request中添加如下代码,

memcpy(CMD,YT_FOCUS_IN,YT_CMD_NUM);

将web请求转换为对应的云台信令存储在cmd数组中,最后,由于uclinux把所有设备作为文件操作,所以可以通过write(com1fd,cmd,YT_CMD_NUM);将云台信令正确发出去。

8.配置信息的保存(MTD驱动的实现)

uCLinux在ARM上移植过程中,它是在BootlOAder初始化系统并重映射内存后,由Bootloader将Kernel和根文件系统的映像从FLASH上直接复制到RAMuCLinux系统起始地址(0x8000),然后通过设定PC值将控制权交给uCLinux。

这种方式采用的是ROMFS文件系统,系统结构简单,实现方便,但ROMFS是只读文件系统。RAM盘虽可写但一旦掉电就会丢失内容。若想长久保存应用程序的配置文件可采用两种方法:一种是将flash上划出几个固定的扇区可读可写,用以专门存放所有要用到的配置文件;另一种是建立可写的JFFS2文件系统。前一种方法代码简单、灵活,适用于不太频繁的文件写入。后一种实现起来也比较简单,但时间、空间等方面的代价要高于前一种,适用于非常频繁的文件写入(比如一分钟超过十次)。基于本系统中对配置数据存储的实时性要求不高,而嵌入式资源又十分宝贵,因此考虑采用第一种方法,这就是MTD(memorytechnologydevice内存技术设备)。MTD是用于访问memory设备(ROM、flash)的Linux的子系统。其所有源代码在/drivers/mtd子目录下。

由于MTD的主要目的是为了使新的memory设备的驱动更加简单,因为它介于特定的闪存设备和文件系统之间,可以理解为它在硬件和上层之间提供了一个抽象的接口。所以硬件驱动程序不需要知道象JFFS2和FTL那样的用户模块使用的方法。所有它们真正需要提供的就是一组对底层闪存进行read、write和erase操作的简单例程,即/mtd目录下mtd-utils.c相应函数。将mtd-utils.c继承过来,另外,加上手工添加的flash分区表即可达到配置文件保存的目的。

配置信息的保存

本系统只有一片FLASH,大小为2M。拟分区如下:

nAME:bootloader(128KB),

size:0x20000,

offset:0x0,

mask_flags:MTD_WRITEABLE//只读分区

name:kernel&rootfs(1856KB),

size:0x1D0000,

offset:0x20000

name:Systemconfig(64KB),

size:0x10000,

offset:0x1F0000

将包含本分区表的文件放在drivers/mtd/map下,并修改相应的makefile使之编译时有效。

然后,选择适当的MTD用户模块,启用对闪存的访问:MTD_CHAR和MTD_BLOCK。MTD_CHAR提供对闪存的原始字符访问,而MTD_BLOCK将闪存设计为可以在上面创建文件系统的常规块设备(象IDE磁盘)。与MTD_CHAR关联的设备是在/vendor/Samsung/4510B/makefile的DEVICES中添加mtd0,c,90,0、mtd1,c,90,2、mtd2,c,90,4,而与MTD_BLOCK关联的设备是添加mtdblock0,b,30,0、mtdblock1,b,30,1、mtdblock2,b,30,2。

最后,需要将MTD子系统编译到内核中,即打开makemenuconfig里MTD相关的选项。

9.配置信息的管理

在thttpd.c的main函数,加入open(/dev/mtd2,O_RDWR)可打开mtdblock2。将drivers/mtd下mtd-utils.c复制到user/thttpd目录下,即可使用其中的一些函数方便的实现flash的read和write操作。

10.结语

对于嵌入式Web服务器的研究和应用,其意义是重大的。它为我们管理、控制和监测各种各样设备提供了一个很好的途径。这种设备可以是具有有限内存资源的8位或16位系统,已足够提供一个用户界面,而且这种方式是基于Internet的。这种设备可以在世界任何一个地方,只要它连入Internet就能够控制它。

目前国外的相关研究很多,如Pharlap公司的MicroWeb、AgranatSystems公司的EmWeb、EmWare公司的emMicro、Allegro公司的RomPager、WindRiver公司的Wind,还有Boa、Enea、PicoWeb、ChipWeb、Ipic、NetAcquire、Voyager、Quiotix等。国内的有Webit。

创新:

1. 嵌入式web技术的应用已越来越广泛,但大多采用比较简单的服务器BOA,真正深入应用功能更强大的Thttpd的方案少之又少,本文正是Thttpd在实际应用中的深入研究。

2. 本文根据监控系统对数据吞吐量和安全可靠性等各方面的实际要求,结合相关研究的新进展,深入讨论了web服务器在监控系统设计中的应用技巧,并详细做了实现上的阐述。文中涉及的某些技术应用技巧,譬如web server的功能框图,可广范应用于各种基于嵌入式web技术的系统中去。譬如路由器设计。

参 考 文 献

[1] Thttpd 网站。http://www.acme.com/software/thttpd/

[2] Wayne Wolf. Computers as Components Principle of Embedded System Design [M]. Princeton University, 2002.

[3] 钱 斌,徐海云。 嵌入式 web 服务器在 CTM 系统中的应用[J].微计算机信息,2006,17(5): 99-101.

[4] Greg Holden. Apache Server源代码分析[M]. 北京: 机械工业出版社, 2000.

 

作者:佚名 合作媒体:不详 编辑:顾北

 

 

 
 热点技术
普通技术 “5G”,真的来了!牛在哪里?
普通技术 5G,是伪命题吗?
普通技术 云视频会议关键技术浅析
普通技术 运营商语音能力开放集中管理方案分析
普通技术 5G网络商用需要“无忧”心
普通技术 面向5G应运而生的边缘计算
普通技术 简析5G时代四大关键趋势
普通技术 国家网信办就《数据安全管理办法》公开征求意见
普通技术 《车联网(智能网联汽车)直连通信使用5905-5925MHz频段管理规定(
普通技术 中兴通讯混合云解决方案,满足5G多元业务需求
普通技术 大规模MIMO将带来更多无线信道,但也使无线信道易受攻击
普通技术 蜂窝车联网的标准及关键技术及网络架构的研究
普通技术 4G与5G融合组网及互操作技术研究
普通技术 5G中CU-DU架构、设备实现及应用探讨
普通技术 无源光网络承载5G前传信号可行性的研究概述
普通技术 面向5G中传和回传网络承载解决方案
普通技术 数据中心布线系统可靠性探讨
普通技术 家庭互联网终端价值研究
普通技术 鎏信科技CEO刘舟:从连接层构建IoT云生态,聚焦CMP是关键
普通技术 SCEF引入需求分析及部署应用
  版权与免责声明: ① 凡本网注明“合作媒体:通信界”的所有作品,版权均属于通信界,未经本网授权不得转载、摘编或利用其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:通信界”。违反上述声明者,本网将追究其相关法律责任。 ② 凡本网注明“合作媒体:XXX(非通信界)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。 ③ 如因作品内容、版权和其它问题需要同本网联系的,请在一月内进行。
通信视界
华为余承东:Mate30总体销量将会超过两千万部
赵随意:媒体融合需积极求变
普通对话 苗圩:建设新一代信息基础设施 加快制造业数字
普通对话 华为余承东:Mate30总体销量将会超过两千万部
普通对话 赵随意:媒体融合需积极求变
普通对话 韦乐平:5G给光纤、光模块、WDM光器件带来新机
普通对话 安筱鹏:工业互联网——通向知识分工2.0之路
普通对话 库克:苹果不是垄断者
普通对话 华为何刚:挑战越大,成就越大
普通对话 华为董事长梁华:尽管遇到外部压力,5G在商业
普通对话 网易董事局主席丁磊:中国正在引领全球消费趋
普通对话 李彦宏:无人乘用车时代即将到来 智能交通前景
普通对话 中国联通研究院院长张云勇:双轮驱动下,工业
普通对话 “段子手”杨元庆:人工智能金句频出,他能否
普通对话 高通任命克里斯蒂安诺·阿蒙为公司总裁
普通对话 保利威视谢晓昉:深耕视频技术 助力在线教育
普通对话 九州云副总裁李开:帮助客户构建自己的云平台
通信前瞻
杨元庆:中国制造高质量发展的未来是智能制造
对话亚信科技CTO欧阳晔博士:甘为桥梁,携"电
普通对话 杨元庆:中国制造高质量发展的未来是智能制造
普通对话 对话亚信科技CTO欧阳晔博士:甘为桥梁,携"电
普通对话 对话倪光南:“中国芯”突围要发挥综合优势
普通对话 黄宇红:5G给运营商带来新价值
普通对话 雷军:小米所有OLED屏幕手机均已支持息屏显示
普通对话 马云:我挑战失败心服口服,他们才是双11背后
普通对话 2018年大数据产业发展试点示范项目名单出炉 2
普通对话 陈志刚:提速又降费,中国移动的两面精彩
普通对话 专访华为终端何刚:第三代nova已成为争夺全球
普通对话 中国普天陶雄强:物联网等新经济是最大机遇
普通对话 人人车李健:今年发力金融 拓展汽车后市场
普通对话 华为万飚:三代出贵族,PC产品已走在正确道路
普通对话 共享退潮单车入冬 智享单车却走向盈利
普通对话 Achronix发布新品单元块 推动eFPGA升级
普通对话 金柚网COO邱燕:天吴系统2.0真正形成了社保管