基于ARM9的嵌入式Web服务器的研究与应用_第1页
基于ARM9的嵌入式Web服务器的研究与应用_第2页
基于ARM9的嵌入式Web服务器的研究与应用_第3页
基于ARM9的嵌入式Web服务器的研究与应用_第4页
基于ARM9的嵌入式Web服务器的研究与应用_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录第 1 章 序言.11.1 选题背景.11.2 选题目的及意义.11.3 选题完成情况.2第 2 章 本项目用到的关键技术.32.1 嵌入式系统构建技术.32.2 ARM9 体系结构技术概述 .4第 3 章 系统总体结构和硬件设计与实现.53.1 嵌入式硬件环境的介绍.53.2 核心部件选型.53.3 系统硬件模块设计与实现.63.4 硬件开发环境简介.73.5 嵌入式系统开发环境的建立.7第 4 章 系统软件设计与实现.84.1 LINUX2.6 内核的移植.84.2 嵌入式文件系统的移植.104.3 以太网驱动程序的移植.11第 5 章 嵌入式 WEB 服务器的研究与实现.125.1

2、 嵌入式 WEB服务器的原理 .125.2 BOA服务器工作过程.145.3 CGI 工作过程 .15第 6 章 嵌入式 WEB 服务器的应用.156.1 无人值守通信机房远程监控系统的应用.156.2 无人值守通信机房远程监控系统的软件设计.166.3 用户管理.186.4 通信机房远程监测系统的实时数据模块.226.5 通信机房远程监测系统的历史数据模块.23第 7 章 实训总结.247.1 实训工作总结与展望.247.2 项目中未完成的工作.24参考文献.251第第 1 1 章章 序言序言1.11.1 选题背景选题背景近几十年来,随着嵌入式技术和网络技术,特别是以太网技术的快速发展,越来

3、越多特定环境现场都需要能够借助于嵌入式系统接入 Internet 进行远程监控。嵌入式系统接入玩 Internet 成为了当前嵌入式领域研究的热点之一,将嵌入式 Web 服务器移植到嵌入式系统后接入 Internet,该嵌入式系统相当于一个功能齐全的小型 Web 服务器,在远程即可启动浏览器通过 Internet 获取该 Web服务器发布的信息,进而实现远程实时监视、控制甚至维护。本文以 ARM9 处理器芯片 S3C2410A 和嵌入式 Linux 为平台,结合了嵌入式 Web 技术和嵌入式数据库技术,对嵌入式 Web 服务器进行研究。1.21.2 选题目的及意义选题目的及意义近几十年来,随着

4、嵌入式技术和网络技术,特别是以太网技术的快速发展,越来越多特定环境现场,比如无人值守的通信机房、大型粮库、电气火灾易发场所等等,都需要能够借助于嵌入式系统接入 Internet 进行远程监控。嵌入式系统通过 HTTP 协议将现场采集的数据以 Web 页面的形式传送到远程计算机的浏览器上显示,维护人员能够在远程实时监视、控制、调节监控现场。相对于传统的远程监控模式,基于嵌入式的远程监控系统具有各个模块集成度高、性能稳定、成本低、体积小等优点。嵌入式系统接入 Internet 成为了当前嵌入式领域研究的热点之一。将嵌入式 Web 服务器移植到嵌入式系统后接入 Internet,该嵌入式系统相当于一

5、个功能齐全的小型 Web 服务器,在远程即可启动浏览器(比如 IE)通过 Internet 获取该 Web 服务器发布的信息,进而实现远程实时监视、控制甚至维护,并且,这种基于 HTML 标准化的 web 用户界面降低了为不同操作平台而定制人机界面的开发费用、人员培训费用和系统升级维护费用。2嵌入式 Web 服务器接入 Internet 后,需要处理来自远程客户端的连接请求和传输大量的数据,一方面要求嵌入式硬件处理能力更强;另一方面随着传输数据增多,并且数据类型更加复杂,在嵌入式系统中以文件存储数据的传统存储形式远远满足不了需求,解决办法是使用嵌入式数据库来存储并且管理数据。在设计嵌入式系统时

