• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 深入研究嵌入式web服务器的视频监控应用

深入研究嵌入式web服务器的视频监控应用

录入:edatop.com     点击:

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

由于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数组中,最后,由于uclinux把所有设备作为文件操作,所以可以通过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技术的监控系统的设计具有非常实际的指导作用。读者可在本文研究的基础上做进一步的完善。

参 考 文 献

[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.

本文创新:

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

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

来源:微计算机信息

上一篇:基于AT91RM9200系统电源的设计与调试
下一篇:宝利通高清视频会议系统在中交集团的成功部署

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图