新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Cortex-M3内核处理器的嵌入式Web服务器设计

基于Cortex-M3内核处理器的嵌入式Web服务器设计

作者:王铁流 高嵩 袁海英 李宗方 秦璐璐 北京工业大学电子信息与控制工程学院 时间:2010-03-02 来源:电子产品世界 收藏

  一旦W5100的Socket端口有中断事件产生时,W5100将通过其中断引脚INT触发STM32的外部中断,使STM32进入外部中断处理函数改变WInterFlag,程序接着进入处理W5100中断事件函数,在此函数中,STM32通过访问W5100的中断寄存器(IR)和端口0中断寄存器(S0_IR)判断出W5100的端口0产生何种中断事件,若Socket接收到数据,则改变SockRecvFlag。

本文引用地址:https://www.eepw.com.cn/article/106453.htm

  程序检测到SockRecvFlag发生改变,立即进入处理接收数据函数。处理接收数据函数是整个程序的核心,它主要负责收发数据、解析HTTP协议和响应用户的不同请求。图5为该过程的程序流程图。

  数据处理程序

  HTTP协议是一种请求/响应协议。在基于HTTP的客户/数据交换时,当HTTP请求产生时,就开始一次HTTP通信。过程如下:浏览器提取出URL中的主机后,向DNS发出请求,解析主机名的IP地址;DNS解析地址并将结果返回给浏览器;浏览器向该地址请求建立TCP连接;浏览器发出请求报文;向浏览器发送响应报文,并将指定数据发送给浏览器;断开连接。

  根据HTTP协议规定,如果客户端没有发出请求,则不会自动发送页面。因此通过在网页程序中加入标记,使浏览器在无用户干预下周期性地刷新页面,从而保证用户及时地获得远程现场的信息。

  HTTP消息包括一个起始行、零个或多个消息头域、一个标示头域结束的实体行和一个可能存在的消息体。本程序主要解析消息的起始行,而忽略其它内容,这种处理思路也符合系统硬件对软件实现的复杂度要求。请求方法决定了对请求URI所指定的资源进行操作的方式,GET方法读取URL指定的资源,一般用来向服务器传输少量且透明的数据,数据总量被限制在255个字符以内,而POST方法可传输大量数据,与HTML的表单特性相配合以实现远程动态交互控制。

  当连接开始时,客户端发送GET方法请求给服务器,以访问服务器网页,为限定特定用户访问,增加数据安全性,在网页中加入基本认证机制。当客户端请求受基本认证机制保护的网页时,服务器即要求用户认证,服务器端对用户的登陆信息按Base64码解码,只有认证成功,浏览器才能获得正确的网页数据。正确的控制网页如图6所示,若用户信息有误,服务器返回以状态码401为起始行的响应消息。

  由于服务器端检测的数据处在不停的变化之中,为使网页的数据也能及时地更新,网页程序初始化时,要显示的数据都使用字符串标记暂时表示,在每次发送响应消息到端口前,再将网页中定义字符串标记用当前设备的实际值替换。

  对LED的控制,网页程序采用HTML语言的表单,HTTP协议请求方法采用POST。POST作为请求方法时,首先和Web服务器建立连接,成功后浏览器将HTML表单中的值发送给Web服务器。这种方式没有字符长度的限制,表单数据是作为附加的文档发送而不是作为URL的一部分发送。服务器程序通过判断客户的不同控制命令即时做出LED灯的开关响应。

  在每次连接成功后,服务器端程序会返回以状态码200开头的响应消息,消息的起始行为:HTTP/1.1 200 OK。当用户请求一个服务器端不存在的文件时,服务器返回以状态码404开头的响应消息。

  结语

  这种利用硬件实现TCP/IP协议的网络芯片W5100及具有Cotex-M3内核的STM32构成Web服务器的方案性价比高。通过网络,用户在浏览器端可及时收到远程现场传感器采集的数据,远程现场的开关状态指示灯可实时地响应用户的开关信号操作请求。测试表明该系统传输大块数据文件的速率可达到100kbit/s。为提高网络资源的安全性,可采用AES(先进加密标准)等编码机制来加密必须保护的私有数据。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