6、使用嵌入式数据库将极大地增强嵌入式系统的整体性能,缩短嵌入式系统的开发周期,同时借助数据库的安全性检查可以提高嵌入式系统的整体安全性能。正是基于以上背景,本论文搭建了 ARM9 嵌入式 Linux 的嵌入式软硬件平台,在此软硬件平台之上实现了嵌入式 web 服务器 Boa 和嵌入式数据库SQLite,采用 C 语言和 HTML 设计了一个无人值守通信机房远程监控系统来体现嵌入 web 服务器和嵌入式数据库的应用。1.31.3 选题完成情况选题完成情况.1 嵌入式系统平台的构建嵌入式系统平台的构建嵌入式系统硬件采用 S3C241OA 为嵌入式处理器,主要的外围设备包括:64MB

7、的 SDRAM、ZMB 的 NORFlash、64MB 的 NANDFlash 以及外扩的DM9O0010/100M 以太网控制器。裁剪 Linux2.6 内核为嵌入式操作系统,移植以太网驱动程序以及根文件系统的制作。.2 嵌入式嵌入式 WebWeb 服务器的研究与实现服务器的研究与实现选择 Boa 作为嵌入式 Web 服务器,研究 Boa 服务器的源码,学习使用 CGI技术开发 Web 应用程序。 .3 嵌入式嵌入式 WebWeb 服务器在无人值守通信机房远程监控系统中的应服务器在无人值守通信机房远程监控系统中的应用。用。以一个无人值守通信机房远程监控系统为例

8、介绍了嵌入式 web 服务器的应用,详细阐述了无人值守通信机房远程监控系统各个模块的设计。3第第 2 2 章章 本项目用到的关键技术本项目用到的关键技术2.12.1 嵌入式系统构建技术嵌入式系统构建技术嵌入式系统是一类特殊的计算机系统,具有功耗低、体积小、集成度高等特点,通常由嵌入式硬件系统、嵌入式操作系统和应用软件构成。他们之间的关系如图 2-1 所示。图 2-1 嵌入式系统基本结构图在介绍了嵌入式系统的基本结构后,本章以下几小节将首先介绍嵌入式系统的硬件环境,然后详细介绍嵌入式交叉编译环境的构建,接着阐述了嵌入式系统软件环境的建立,包括 Linux2.6 内核的移植、根文件系统的制作、以太

9、网驱动程序的移植,最后对构建的嵌入式软硬件平台进行了测试。42.22.2 ARM9ARM9 体系结构技术概述体系结构技术概述对于 ARM9 系列,其基本内核是 ARM9TDMI,主要有 7 部分构成。比较最常用的是 ARM920T 内核。ARM920T 结构主要部分有:ARM9TDMI 内核CPU、MMU、Cache、协处理器接口、运行跟踪信息接口(ETM)、JTAG 调试接口、总线接口等 7 部分构成。图 2-2 ARM920T 结构框图ARM9 采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数 DSP 都采用此结构。RM9 为五级流水(取指,

10、译码,执行,缓冲/数据,回写),平均功耗为 0.7mW/MHz。时钟速度为120MHz-200MHz,每条指令平均执行 1.5 个时钟周期。ARM9 系列微处理器包含ARM920T、ARM922T 和 ARM940T 三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。5第第 3 3 章章 系统总体结构和硬件设计与实现系统总体结构和硬件设计与实现3.3.1 1 嵌入式硬件环境的介绍嵌入式硬件环境的介绍本论文的硬件平台为广州致远电子有限公司的 MagicARM2410 教学实验平台,它的中央处理器(CPU)是韩国三星公司基于 ARM920T 内核开发的s3C24

11、10A。s3C2410A 适用于 POS 机、手持设备、数字多媒体播放设备等等,具有价格低、功耗低、性能高等优点。该实验平台主要由微处理器、存储模块、控制模块、以太网接口模块、USB 接口模块、液晶显示模块、仿真调试模块组成。嵌入式硬件系统由嵌入式处理器和外围设备组成,为嵌入式系统软件运行提供了物理平台,是整个嵌入式系统的基础。嵌入式操作系统包括文件系统,操作系统内核以及驱动程序,是整个嵌入式系统的逻辑控制核心。嵌入式操作系统向上为应用程序开发提供 API 接口,向下提供与硬件设备交互的接口,同时还要管理复杂的系统资源,如内存管理,进程调度等。3.23.2 核心部件选型核心部件选型3.3.2.

12、1S3C24102.1S3C2410 处理器处理器S3C2410 处理器是 Samsung 公司基于 ARM 公司的 ARM920T 处理器核,采用0.18um 制造工艺的 32 位微控制器。该处理器拥有:独立的 16KB 指令 Cache 和16KB 数据 Cache,MMU,支持 TFT 的 LCD 控制器,NAND 闪存控制器,3 路UART,4 路 DMA,4 路带 PWM 的 Timer ,I/O 口,RTC,8 路 10 位 ADC,Touch Screen 接口,IIC-BUS 接口,IIS-BUS 接口,2 个 USB 主机,1 个 USB 设备,SD 主机和 MMC 接口,2

13、 路 SPI。S3C2410 处理器最高可运行在 203MHz。核心板的尺寸仅相当于名片的 2/3 大小,尺寸如此小巧的嵌入式核心板是国内首创。开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品。6CLE16ALE17CE9RE8WE18R/B7IO129IO230IO331IO432IO541IO642IO743IO844K9F1208DATA 0DATA 1DATA 2DATA 3DATA 4DATA 5DATA 6DATA 7CLEALEnFCEnFREnFWER/nB2.2 NANDNAND FlashFlash 存储器存储器S3C2410 内部有 NAN

14、D Flash 控制器,支持从 NADN Flash 启动。图 3-1 所示是 NAND Flash 连接图。S3C2410 采用一组内部寄存器来完成 NAND Flash 的操作。图 3-1 NAND Flash 连接图3.33.3 系统硬件模块设计与实现系统硬件模块设计与实现与嵌入式 Web 服务器应用相关的几个模块:微处理器 S3C241OA、存储模块、以太网接口模块。.1 微处理器微处理器 S3C241OAS3C241OAS3C2410A 采用了 ARM 公司设计的 ARM92OT 内核,0.18um 工艺的 CMOS 存储器单元和标准宏单元。s3C241OA 以下丰富

15、的内部设备:16KB 的指令 Cache 和16KB 的数据 cache,MMu 虚拟存储器管理,支持 NANDFlash 系统引导,系统管理器,3 通道 UART,4 通道 DMA,1/0 端口,RTc,8 通道 10 位 ADc, USB 主机接口,USB 设备接口,2 个 SPI 总线接口以及内部 PLL 时钟倍频器。.2 存储模块存储模块S3C24lOA 通过外部总线接口扩展了 2 片 SDRAM 和 1 片 NORFlash。其中,SDRAM 使用的是 H 师公司的 HY57V651620,容量为 64MB;NORFlash 采用的是 SST公司的 SST39vF16

16、01,容量为 ZMB。这两种存储器相当于通用计算机的内存条,7用来运行各种程序。NANDFlash(Samsung 公司的 K9F1208)是 S3C2410A 通过NANDFlashBUS 扩展的一片存储设备,容量为 64MB。它就相当于通用计算机的硬盘,用来存放各种数据和程序。53C2410A 既支持从 NANDFlash 启动,又支持从NORFlash 启动,可通过 OMO 引脚进行选择,当 OMO 为低电平时,系统从NANDFlash 启动;当 OMO 为高电平或悬空时,系统从 NORFlash 启动。.3 以太网接口模块以太网接口模块本实验平台使用 DAVICOM 公

