通用嵌入式Web服务器模块的设计与实现
时间:11-24
来源:互联网
点击:
4软件系统设计
该系统的软件主要由以下几个部分组成:嵌入式操作系统、嵌入式TCP/IP协议栈、嵌入式Web服务器。嵌入式操作系统是整个系统的基础,对整个系统软硬件资源进行统一协调、指挥和控制。嵌入式TCP/IP协议栈是网络通讯的基础,负责收发网络上的数据包,对于从网络上接收到的数据包,协议栈对其解析,分离出有效载荷交由应用层处理;对应用层向网络上发送的数据包,协议栈按照相关协议的要求加上相应的协议头,然后发送到网络上。嵌入式Web服务器是本系统的核心,实现了HTTP协议中的基本功能,能够与通用的Web浏览器通信,并且提供开放的应用程序编程接口API,方便的系统软件资源的重用。
4. 1 嵌入式操作系统
为了满足多任务和实时性的要求,本系统移植了嵌入式多任务实时操作系统μC/OS-II,并针对系统的具体情况和相应软硬件资源的情况,做了适当的裁剪和修改。μC/OS-II是由Jean J. Labrosse在1999年推出的,在2000年得到了美国联邦航空管理局对于商用飞机的、符合RTCA DO-178B标准的认证,从而证明μC/OS-II具有足够的稳定性和安全性。μC/OS-II是开放源代码的,本系统在设计时使用的是μC/OS-IIV2. 52版本,为了将其移植到ARM7TDMI平台上,主要在以下方面作了修改:进出临界段的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()、堆栈增长方式、任务切换等。
4. 2 嵌入式TCP/IP协议栈
为了搭建一个Web服务器平台,网络协议栈是必不可少的。TCP/IP协议是目前广泛应用的网络协议栈,并且成了事实上的国际标准。本系统设计并实现了针对嵌入式系统的简易TCP/IP协议栈,该协议栈利用μC/OS-II实时操作系统的信号机制来实现多任务和可重入的特性,并且完全使用ANSIC进行编写,在设计实现时充分考虑了重用性和可移植性,可以像μC/OS-II那样支持多种CPU。
4. 3 嵌入式W eb服务器
在整个软件体系中,嵌入式Web服务器处于最上层,在它之下的是上述的嵌入式操作系统和嵌入式TCP/IP协议栈。嵌入式Web服务器除了实现静态文档以外,还利用嵌入式服务器端包含(ESSI)技术实现了动态文档,从而支持实时显示系统的工作状态;此外,通过嵌入式通用网关接口(ECGI)技术实现了浏览器端数据向服务器的传递,从而为对系统的控制提供了数据通道。
4. 3. 1 嵌入式Web服务器层次模型
如图4所示,嵌入式Web服务器包含四个层次,分别为套接字层、协议解析层、功能模块层和用户定义层。套接字层负责本系统与网络上的数据收发;协议解析层负责解析HTTP协议,从中获取有效数据或按照HTTP协议要求,生成HTTP协议报文;功能模块层有三个部分,分别是嵌入式文件系统(EFS)、嵌入式服务器端包含(ESSI)、嵌入式通用网关接口(ECGI);用户定义层的三个部分由用户(开发人员)自定义,从而在不改变其他模块的情况下,增加、减少或修改系统的功能,使得系统具有二次开发功能。

4. 3. 2 嵌入式文件系统
为了方便Web服务器的实现,设计并实现了一个嵌入式文件系统[10-12]用来存储网页。此文件系统结构简洁、效率高,所有文件被集合成一个顺序结构,文件系统中每个文件包含一下几个域:HEAD,文件报头,两个字节,标记一个文件的开始(0xFA, 0xF3);NAME,文件名,长度不定,以NULL结尾; SIZE,文件长度,四个字节,指示文件长度(以字节为单位);FILE,文件内容,长度由SIZE指定。
为了将多个文件(包括网页文件、图片文件等)转化为嵌入式文件系统所需要的可编译格式,在PC上开发了一个工具软件ConvertFile,其功能是把一个指定目录下的所有文件转换成一个filedata. c文件,从而加快了后续程序的开发。
4. 3. 3 用户定义层
为了方便更改系统功能,提供二次开发能力,系统引入了用户定义层。该层为用户开放了系统的编程接口,主要有三个方面:
(1)文件系统构造。当用户需要更改Web服务器的网页时,只需在PC上用任何一种网页设计工具设计好网页,然后用ConverFile工具转化称filedata. c,即完成了文件系统的设计。
(2)ESSI变量定义。如需在浏览器上显示设备的工作状态等信息,可为每个状态定义一个变量,并绑定一个能够返回该状态值的函数即可。
(3)ECGI句柄定义。为了在服务器端获得用户的命令信息,需要为每一个命令定义一个虚拟网址(此网址并不对应一个网页文件),并绑定该网址到一个服务器端的函数,该函数获得浏览器端发送过来的参数,执行相应的命令。


5 实验结果分析
为了验证方案的可行性和实用性,在上述的软硬件平台的基础上,搭建了一个测试环境:在ARM处理器上外接八个LED指示灯,通过嵌入式Web服务器显示并控制每一个LED指示灯的亮和灭。系统测试的网络环境如图5所示,该网络由两个网段组成,用一台路由器连接,网段一的地址为172. 18. 136. 0/24,段内连接终端1和嵌入式设备,网段二的地址为172.18. 135. 0/24,段内连接终端2和终端3,具体的地址分配如图5所示。嵌入式Web服务器运行在IP地址为172. 18. 136. 8的嵌入式设备上,测试结果如图6。结果表明,无论是在同一网段内的终端1上访问嵌入式Web服务器,还是在不同网段的终端2和终端3上访问嵌入式We服务器,系统都可以正常、稳定地运行,并实现对嵌入式设备的监控功能。
该系统的软件主要由以下几个部分组成:嵌入式操作系统、嵌入式TCP/IP协议栈、嵌入式Web服务器。嵌入式操作系统是整个系统的基础,对整个系统软硬件资源进行统一协调、指挥和控制。嵌入式TCP/IP协议栈是网络通讯的基础,负责收发网络上的数据包,对于从网络上接收到的数据包,协议栈对其解析,分离出有效载荷交由应用层处理;对应用层向网络上发送的数据包,协议栈按照相关协议的要求加上相应的协议头,然后发送到网络上。嵌入式Web服务器是本系统的核心,实现了HTTP协议中的基本功能,能够与通用的Web浏览器通信,并且提供开放的应用程序编程接口API,方便的系统软件资源的重用。
4. 1 嵌入式操作系统
为了满足多任务和实时性的要求,本系统移植了嵌入式多任务实时操作系统μC/OS-II,并针对系统的具体情况和相应软硬件资源的情况,做了适当的裁剪和修改。μC/OS-II是由Jean J. Labrosse在1999年推出的,在2000年得到了美国联邦航空管理局对于商用飞机的、符合RTCA DO-178B标准的认证,从而证明μC/OS-II具有足够的稳定性和安全性。μC/OS-II是开放源代码的,本系统在设计时使用的是μC/OS-IIV2. 52版本,为了将其移植到ARM7TDMI平台上,主要在以下方面作了修改:进出临界段的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()、堆栈增长方式、任务切换等。
4. 2 嵌入式TCP/IP协议栈
为了搭建一个Web服务器平台,网络协议栈是必不可少的。TCP/IP协议是目前广泛应用的网络协议栈,并且成了事实上的国际标准。本系统设计并实现了针对嵌入式系统的简易TCP/IP协议栈,该协议栈利用μC/OS-II实时操作系统的信号机制来实现多任务和可重入的特性,并且完全使用ANSIC进行编写,在设计实现时充分考虑了重用性和可移植性,可以像μC/OS-II那样支持多种CPU。
4. 3 嵌入式W eb服务器
在整个软件体系中,嵌入式Web服务器处于最上层,在它之下的是上述的嵌入式操作系统和嵌入式TCP/IP协议栈。嵌入式Web服务器除了实现静态文档以外,还利用嵌入式服务器端包含(ESSI)技术实现了动态文档,从而支持实时显示系统的工作状态;此外,通过嵌入式通用网关接口(ECGI)技术实现了浏览器端数据向服务器的传递,从而为对系统的控制提供了数据通道。
4. 3. 1 嵌入式Web服务器层次模型
如图4所示,嵌入式Web服务器包含四个层次,分别为套接字层、协议解析层、功能模块层和用户定义层。套接字层负责本系统与网络上的数据收发;协议解析层负责解析HTTP协议,从中获取有效数据或按照HTTP协议要求,生成HTTP协议报文;功能模块层有三个部分,分别是嵌入式文件系统(EFS)、嵌入式服务器端包含(ESSI)、嵌入式通用网关接口(ECGI);用户定义层的三个部分由用户(开发人员)自定义,从而在不改变其他模块的情况下,增加、减少或修改系统的功能,使得系统具有二次开发功能。

4. 3. 2 嵌入式文件系统
为了方便Web服务器的实现,设计并实现了一个嵌入式文件系统[10-12]用来存储网页。此文件系统结构简洁、效率高,所有文件被集合成一个顺序结构,文件系统中每个文件包含一下几个域:HEAD,文件报头,两个字节,标记一个文件的开始(0xFA, 0xF3);NAME,文件名,长度不定,以NULL结尾; SIZE,文件长度,四个字节,指示文件长度(以字节为单位);FILE,文件内容,长度由SIZE指定。
为了将多个文件(包括网页文件、图片文件等)转化为嵌入式文件系统所需要的可编译格式,在PC上开发了一个工具软件ConvertFile,其功能是把一个指定目录下的所有文件转换成一个filedata. c文件,从而加快了后续程序的开发。
4. 3. 3 用户定义层
为了方便更改系统功能,提供二次开发能力,系统引入了用户定义层。该层为用户开放了系统的编程接口,主要有三个方面:
(1)文件系统构造。当用户需要更改Web服务器的网页时,只需在PC上用任何一种网页设计工具设计好网页,然后用ConverFile工具转化称filedata. c,即完成了文件系统的设计。
(2)ESSI变量定义。如需在浏览器上显示设备的工作状态等信息,可为每个状态定义一个变量,并绑定一个能够返回该状态值的函数即可。
(3)ECGI句柄定义。为了在服务器端获得用户的命令信息,需要为每一个命令定义一个虚拟网址(此网址并不对应一个网页文件),并绑定该网址到一个服务器端的函数,该函数获得浏览器端发送过来的参数,执行相应的命令。


5 实验结果分析
为了验证方案的可行性和实用性,在上述的软硬件平台的基础上,搭建了一个测试环境:在ARM处理器上外接八个LED指示灯,通过嵌入式Web服务器显示并控制每一个LED指示灯的亮和灭。系统测试的网络环境如图5所示,该网络由两个网段组成,用一台路由器连接,网段一的地址为172. 18. 136. 0/24,段内连接终端1和嵌入式设备,网段二的地址为172.18. 135. 0/24,段内连接终端2和终端3,具体的地址分配如图5所示。嵌入式Web服务器运行在IP地址为172. 18. 136. 8的嵌入式设备上,测试结果如图6。结果表明,无论是在同一网段内的终端1上访问嵌入式Web服务器,还是在不同网段的终端2和终端3上访问嵌入式We服务器,系统都可以正常、稳定地运行,并实现对嵌入式设备的监控功能。
嵌入式 电子 汽车电子 ARM 看门狗 总线 收发器 电路 LED 相关文章:
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)
