嵌入式Web Server中EGI技术的应用
发布时间:2008/5/27 0:00:00 访问次数:482
摘要 嵌入式web server大多应用在测试控制领域,因此,server与外界的交互通信必不可少,传统的webserver是在客户端请求时发送相应静态html页面,只是起到一个文件服务器的功能。本文基于uip协议栈的移植,编程实现http协议,详细讨论如何使嵌入式web scrver动态生成网页。因为传统pc机上的网络技术(cgi)并非特别适合嵌入式weh server,因此提出了egi(嵌入式网关接口)技术来增强嵌入式web的动态功能。
关键词 uip协议栈嵌入式wcb server 公共网关接口 嵌入式网关接口
1 uip协议栈的移植
协议栈采用瑞典计算机科学研究所adam dunkels开发的uip0.9。其功能特性总结如下:完整的说明文档和公开的源代码(全部用c语言编写,并附有详细注释);极少的代码占用量和ram资源要求,尤其适用于8/16位单片机;高度可配置性,以适应不同资源条件和应用场合;支持arp、ip、icmp、tcp、udp(可选)等必要的功能特性;支持多个主动连接和被动连接并发,支持连接的动态分配和释放;简易的应用层接口和设备驱动层接口;完善的示例程序和应用协议实现范例。
要想使uip协议栈顺利运行,需要为其编写驱动程序,包括cs8900a的初始化、发送函数以及接收函数。接收数据放在uip_buf里,供uip_input()函数处理。发送数据长度为uip_len。首先发送uip-bur中前(40+uip_llh_len)个数据,接着发送uip-appdata指针所指向的存储区域的数据。这是因为uip-buf中前(40+uip_llh_len)个数据是物理层添加的头,即日的物理地址与本地物理地址,而后部分数据是应用层处理后返同的数据。
另一个需要驱动程序支持的函数是uip_periodic(conn)。这个函数用于uip内核对各连接的定时轮询,因此需要一个硬件支持的定时程序周期性地用它轮询各连接。一般用于检查主机是否有数据要发送,若有,则构造ip包。
需要注意的问题是:一般情况下,c语言的结构体struct是4字节对齐的,但是在处理数据包时,uip是根据结构体中不同数据的长度来读取相应数据的,所以一定要在定义struct时使用_(attrlbute)_packed关键字,让编译器放弃struct的字节对齐。
2 嵌入式web servor的工作过程
2.1 静态web server
web servet是基于http协泌的。在实验箱上搭建的嵌入式web seiver一直处于监听状态,即一直判断网卡的接收数据位是否置位。若是,则调用uip_input()函数处理uip-buf[]里的数据。
当在pc端浏览器的地址栏里输入arm的ip地址并按下回车键时,pc端首先发一个arp查询包。接收到arp应答后,pc端与arm建立连接。经过3次握手后,tcp1连接已经建立起来了,客户机现在向端口 80(http端口)发送一个请求。具体的数据包如图1所示。
web服务器会处理此请求,web页面将在接下来的数据包中返同。http的get请求并没有指定具体的html页面,web服务器返回默认页面,即index.html。具体的数据包如图2所示。
服务器处理web页面请求:服务器基于ip地址和客户机请求的端口号来响应web业务。该响应包括建立web页面需要的信息,客户机的web浏览器(如ie)得到这些消息并显示在屏幕上。如果需要从web服务器得到更多信息(如图片、按钮、动画等),则客户端会继续发送请求,直到完整显示整个web页面。
2.2 cgi
如果仅仅传送静态的html页面,那么上述的技术已经足够。然而,在构造嵌入式web server时,更需要一些动态数据,如温度、电压等动态物理量。这时就需要引入通用网关接口cgi(common gateway interface)。cgi是http服务器与其他机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。绝大多数的cgi程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。cgi程序使网页具有交互功能。
cgl处理步骤:
◇通过internet把用户请求送到服务器;
◇服务器接收用户请求并交给cgi程序处理:
◇cgi程序把处理结果传送给服务器;
◇服务器把结果送网到用户。
2.3 egl
cgi适用于pc机上,然而在嵌入式系统中并不是很好用,因此程序员被迫要用print声明创建整个网页,而不是通过更新已存在页的变量来整合出想要的数据。因此人们提出了一种新的技术——egi(embeded(gateway in-terface)。下面结合uip协议栈在嵌入式系统中的移植来具体探索egi技术在嵌入式web server的应用。
如上所述,当客户端浏览器的地址栏输入web server地址后,客户端与web server建立了连接,并在这个连接之上传输数据。
在server端,系统通过a/d转换采集模拟量,得到的结果存放在2个全局变量adl和ad2里。在pc端,浏览器发出的请求包已经改变为
摘要 嵌入式web server大多应用在测试控制领域,因此,server与外界的交互通信必不可少,传统的webserver是在客户端请求时发送相应静态html页面,只是起到一个文件服务器的功能。本文基于uip协议栈的移植,编程实现http协议,详细讨论如何使嵌入式web scrver动态生成网页。因为传统pc机上的网络技术(cgi)并非特别适合嵌入式weh server,因此提出了egi(嵌入式网关接口)技术来增强嵌入式web的动态功能。
关键词 uip协议栈嵌入式wcb server 公共网关接口 嵌入式网关接口
1 uip协议栈的移植
协议栈采用瑞典计算机科学研究所adam dunkels开发的uip0.9。其功能特性总结如下:完整的说明文档和公开的源代码(全部用c语言编写,并附有详细注释);极少的代码占用量和ram资源要求,尤其适用于8/16位单片机;高度可配置性,以适应不同资源条件和应用场合;支持arp、ip、icmp、tcp、udp(可选)等必要的功能特性;支持多个主动连接和被动连接并发,支持连接的动态分配和释放;简易的应用层接口和设备驱动层接口;完善的示例程序和应用协议实现范例。
要想使uip协议栈顺利运行,需要为其编写驱动程序,包括cs8900a的初始化、发送函数以及接收函数。接收数据放在uip_buf里,供uip_input()函数处理。发送数据长度为uip_len。首先发送uip-bur中前(40+uip_llh_len)个数据,接着发送uip-appdata指针所指向的存储区域的数据。这是因为uip-buf中前(40+uip_llh_len)个数据是物理层添加的头,即日的物理地址与本地物理地址,而后部分数据是应用层处理后返同的数据。
另一个需要驱动程序支持的函数是uip_periodic(conn)。这个函数用于uip内核对各连接的定时轮询,因此需要一个硬件支持的定时程序周期性地用它轮询各连接。一般用于检查主机是否有数据要发送,若有,则构造ip包。
需要注意的问题是:一般情况下,c语言的结构体struct是4字节对齐的,但是在处理数据包时,uip是根据结构体中不同数据的长度来读取相应数据的,所以一定要在定义struct时使用_(attrlbute)_packed关键字,让编译器放弃struct的字节对齐。
2 嵌入式web servor的工作过程
2.1 静态web server
web servet是基于http协泌的。在实验箱上搭建的嵌入式web seiver一直处于监听状态,即一直判断网卡的接收数据位是否置位。若是,则调用uip_input()函数处理uip-buf[]里的数据。
当在pc端浏览器的地址栏里输入arm的ip地址并按下回车键时,pc端首先发一个arp查询包。接收到arp应答后,pc端与arm建立连接。经过3次握手后,tcp1连接已经建立起来了,客户机现在向端口 80(http端口)发送一个请求。具体的数据包如图1所示。
web服务器会处理此请求,web页面将在接下来的数据包中返同。http的get请求并没有指定具体的html页面,web服务器返回默认页面,即index.html。具体的数据包如图2所示。
服务器处理web页面请求:服务器基于ip地址和客户机请求的端口号来响应web业务。该响应包括建立web页面需要的信息,客户机的web浏览器(如ie)得到这些消息并显示在屏幕上。如果需要从web服务器得到更多信息(如图片、按钮、动画等),则客户端会继续发送请求,直到完整显示整个web页面。
2.2 cgi
如果仅仅传送静态的html页面,那么上述的技术已经足够。然而,在构造嵌入式web server时,更需要一些动态数据,如温度、电压等动态物理量。这时就需要引入通用网关接口cgi(common gateway interface)。cgi是http服务器与其他机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。绝大多数的cgi程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。cgi程序使网页具有交互功能。
cgl处理步骤:
◇通过internet把用户请求送到服务器;
◇服务器接收用户请求并交给cgi程序处理:
◇cgi程序把处理结果传送给服务器;
◇服务器把结果送网到用户。
2.3 egl
cgi适用于pc机上,然而在嵌入式系统中并不是很好用,因此程序员被迫要用print声明创建整个网页,而不是通过更新已存在页的变量来整合出想要的数据。因此人们提出了一种新的技术——egi(embeded(gateway in-terface)。下面结合uip协议栈在嵌入式系统中的移植来具体探索egi技术在嵌入式web server的应用。
如上所述,当客户端浏览器的地址栏输入web server地址后,客户端与web server建立了连接,并在这个连接之上传输数据。
在server端,系统通过a/d转换采集模拟量,得到的结果存放在2个全局变量adl和ad2里。在pc端,浏览器发出的请求包已经改变为