17、司的 DM9000 快速以太网控制处理器,该处理器配备有标准 10M/100M 自适应,16K 大容量的 FIFO,4 路多功能 GPIO,全双工工作等功能。MagicARM2410 试验箱主板使用 16 位总线控制 DMg000 以太网控制器,数据总线 DATA1DATA15 与 DM9000 的 SD0SD15 接,地址线 SA4 一 SA4 进行了相应的连接,片选线 nGCG3 与芯片的 AEN 相连。DM9000 以太网控制器的工作基址为 0X300。3.43.4 硬件开发环境简介硬件开发环境简介硬件平台为广州致远电子有限公司的 MagicARM2410 教学实验平台,它的中央处理器(

18、CPU)是韩国三星公司基于 ARM920T 内核开发的 s3C2410A。s3C2410A适用于 POS 机、手持设备、数字多媒体播放设备等等,具有价格低、功耗低、性能高等优点。该实验平台主要由微处理器、存储模块、控制模块、以太网接口模块、USB 接口模块、液晶显示模块、仿真调试模块组成。3.53.5 嵌入式系统开发环境的建立嵌入式系统开发环境的建立由于嵌入式系统缺乏足够的系统资源而不能在本机上(目标机)进行开发,因此,嵌入式软件开发形成了自己独特的交叉开发方式。也就是说,在开发者将软件编写好以后,先在宿主机上采用适合目标机的编译器对软件进行编译,然后将编译后的可执行程序下载到目标机。如果可执

19、行程序在目标机上不能达到用户的预期目标,则要在宿主机上对目标机进行相应的交叉调试。嵌入式系统开发环境一般由如下部分构成:宿主机,目标机,工作站以及将连接网络环境。8所谓宿主机,就是进行交叉编译的主机,论文采用的基于 32 位 X86 平台的Cent0S 服务器。目标机就是交叉编译后的可执行程序实际运行的环境,也就是MagicARM2410 实验平台。根据宿主机与目标机通信的目的不同,他们之间的连接方式分为三种: 以太网连接主要用于嵌入式操作系统内核和根文件系统的下载; 并口连接主要用于 BootLoader 的移植和系统的调试; 串口连接主要用于应用软件的调试。通过交换机和网线将工作站、宿主机

20、、嵌入式系统组建成一个小型的局域网,两两之间能够相互通信,在本论文中,直接操作宿主机不太方便,效率较低,解决的办法就在工作站安装了 windowsXP 系统,通过工作站利用远程联机软件登入宿主机,这样既解决了操作不便的问题,又能够对宿主机和目标机进行操作和管理。第第 4 4 章章 系统软件设计与实现系统软件设计与实现4.14.1 Linux2.6Linux2.6 内核的移植内核的移植由于 Linux 操作系统的内核源代码是使用 C 语言编写的,这使得它具有良好的可移植性,只需要一些修改就能移植到不同的处理器平台上。同时 Linux是一款 GNU 标准的开源操作系统,用户可以免费下载,并能够依据

21、需要对其进行修改。所以 Linux 操作系统成为嵌入式系统开发首选的操作系统。Linux 内核 2.6 版本对 53C2410A 处理器的支持十分完善,在 S3C241OA 处理器上移植 Linux 只需要要较少的修改。内核移植主要包括修改内核代码和配置内核选项两部分,具体移植步骤如下:1、准备 Linux2.6.28 内核源代码。先下载源代码,并解压至/base 目录下:#tarzxvflinux-2.6.28.tar.gz C /base#cd/base/linux-2.6.282、内核依据各个分层次结构的 Makefile 进行编译,首先修改 Linux-2.6.289目录下的顶层 Ma

22、kefile 文件,目的是为了修改 Linux 内核支持的处理器体系结构和指定编译内核所需的编译器。#vi Makefile将 ARCH ?=$(SUBARCH)修改为 ARCH =arm将 CROSS_COMPILE ?= 修改为CROSSCOMPILE =/usr/loc3.4.1/bin/arm-linux-3、因为 MagieARM2410 的 BootLoader 已经对 Nandflah 进行了分区,要避免 LinuX 内核再次对 Nandnah 进行分区。#vi arch/arm/Plat-s3c24xx/common-smdk.c /找到如下数据结构Static structP

23、latform-device_initdata*smdk-devs=/&s3c_device_nand, 注释掉或者删除该语句,防止 Linux 对 nandflash行二次擦除和分区.&smdk_led4,&smdk_led5,&smdk_led6,&smdk_led7,;4、修改 BoadL0ader 中的 para.bin 文件将其中的 ttySO 改为 ttySACO,要通专门修改 param.bin 的软件来完成.5、配置内核。在配置内核前,先拷贝 S3C2410A 开发板的默认配置到内核目录下,以简化配置过程。#cp arch/ann/eon

