嵌入式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技术  协议栈 引用地址:嵌入式Web Server中EGI技术的应用

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

推荐阅读最新更新时间:2024-03-16 12:58

WebSocket技术在实时WEB通讯中的应用研究
1.前言 作为下一代的Web标准,HTML5拥有许多引人注目的新特性,如Canvas、本地存储、多媒体编程接口、WebSocket等,有两大特点:首先,强化Web网页的表现性能。其次,追加本地数据库等Web应用的功能。包括HTML、CSS和JavaScript在内的一套技术组合,减少浏览器对于需要插件的丰富性网络应用服务(plug-inbasedrich internet application,RIA),如Adobe Flash、Microsoft Silverlight与OracleJavaFX的需求,并且提供更多能有效增强网络应用的标准集。而有“Web的TCP”支撑的WebSocket在打破了现有的WEB网络通讯编程模式
[电源管理]
WebSocket<font color='red'>技术</font>在实时<font color='red'>WEB</font>通讯中的应用研究
基于Modbus TCP和WEB的实时监控系统设计
引言 随着自动化行业和控制技术的不断发展和进步,现场设备之间的通信不再仅仅局限于设备与控制器之间,人机之间的交互也越来越普遍。现场总线作为信息传输的主干道,已经不再局限于现场的短距离通信,其应用规模日益扩大、复杂化,人们对现场设备的监控也提出了越来越高的要求。封闭的总线环境已经不能满足现代自动化控制的要求,为了降低设备的维护成本,提高企业和公司的生产效率,需要对现场设备的运行进行实时的监测和控制。 近年来,大量先进的远程监控技术开始应用于现场总线和远程客户端的交换,但Modbus协议目前还仅限于现场总线上,只有基于TCP/IP的协议才能通过以太网实现超远距离的传输,为此 Modbus TCP/IP应运而生。笔者通过对Modbu
[单片机]
基于Modbus TCP和<font color='red'>WEB</font>的实时监控系统设计
基于BlueZ协议栈的嵌入式系统无线通信实现
  1、引言   随着科学技术发展和社会进步,嵌入式系统越来越多的应用到我们的实际生活中,极大的改变着我们的生活。开发低成本、高性能、高可靠性的嵌入式产品正在成为研究的热点。尤其是随着信息化网络化的发展,越来越需要与外部世界进行信息交换,当前主流的数据交换方式都是有线的,但有线通信存在着诸多不足,而无线通信以其无法比拟的灵活性,可移动性和极强的可扩容性正得到越来越广泛的应用。蓝牙技术作为全球统一的无线通信标准,其目的在于建立通用的低功耗、低成本无线电空中接口及其控制软件的公开标准,使通信和计算机进一步结合,使不同厂家生产的便携式设备在没有电线或电缆互相连接的情况下,能在近距离范围内具有互用、互操作的性能。而蓝牙技术在多种智能设备
[单片机]
基于BlueZ<font color='red'>协议栈</font>的嵌入式系统无线通信实现
基于ARM9的Web服务器Boa的软/硬件设计
1.ARM简介 广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。目前非常流行的ARM内核有ARM7TDM1、S t r o n g A R M 、A R M 7 2 0 T 、A R M 9 T D M 1 、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。 ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数
[电源管理]
基于ARM9的<font color='red'>Web</font>服务器Boa的软/硬件设计
微软发布支持机器人应用的Windows Server IoT 2019
微软正在更新Windows Server操作系统用于小型低功耗的物联网设备。 微软Windows Server IoT 2019是微软数据中心服务器操作系统Windows Server 2019的一个版本。微软表示,物联网版的Windows Server适用于那些需要为小型连接设备配备轻量型操作系统的开发人员。 Windows Server IoT 2019专门面向原始设备制造商和其他为医疗、制造和零售等行业生产产品的企业。Windows Server IoT 2019提供五年主流支持,支付额外费用可获得延长五年支持。 微软称,Windows Server IoT 2019非常适合那些希望构建连接到数十个传感器的网关的公司,这些
[机器人]
如何用stm32使用LWIP网络协议栈实现DHCP客户端
LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我下载的是1.4.1的源码,下载后解压,文件结构如图 将这四个目录中的文件全部拷贝到工程中,A PI 是一些socket通讯的接口,需要在多任务的环境下实现,core里面存放的内核源码,我们主要使用IPV4,include目录下是需要包含的目录,lwip只要求我们包含include目录,里面的内层目录会自动找到,最后建立的工程目录如下 好了,此时源码已经做好,还有需要做的,在include目录下新建一个文件夹,必须
[单片机]
如何用stm32使用LWIP网络<font color='red'>协议栈</font>实现DHCP客户端
破坏世界环境 极具危险的十大技术
  新技术能给世界带来好处,可以解决从疾病到环境方面的各类问题。同时,新技术也有危险,它可能会被犯罪分子、恐怖分子利用,侵犯个人隐私,甚至制造新的病毒,危害环境。   纳米技术。纳米技术可以说是最重要也是最具突破性的技术,它能提供从治疗疾病到保护地球环境各方面的解决方案。同是,纳米技术也可被用做产生新疾病,破坏环境。   FRID。FRID可以帮助企业管理供应链,它也可能产生极大的危险,甚至有一些危险组织认为FRID技术是是把攻击的利剑。   人工智能技术。从圣经到天网,再到矩阵,好莱坞通过这种人工智能向人们展示人类的智慧。当人工智能技术为人类服务时,它会提供最好而且最安全的服务。同时,它也可能给人类带来灾难。   移动支
[焦点新闻]
分析TCP/IP协议栈代码之UDP(STM32平台)
1. UDP介绍 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。 UDP数据报封装成一份 IP数据报的格式如图11 - 1所示。 RFC 768 是UDP的正式规范。 UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议如TCP。在讨论完TCP后将再回到这个话题,看看什么样的应用程序可以使用UDP。 2. UDP首部 UDP首部的各字段如图1
[单片机]
分析TCP/IP<font color='red'>协议栈</font>代码之UDP(STM32平台)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved