- 浏览: 863992 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (280)
- java相关 (29)
- linux系统 (55)
- ipsec (0)
- ssl (3)
- 信息安全 (13)
- web相关 (35)
- windows (9)
- c,c++ (14)
- log4j (3)
- hibernate (8)
- sqlite (1)
- 程序人生 (2)
- js (2)
- 生活点滴 (3)
- 网络相关 (14)
- 问题积累 (15)
- 数据库相关 (27)
- 软件测试 (2)
- PKI相关 (2)
- 程序设计 (7)
- 犄角旮旯 (0)
- 杂七杂八 (0)
- 硬件相关 (14)
- 防火墙 (2)
- 电子商务 (2)
- 多媒体相关 (1)
- 内存管理 (4)
- 面向对象 (1)
- csp (1)
- 驱动开发 (3)
- 移动开发 (2)
- openssl多线程实例 (1)
最新评论
-
xiaoyao3857:
博主很有探索精神嘛,学习了
Linux主机名Hostname详解 -
hiskyrisa:
言简意赅,好文章。
Flex是什么 -
layznet:
犯了类似错误。使用的是derby数据库。driverClass ...
java.sql.SQLException: No suitable driver -
idision:
你好,文章有一句createSubjectKeyId(keyT ...
bouncycastle 产生证书 -
zheng12tian:
代码有全的不?只贴一部分,,,,
在LOG4J中把日志写入远程数据库
1 引言
随着微处理器技术、计算机网络技术的进步,基于
嵌入式
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.数据库交互。包括用户数据库,系统配置参数等等,都需要实现脱机保存。
uCLinux下,主要有3个Web Server:Httpd、Thttpd和BOA.Httpd是最简单的一个Web
Server,它的功能最弱,不支持认证,不支持CGI(Common Gateway
Interface,通用网关接口)。Thttpd和BOA都支持认证、CGI等,功能都比较全。BOA源代码开放、性能可靠、稳定性好,但是是一个单任
务的Web服务器。所以,我们选择简单、小巧、易移植、快速和
安全
的Thttpd. Thttpd在默认的状况下,仅运行于普通用户模式下,从而能够有效地杜绝非授权的系统资源和数据的访问,同时Thttpd全面支持HTTP基本验证(RFC2617),可有效解决安全性的问题。
另外,Thttpd对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现,因此效能很高,可以有效提高系统的性能。
最后,Thttpd基于URL的文件流量限制,对于连续的视频流量控制而言是非常方便的,象Apache就必须使用插件实现,效率较Thttpd低。在Thttpd的官方网站上有一个与其他web server的对比图Benchmark.
综上所述,Thttpd在安全性、性能、流量控制等方面有效的满足系统需要,当然,实时性也得到很好的保证。下面,结合源码,首先实现Thttpd的基本功能,然后将视频数据转发、安全性、支持串口命令、数据库交互的实现完善起来。
4 Thttpd基本功能的实现
首先,确保在编译uCLinux内核的make menuconfig这一步,选中busybox中的Thttpd.
然后,根据需要,修改源码/user/thttpd下的config.h:#define DEFAULT_PORT 80
//服务器监听端口#define DEFAULT_DIR /home/httpd //设定服务器根目录#define
INDEX_NAME index.html //设定访问服务器时的默认主页#define AUTH_FILE passwd
//授权用户数据库文件#define CGI_PATTERN /cgi-bin/*.cgi //CGI的文件名格式#define
CGI_PATH /home/httpd/cgi-bin //CGI的所在目录
接下来,建立服务器根目录和文件目录:
由于uCLinux的根文件系统为ROM FS, 只读, 因此要在生成文件系统映像之前建立好其中的目录和文件。首先是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 -c passwd root Adding password for
root. New password:Re-type new password:
其中,-c表示创建一个名字为passwd的新的用户数据加密文件,同时第一个用户名为root.
之后,将passwd文件复制到/vendor/Generic/httpd下面,并且注意在thttpd/config.h中define的AUTH_FILE与passwd同名。至此,thttpd的http验证功能就顺利添加完成。
6 视频调度与传输
在本系统中,模拟视频数据经过AD,采样等预处理进入支持MPEG4编码的ASIC芯片压缩后,打包发送的任务由Thttpd完成。
在多个监控端请求同时存在的情况下,指令响应本身Thttpd已经完成,所以我们只需要实现数据传输。
在main函数里Main
loop开始之前依次执行get_device,driver_init,device_init和
alloc_resource,interrupt_enable,device_start,视频流的编码压缩就开始了。添加定时器响应函数,
(void) tmr_create((struct timeval*) 0, transfer_bitstream, (ClientData)
mpeg4_fd, 0, 1 );其中mpeg4_fd,是编码芯片的设备描述符,transfer_bitstream为响应函数(内容略)。
然后,根据Thttpd连接请求的变化,在handle_read与handle_send中添加简单相应连接有效性判断的代码即可完成数据调度与传输的功能。
7 串口命令支持
云台控制指令的发送需要RS485的支持。
在thttpd.c的main函数里添加设备支持: 打开串口设备。
int com1fd =
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数组中,最后,由于uc
linux
把所有设备作为文件操作,所以可以通过write(com1fd,cmd,YT_CMD_NUM);将云台信令正确发出去。
8 配置信息的保存(MTD驱动的实现)
uCLinux在
arm
上移植过程中,一般不采用FLASH文件系统,它是在Bootloader初始化系统并重映射内存后,由Bootloader将Kernel和根文件系统
的映像从FLASH上直接复制到RAM uCLinux系统起始地址(0x8000),然后通过设定PC值将控制权交给uCLinux.
这种方式采用的是ROMFS文件系统,系统结构简单,实现方便,但ROMFS是只读文件系统。RAM盘虽可写但一旦掉电就会丢失内容。若想长久保存应用程
序的配置文件可采用两种方法:一种是将FLASH 上划出几个固定的扇区可读可写,用以专门存放所有要用到的配置文件;另一种是建立可写的JFFS2
文件系统。前一种方法代码简单、灵活,
适用于不太频繁的文件写入。后一种实现起来也比较简单,但时间、空间等方面的代价要高于前一种,适用于非常频繁的文件写入(比如一分钟超过十次)。基于本
系统中对配置数据
存储
的实时性要求不高,而嵌入式资源又十分宝贵,因此考虑采用第一种方法,这就是MTD(memory technology
device内存技术设备)。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: system config (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 子系统编译到内核中,即打开make menuconfig里MTD相关的选项。
因为要使用当中涉及多个配置文件,而读写FLASH 的速度较慢,故每次配置完成后不立即写入flash,而是先把配置文件存在thttpd代码开辟的临时数组里,然后一次性(比如重启前)写入指定的FLASH分区。
9 配置信息的管理
系统第一次启动会加载一组默认配置,这是通过判断flash最后一个system config
(64KB)分区是否未被初始化(全为1或0)来实现的。在thttpd.c的main函数,加入open(/dev/mtd2,O_RDWR)可打开
mtdblock2.将drivers/mtd下mtd-utils.c复制到user/thttpd目录下,即可使用其中的一些函数方便的实现
flash的read和write操作。
10 结语
嵌入式系统Web server与CGI
技术结合使得对嵌入式系统的管理和使用更为简便直接。基于Web的视频监控系统是目前监控领域发展的主流和方向。本文根据监控系统对数据吞吐量和安全可靠
性等各方面的实际要求,结合相关研究的新进展,深入讨论了web服务器在监控系统设计中的应用技巧,并详细做了实现上的阐述。对所有基于嵌入式web技术
的监控系统的设计具有非常实际的指导作用。读者可在本文研究的基础上做进一步的完善。
发表评论
-
深入理解HTTP Session
2010-05-23 14:21 1204session在web开发中是一个 ... -
Apache和Tomcat的区别
2010-05-12 13:47 922Apache官方网站:http://www ... -
SGML
2010-05-11 08:12 1077SGML SGML(Standard Generali ... -
cookie
2010-01-26 16:33 1207当你第一次访问一个网站的时候,网站服务器会在响应头内加上Set ... -
Jetty 源码分析
2009-12-14 19:34 2572一、 总括 你了 ... -
用Java实现断点续传(HTTP)
2009-12-11 11:20 1110用Java实现断点续传(HTTP) (一)断点续传的原 ... -
什么是Jetty?
2009-12-11 11:18 1877作者: 来源:www.matrix ... -
HttpClient入门教程
2009-12-11 10:39 1217一般的情况下我们都是使用IE或者Navigator浏览器来访 ... -
forward与sendRedirect区别
2009-12-09 13:59 12891.RequestDispatcher.forward() ... -
CSP开发流程
2009-11-30 21:48 2716当前,国内许多科研单位 ... -
HTML特殊符号对照表
2009-09-14 16:50 1134特殊符号 命名实体 十进制编码 ... -
安装thttpd的手册
2009-08-24 14:29 3245本手册是在新装的NetBSD上安装的。 (1) ftp上 ... -
使用XMLHTTP Request Object获取服务器数据
2009-08-08 12:20 1091在Web客户端使用xmlhttp对象,可以十分方便的和服 ... -
XMLHTTP---介绍
2009-08-08 12:16 938MSXML中提供了Microsoft.XMLH ... -
IIS环境下快速安装、配置和调试PHP5.2.0
2009-07-14 22:00 1451一,在哪里获得PHP 打开PHP官方网站的下载页:htt ... -
LAMP 技术简介
2009-07-14 11:22 2300本教程将探究 Linux-Apache-MySQL-PHP(也 ... -
JSP中的pageEncoding和contentType属性
2009-07-09 16:07 945关于JSP页面中的pageEnco ... -
prototype.js相关
2009-07-09 12:40 933prototype.js是什么? 万一你没有使用过大名鼎鼎的 ... -
select动态添加options操作
2009-07-02 09:20 1557<select id="ddlResour ... -
基于ActiveX 控件开发动态Web页
2009-06-21 22:41 3081Web页面的开发主要分为三类:静态Web页面、半动态Web页面 ...
相关推荐
thttpd是一个小型、快速且安全的Web服务器,主要用于嵌入式系统和开发环境。它的设计目标是简单、高效并且占用资源少,因此在需要轻量级HTTP服务的场合非常受欢迎。thttpd-2.29.tar.gz是thttpd的源代码包,包含了...
这个软件包是thttpd的2.27版本,提供了源代码,使得用户可以根据自己的需求进行编译和定制。 thttpd的设计目标是简单、小巧和快速,它不包含许多大型HTTP服务器如Apache或Nginx中的复杂功能。然而,这并不意味着它...
然后,你可以使用`/etc/init.d/thttpd start`来启动thttpd,`/etc/init.d/thttpd stop`来停止它,`/etc/init.d/thttpd restart`来重启服务,`/etc/init.d/thttpd status`来查看服务状态。 在生产环境中,为了安全...
thttpd移植与安全认证配置 将源码包拷贝到主机主目录下的工作目录(/root/workdir),并解压到当前目录: [root@ workdir]#tar -zxvf thttpd-2.25b.tar.gz 进入解压后的源码文件夹: [root@ workdir]#cd thttpd-2.2.25...
thttpd的特性包括: 1. **小型体积**:thttpd的源码简洁,不包含许多大型HTTP服务器中的复杂功能,这使得它在内存和CPU使用上非常高效。 2. **快速响应**:thttpd设计时就考虑了性能,能够快速处理HTTP请求,提供...
thttpd [-C configfile] [-p port] [-d dir] [-dd data_dir] [-r|-nor] [-s|-nos] [-v|-nov] [-g|-nog] [-u user] [-c cgipat] [-t throttles] [-h host] [-l logfile] [-i pidfile] [-T charset] [-P P3P] [-M max...
"嵌入式Linux下的thttpd web服务器的移植" 本文主要介绍了如何将thttpd web服务器移植到基于Intel IX P425网络处理器的嵌入式Linux平台上。thttpd是一个小型、快速、安全的HTTP服务器程序,具有简洁、轻便、便携、...
"快速"是因为thttpd采用了非阻塞I/O模型。非阻塞I/O允许服务器同时处理多个连接,而无需为每个请求分配单独的线程或进程。这种设计提高了服务器的并发性能,降低了系统资源的消耗,尤其在高并发请求时表现突出。 ...
"基于Linux的嵌入式Web服务器Thttpd的应用研究与实现" 本文研究了基于Linux的嵌入式Web服务器Thttpd的应用研究与实现,讨论了Thttpd在ARM平台上的实现、SQLite数据库的移植、CGI技术的应用、远程监控、智能家电、...
嵌入式Web环境搭建(BOA、Goahead、Thttpd) 本文将介绍如何在 Linux 下模拟搭建嵌入式 Web 服务器环境,成功搭建起 BOA、Goahead 和 Thttpd 三种常见的嵌入式 Web 服务器。 BOA 服务器搭建 BOA 服务器是一种轻量...
thttpd is a simple, small, portable, fast, and secure HTTP server.
在这样的系统中,轻量级的Web服务器如Boa和Thttpd常被用于远程监控、设备管理或提供简单的Web服务。本文将详细讨论Thttpd服务器以及如何在嵌入式系统开发中进行配置和测试。 Thttpd(Tiny HTTPd)是一款开源的、轻...
Web 服务移植 thttpd 在 ARM 移植 Web 服务移植 thttpd 在 ARM 移植是指将 thttpd Web 服务器移植到 ARM 架构的开发板上。thttpd 是一个小型、快速、免费的 Web 服务器,支持 HTTP/1.1 协议和 HTTPS 协议。ARM 架构...
《深入解析嵌入式Web服务器thttpd》 在当今互联网时代,Web服务器已经成为不可或缺的基础设施,它们负责处理HTTP请求,向用户提供动态或静态的网页内容。而在嵌入式系统中,由于资源有限,需要轻量级且高效的Web...
【thttpd服务器概述】 thttpd是一款轻量级、高效、安全的Web服务器,尤其适合于嵌入式系统和低资源环境。它在uCLinux操作系统中被广泛使用,因为其具有简单、小巧、易移植、快速和安全的特性。在监控系统中,thttpd...
### 嵌入式Linux下的thttpd与CGI环境配置详解 #### 一、引言 在嵌入式Linux环境中构建一个简单的Web服务器是非常实用的,尤其在开发物联网(IoT)设备或网络设备时。本文将详细介绍如何在嵌入式Linux环境下配置...
light web server... light web server... light web server... light web server... 最新版本的应用到嵌入式Linux的轻量型web server
轻量级的Web服务器如Boa、thttpd和CGI库cgic207,是这些场景下的理想选择,因为它们资源消耗低,性能高效,且易于集成。接下来我们将详细探讨这三个组件。 Boa是一款小巧但功能强大的嵌入式Web服务器,它适用于内存...
### 基于Linux的嵌入式Web服务器Thttpd的应用研究与实现 #### 一、案例设计引言 随着信息技术的快速发展,特别是在互联网领域的普及与应用深化,嵌入式Web服务器作为连接嵌入式技术和网络技术的重要桥梁,其重要性...