24、figs/s3e2410_defconfig.config#make menuconfig/以下是配置内核的主要选项。GeneralsetuP-*Configurestandardkernelfeatures(forsmallsystems) -SystemTyPe-s3C2410Maehines-*SMDK2410/A9M2410Boot oPtions-将(root=/dev/hdal ro init=/bin/bash console=ttySACO)Defaultkernel10commandstring 改成(root=/dev/ram rw ramdisk=4096console=

25、tty0console=ttySACO,11520ON8)Default kernel commandstringNetwork device support-Ethenet(10or1OOMbit) -DM9000support/支持 DM9000 网卡Generic Media Independent Interface device supportFilesystems-Kernel automounter supportKemel automounter version 4 support(also supports V3)Pseudo filesystems-*Virtualmemo

26、ry file system support(former shm fs)Network FileSystems-NFSfilesystemsupport*Root filesystem on NFS保存退出,产生.config 文件。6、编译内核。#make zlmage 编译完成以后,会生成内核镜像文件/base/linux-2.6.14/arch/arm/boot/zImage,透过串口将这个文件下载到目标机上。重启目标机就会看到 Linux 内核启动画面。4.24.2 嵌入式文件系统的移植嵌入式文件系统的移植在嵌入式系统中,当嵌入式 Linux 内核运行以后,需要加载合适的文件系统,用

27、于管理、组织各种文件。常用的嵌入式系统文件包括 Cramfs 文件系统、Yaffs 文件系统和 JFFSZ 文件系统等。嵌入式 Linux 系统中的文件系统常常采用树型结构,如图 4-1 所示为本系统采用的 Cramfs 文件系统的组织结构。在 Linux 系统中,包括硬件设备在内的一切都以文件的形式存在。整个文件系统挂载在根目录(/)上,然后根据不同的分类以树形组织在一起。下面简要介绍一些重要的目录。111) 整个文件系统的挂载点。2) .bin:一般用户可执行的命令。3) /sbin 超级用户(root)可执行的命令。4) /etc:一些服务和程序的配置文件,比如 res,linuxrc。

28、5) /dev:包括系统的硬件设备文件,比如 null.console。6) /Proc:不占用硬盘空间,在系统启动时由系统维护,存放一些系统的信息,比如 cpu,内存,NandFlash 的使用信息 。4.34.3 以太网驱动程序的移植以太网驱动程序的移植前面已经制作好了内核和文件系统的镜像文件,接着将它们下载到实验平台,但发现无法获取 IP 地址,也 ping 不通宿主机。然后在/Proc 目录下也找不到网络设备,所以可以推断主机无法识别网络设备,也就是没有相应的以太网驱动程序。为了以后进行嵌入式 Web 服务器的研究和开发,移植以太网驱动程序十分重要。本系统平台外扩了一路 10/100M

29、Ps 以太网接口电路,该电路的核心芯片是DAVICOCM 公司的 DM9000 自适应网络芯片。图 4-2 为 DM9000 和 S3C2410A 处理器的电路连接示意图。下面主要介绍与以太网驱动移植的相关的端口连接。S3C2410A 的 16 根数据总线 DAIA0DATA15 与 DM9000 芯片的 SDO 一 SD15 相连;片选线与 DM9O00 的 AEN 相连,CMD 连接 S3C2410A 的地址总线 ADDR,由s3c2410A 的说明文档可查地址和数据端口地址分别为 0 x18000000 和Ox18000004;EECS 拉高:16bit 模式;EECK 拉高,INT 连

30、接到 2440EINT7:INT 脚为低时为有效中断信号,中断线为 EINT7,EEECS、EEDO、EECK 引脚悬空。12图 4-2DM9000 和说额 S3c2410A 处理器的电路连接示意图有了以上对硬件接口的分析,移植以太网驱动程序就比较简单了。以太网驱动程序的移植通常包括以下几步:网络设备的初始化,网络设备向内核注册,网络设备收发数据,网络设备的内核移植。下面详细介绍 DM9000 驱动程序的移植。1)DM9000 的初始化。DM9000 的初始化包括地址注册的物理地址,数据注册的物理地址以及 DM9000 中断注册的物理地址。在 linux 一2.6.29/arch/arm/pl

