嵌入式Web Server中EGI技术的应用

2012-04-19来源: 单片机与嵌入式系统应用 关键字:Web  Server  EGI技术  协议栈
  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页面。[page]

  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端,浏览器发出的请求包已经改变为图3所示的情况。

浏览器发出的请求包

   比较图1和图3可以很清楚地看到,划线部分是两种请求的不同之处。服务器会判断是否为EGI请求。如果是,服务器就调

用EGI程序。下面是EGI的执行步骤:

  ①判断客户端申请的页面,并发出HTML页面头;服务器的文件组织是一个队列的结构形式。以笔者的课题为例,文件服务器包括:index. htm、about.htm、contro1.html等静态页面,也包括file_headr_html.htm、file_cgi、 file_foot_html.plain等动态页面。找出/cgi/后,空格(0x20)前的字符串,也就是“files”,然后用这个字符串在队列中的文件名中进行查找。如果匹配,就对该文件进行字符处理,即对file_cgi进行处理。预先规定cgi文件里包括3部分:I/文件头/;c(a.b, c);I/文件尾/。I包含文件头或文件尾,c是EGI处理,有a、b、c三种EGI处理方法。服务器第1步就是发送I/文件头/中的文件头。即file -headr_html.htm。

  ②处理完cgi文件里第1部分后,进入第2部分,即c(a.b,c)。这里可以进行A/D转换,并将结果发送出去。

  ③处理cgi文件里第3部分,发送文件尾,即file_foot_html.plain。

  EGI技术的出现使我们可以根据申请,即时构造页面。这在数据采集、实时监控领域有着广泛的应用。下面是本课题中应用EGI技术,在浏览器里以图表形式实时显示采集到的模拟量。如图4所示,用两个类似温度计的图形来显示服务器端采集到的数据。客户端每隔一段时间就自动刷新显示,发送EGI请求,服务器端把最新的数据所构造的网页发送过来。

A/D显示仪

  3 结论

  目前,嵌入式Web Server应用在多种场合,EGI技术的引入使嵌入式Web具有动态交互功能,如使得远程监控、测量成为现实。

关键字:Web  Server  EGI技术  协议栈 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/2012/0419/article_8561.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:Giotto软件在实时嵌入式控制中的应用
下一篇:嵌入式系统中串口通信帧的同步方法

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Akamai在Web级关键业务应用程序用例中再获高分
Akamai在API安全性、Web级关键业务应用程序用例中获得最高分;此外还被“魔力象限伴读报告”认定为领导者 负责提供安全数字化体验的智能边缘平台阿卡迈技术公司(Akamai Technologies, Inc.,以下简称:Akamai)近日宣布,其连续第二年在Gartner“2019年云Web应用程序防火墙服务的关键能力”(2019 Critical Capabilities for Cloud Web Application Firewalls Services)报告中的“API安全性”和“Web级关键业务应用程序”两个用例中,从12家提供商中脱颖而出并获得最高分,另外在关于“面向公众的Web应用程序用例”提供商
发表于 2019-11-15
Akamai被评为“2019年Web应用程序防火墙魔力象限”的领导者
负责提供安全数字化体验的智能边缘平台阿卡迈技术公司(Akamai Technologies, Inc.,以下简称:Akamai)近日宣布,Gartner确认其位于“2019年Web应用程序防火墙魔力象限”中的“领导者”象限,这是Akamai连续第三年进入“领导者”象限。Gartner分析师基于厂商的执行能力和愿景的完整度对多家厂商进行了评估。 如今,Web应用程序和API特别容易受到攻击。随着支持移动互联并基于微服务构建的Web应用程序被越来越多地部署在混合云和多云环境中,其中许多程序通过API暴露在外,导致它们发展成为一个新兴的主要攻击向量,许多企业的受攻击面因此扩大。当今,数字化企业面临的挑战是保护业务关键型应用程序
发表于 2019-10-09
如何使用WEBENCH®为超低功耗应用设计近100%的占空比
许多电池供电的应用需要降压转换器才能在100%占空比条件下工作,其中VIN接近VOUT,以便在电池电压达到最低值时延长电池续航时间。 例如,假设有两节锂-二氧化锰(Li-MnO2)电池为智能电表供电。Li-MnO2电池是一次性非充电电池,由于使用寿命较长(长达20年),再加上比锂亚硫酰氯电池更具成本效益,其在智能电表或水表中的应用日益广泛。 图1所示为两个串联(2s1p)的Li-MnO2电池的系统配置,然后逐步降压为微控制器供电。    图1:智能电表电源架构 超低静态电流(IQ)DC/DC转换器可帮助您设计电池寿命长达20年的应用。智能电表应用的负载曲线并非连续
发表于 2019-09-17
如何使用WEBENCH®为超低功耗应用设计近100%的占空比
STM32移植lwip之建立web服务器
本篇目标:在之前能ping通pc机的工程基础上搭建web服务器,借鉴官方web服务器的程序与网页,能够用pc机浏览器访问web服务器,并返回设置的网页材料准备:基础工程:修改后能ping通pc机的工程(STM32官方移植lwip修改代码)搭建工程:最终搭建好的web服务器工程(STM32搭建web服务器工程)调试工具:用来调试tcp连接下的数据接收(网络调试助手)测试浏览器:这里使用的是Chrome谷歌浏览器ps:通过修改官方搭建web服务器的代码,来了解搭建的过程,其中暂时去掉了ssi和cgi的程序,仅仅实现网页数据的返回和网页的跳转,并将官方的代码简化到相对最简,以便以后的学习之用浏览器请求指令探索要搭建服务器,首先肯定要先了
发表于 2019-07-23
STM32移植lwip之建立web服务器
Qt携手LG,webOS有望成为未来嵌入式智能设备首选平台
引言   在2018年被LG宣布再次转向开源后,webOS智能操作系统焕发新生,引起业界的关注。近日,webOS又迎来一里程碑式的发展机遇。Qt公司宣布选择webOS作为Qt参考操作系统(Reference Operating System),为LG提供最完善的开发环境,为汽车、机器人和智能家居领域的下一代嵌入式设备提供创新的用户体验。6月26日,芬兰埃斯波,Qt公司宣布进一步深化与LG电子的长期合作伙伴关系,以期开源的webOS操作系统成为嵌入式智能设备的首选平台。通过广泛的业务和技术合作,Qt和LG将为客户在汽车、机器人和智能家居领域智能设备里提供功能最完善的操作系统。 LG电子总裁兼首席技术官
发表于 2019-07-01
Qt携手LG,webOS有望成为未来嵌入式智能设备首选平台
WEBENCH® Power Designer 加速产品上市
假如你是一名工程师,正加紧为工厂的自动化机器人设计一款电源;亦或是你正在为汽车制动系统、或遥控玩具飞机或智能手机设计电源。 在此过程中,你需要做很多决定。你需要一个用于DC/DC转换的开关稳压器,但有超过1,000种产品可供选择。根据选择的集成电路和周围元件,你需要在效率、占用空间和总成本之间进行权衡。在设计方面也有严格的性能和尺寸要求。你的团队中可能没有电源设计专家或布局专家,这让你感到压力重重。  但是不要担心,这里就有你需要的解决方案。WEBENCH® Power Designer是业内应用最普遍的在线电源设计工具,经过改良设计后具有更强大的功能,而且使用非常简便。 Vinay在TI负责
发表于 2019-01-02
WEBENCH® Power Designer 加速产品上市
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved