深入研究嵌入式web服务器视频监控的应用
。 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:kernelrootfs(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服务器的研究和应用,其意义是重大的。它为我们管理、控制和监测各种各样设备提供了一
视频监控 应用 服务器 web 研究 嵌入式 深入 相关文章:
- Blackfin助您无线IP视频监控的应用(06-24)
- 基于WinCE的ARM视频监控系统的设计(06-05)
- 解析:视频图像智能分析处理技术(08-08)
- 基于DSP的智能视频监控终端设计与优化研究(09-28)
- 基于DSP芯片TMS320DM642的嵌入式无线视频监控系统设计(01-11)
- 双DSP的多路视频监控系统设计(02-14)