31、ats3c24xx 添加了三个结构my_dm9000_resource,my_dm9000_platdata,my_device_dm9000 用于 DM90009的初始化。2)注册 DM9000 到内核。在 arm/arm/mach-s3c24l0/devs.h 文件中添加如下一行:extern struct platform_device my_device_dm9000;在arm/arm/maeh_s3e24l0/maeh_smdk24l0.c 文件中的*smdk2410_devices_initdata 添加&s3c_device 处 dm9000, 。3)网络设备收发数据先在

32、内核自带的 DM9000 网卡驱动源码 driver/net/dm9000.c 中添加下面必要的头文件和宏定义。接着利用 for 循环设置芯片 MAC 地址,最后使能 DMg000的中断。4)设备驱动程序加载到内核这步比较容易,在内核编译配置选项中,driver-net-10/100Mnet-13DM9O00support 选项选中,然后重新编译,最后将包含 DM9000 驱动程序的内核下载到系统。第第 5 5 章章 嵌入式嵌入式 WebWeb 服务器的研究与实现服务器的研究与实现5.15.1 嵌入式嵌入式 WebWeb 服务器的服务器的原理原理以 ARM9 处理器芯片 S3C241OA 和嵌

33、入式 Linux 为平台,结合了嵌入式 Web技术和嵌入式数据库技术,对嵌入式 Web 服务器进行研究,选用 Samsung 公司的 S3C2410A 处理器和嵌入式 Linux 操作系统,搭建了嵌入式 Web 服务器所需要的软硬件平台。构建了嵌入式 Web 服务器的软件平台,包括内核、文件系统以及以太网驱动程序设计,编译后将他们下载到目标板上调试、运行。嵌人式Web 服务器采用 Browser/Server 的方式来工作, 在这种工作方式下, 客户端要有一个浏览器程序, 而服务器端则需要有一个 Web 服务器。客户端可以使用浏览器来访问 Web 服务器, 并可通过网页来进行相应的设置和操作。

34、嵌人式 Web 服务器的核心部分是通过 boa 实现的, 而应用程序接口模块则采用 CGI 来实现。对嵌入式 Web 服务器 Boa 的源码进行了深入的分析,也分析了嵌入式数据库 SQLite 的体系结构、API 接口,最后成功将嵌入式 Web 服务器技术和嵌入式数据库技术应用于无人值守通信机房远程监控系统。当 Web 浏览器发送一个 HTTP 请求给 Web 服务器,如果 Web 服务器判断这个请求为动态请求,自己不能处理,就将这个请求提交给 CGI 程序处理,CGI 程序将请求的有关数据设置成环境变量,然后在 Web 服务器与 CGI 程序之间建立标准输入输出两条通道,CGI 程序通过标准

35、输出将处理结果返回给 Web 服务器,Web 服务器再将处理结果会送到客户端并用浏览器进行显示。Boa服务器支持CGI。根据需要, 编写各种控制程序, 实现数据的动态交互。将Boa源码移植到目标板上, 首先要使用交叉编译工具将Boa源码编译成目标板上可运行的程序。具体做法为, 在源码下运行而Configure命令来得到MakeFile文件, 然后修改MakeFile中的编译工具,将其改为宿主机的交叉编译工具, 如CC =/usr/local/arm/2.95.3/bin/arm linux gcc CPP =/usr/local/arm/2.95.3/bin/arm linux gcc -E1

36、4然后在宿主机上进行编译, 得到目标板上可运行Boa。编译后的可以编译到内核, 也可直接将其下载到目标板上。要使得boa能够运转起来, 还需要对配置文件boa.conf进行相应的配置。主要的配置选项包括侦听端口Port。访问日志AccessLog;错误日志ErroeLog;存放HTML文件的根目录DocumentRoot等。配置好boa.conf后, 就可将相应的文件按照配置好的路径进行存放。这样就可正常运转起来。CGI是Web服务器与外部扩展应用程序交互的一种标准接口。在设计Web服务器时, 可以根据CGI标准来编写相应的扩展程序, 以实现客户端与服务器间的动态互。5.25.2 BoaBoa

37、 服务器工作过程服务器工作过程Boa 服务器的工作流程如图 5-1 所示,在 Boa 服务器启动以后,首先进行Web 服务器的初始化工作,包括创建环境变量、创建 TCP 套接字、绑定端口、开始侦听、进入循环结构,以及等待接受客户端浏览器的请求。当客户端请求到来时,Boa 服务器验证客户端的请求能否通过,若不能通过验证,则丢弃客户端的请求,继续侦听客户端的请求;否则接受请求。接受数据包请求以后,Web 服务器分析客户端的请求,解析请求的方式,若为静态页面请求 Web 服务器调用 initget()函数进行处理;若为 CGI 动态请求,web 服务器调用init_get()函数进行处理,将结果放回

38、给客户端的浏览器,完成处理后,关闭与客户端的 TCP 连接,返回等待客户端的请求。处理静态页面请求的 initget()函数的基本执行流程。init-get()函数首先会取消 cGI 环境变量,获取文件 req 一pathname 的信息,并且根据 req结构更新文件信息,然后将数据写入 req 一datasemem,process-get()函数完成的功能为将 request 结构中的 datae-men 字符串返回套接字并在用户浏览器上显示相应的内容。15 图 5-1Boa 服务器的工作流程图 5.35.3 CGICGI 工作过程工作过程CGI 是外部扩展应用程序与 Web 服务器交互的一

39、个标准接口,遵循 CGI 标准的外部扩展应用程序能够处理 Web 客户端与 Web 服务器之间的动态交互,这样扩展了 Web 服务器的功能,丰富了对网络的使用。CGI 的工作原理如图 5-2 所示,当 Web 浏览器发送一个 HTTP 请求给 Web 服务器,如果 Web 服务器判断这个请求为动态请求,自己不能处理,就将这个请求提交给 CGI 程序处理,CGI 程序将请求的有关数据设置成环境变量,然后在Web 服务器与 CGI 程序之间建立标准输入输出两条通道,CGI 程序通过标准输出将处理结果返回给 Web 服务器,Web 服务器再将处理结果会送到客户端并用浏览器进行显示。16图 5-2CG

40、I 的工作原理图第第 6 6 章章 嵌入式嵌入式 WebWeb 服务器的应用服务器的应用前几章搭建了嵌入式系统的软硬件平台,实现了嵌入式 Web 服务器以及嵌入式数据库系统。本章以设计一个无人值守通信机房远程监控系统为例来介绍嵌入式 Web 服务器的应用。6.16.1 无人值守通信机房远程监控系统的无人值守通信机房远程监控系统的应用应用无人值守通信机房远程监控系统的总体设计如图 6-1,本系统采用总线进行集中控制,嵌入式 Web 服务器负责上下级模块、数据处理、储存等等。机房供电监测模块负责监控电网运行情况和后备电源(UPS)的状态,通过电压互感器、电流互感器来获取交流电的各项参数。机房安全监

41、测模块负责处理机房内环境的监测和控制,通过多传感器负责收集机房的各种环境参数,包括温度、湿度、门窗开/关状况。这样能发挥各个传感器的优势,全方位的集信息,尽可能地消除信息的不确定性。维护人员可以在远端通过浏览器访问本嵌入式 Web 服务器发布的信息,进而实现对无人值守通信机房的远程监控。基于嵌入式 Web 服务器的无人值守通信机房远程监控系统运行稳定,该系统具有较好的人机交互界面,实现了对无人值守通信机房的温度、湿度、门窗开关状态、电机状态等参数的远程监控,达到了预期的设计目标。17图 6-1 无人值守远程监控系统的总体设计6.26.2 无人值守通信机房远程监控系统的软件设计无人值守通信机房远

42、程监控系统的软件设计本软件设计是基于嵌入式 Linux 操作平台,采用目前流行的 B/S (browser/server)结构,采用 C 编写 CGI 应用程序,后台为 sQLite 数据库。数据库接受客户端的服务请求,把处理结果或是中间数据返回给客户端,保存这些信息。嵌入式 Web 服务器和前端模块通信,获取机房的各种信行状态,把所有的运行状态保存在内存区域中,并把这些信息写入 sQLite 库中。按远程监控系统的功能可以将系统划为如图 6-2 所示的 5 个模块,分用户管理模块、供电检测模块、安全监测模块、历史数据模块和退出系统。用户登录模块添加查询修改删除18图 6-2 无人值守机房远程

43、监控系统的软件设计框图6.36.3 用户管理用户管理用户管理模块用于管理登入无人值守通信机房远程监控系统的各个用户及其密码,包括添加、删除、查询、修改密码等功能。当用户想要登入本远程监控系统时必须要通过密码安全验证,进而提高了整个系统的安全性能。.1 测试登录用户验证用例测试登录用户验证用例通信机房远程监控系统包含管理员和一般用户两种用户权限,整个用户登录验证的流程图如图 5.3 所示。本系统只需要一个管理员 Admin,当用户向 Boa服务器发送登录请求后,Boa 服务器调用后台的 CGI 程序,CGI 程序首先检查登录用户是否为管理员(Admin),若登录用户为 Admin

44、,则比较登录密码是否与表供电检测模块当前数据保存数据安全检测模块当前数据保存数据历史数据模块当前数据保存数据退出系统退出系统主页登录页面19Adminlnfo 中 Paasoword 栏数据相同,若相同,以管理员身份登录。若登入用户不为 Admin,则 CGI 程序会查询 Userinfo 表中 User-ld 看是否有与登录用户相同的记录,接着比较登录密码是否与相应 Password 栏数据相同,若相同,以一般用户身份登录。如果以上过程中出现用户名或者密码错误,CGI 程序会返回相应的出错信息给客户端浏览器。用户登入通信机房远程监控系统的页面如图 6-3 所示。图 6-3 用户登录验证的流程

45、图.2 测试登录用户验证过程测试登录用户验证过程图 6-4 通信机房远程监控系统登录页面.3 测试添加用户用例测试添加用户用例添加记录使用 INSERT 语句删除数据库表中相应的记录,并将返回客户端浏览器是否添加记录成功,添加用户页面如图 6-5 所示。图 6-5 添加用户页面.4 测试删除用户用例测试删除用户用例删除用户使用 DELECT 语句删除数据库表中相应的记录,并将返回客户端浏览器是否删除记录成功。删除用户页面如图 6-6 所示。图 6-6 删除用户页面.5 测试查询用户用例测试查询用户用例查询用户使用 SELC

46、ET 语句从数据相应的表中查询适当的记录,然后将该记录返回到客户端浏览器上显示。查询用户信息页面如图 6-7 所示。图 6-7 查询用户信息页面.6 测试密码修改用例测试密码修改用例当 CGI 程序接收到用户两次输入新密码以后会根据两次输入密码是否为六位以及两次输入密码是否相同这两个条件来验证密码的合法性,若满足了这两个条件则将新密码写入数据库的表中,下次登录就可以使用新密码。反之,返回客户端相应的出错提示。密码修改的具体流程如图 6-8 所示。修改密码页面如图 6-9 所示。图 6-8 密码修改流程图图 6-9 修改密码页面236.46.4 通信机房远程监测系统的实时数据

47、模块通信机房远程监测系统的实时数据模块.1 测试用例过程测试用例过程如图 6-10 所示,通过用户名和密码正确地登入系统之后,系统默认显示实时数据模块。也可以点击左边功能列表的“实时数据”进入该页面。此时显示的为 2011/10/1010:10:01 时刻所获取的数据。图 6-10 通信机房远程监控系统实时数据显示(2011/10/1010:10:0) 图 6-11 通信机房远程监控系统实时数据显示(2011/10/1010:11:20)通信机房远程监控系统实时数据模块主要由以下数据组成:观测时间、当前24电压、当前电流、UPS 状态、当前温度、当前湿度、门窗状态、电机状态。显示当前所采集的通信机房的各项数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论