首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种嵌入式Web服务器的设计方案(2)

一种嵌入式Web服务器的设计方案(2)

(2)系统的硬件设计方案
  LPC2132微控制器是所设计的嵌入式Web服务器的核心,一方面LPC2132微控制器内部要实现TCP/IP协议栈,并驱动网络接口控制器ENC28J60,经耦合隔离变压器H1102和以太网以实现Internet接入;另一方面,LPC2132微控制器又是相应控制系统的控制单元。
  由于以太网的广泛使用,本文选择了最为常用的Internet接入方式,即通过以太网接入Internet.由美国Microchip公司生产的以太网控制芯片ENC28J60是本设计所选择的网络接口控制器,它集成了介质访问控制子层和物理层的功能,主要完成网络接口层中数据帧的发送和接收。
  H1102是一款耦合隔离变压器,用来对网络上的脉冲进行转换和滤波。H1102联接RJ45接头,可以直接接入以太网。
  串行电平转换模块选用了Maxim公司出品的MAXSP3232E芯片。该芯片内部含有倍增电路和转换电路,只需+5V电源供电即可实现TTL电平到RS232C电平的转换。RS232串口一方面是作为开发调试用的,一方面可以作为相应的通信应用。
  I/O口扩展包括系统的LED显示电路、JTAG调试电路以及其他测试电路等。
  (3)系统的软件设计方案
  Web服务器是在嵌入式TCP/IP协议栈的基础上实现的一种应用程序。从系统软件工作过程来看,可将系统分三部分:第一部分,以太网控制器驱动程序的实现;第二部分:嵌入式TCP/IP协议的实现,这部分内容在第一部分的基础上,结合系统具体环境,对标准TCP/IP协议进行简化并在ARM7单片机上进行移植;第三部分:应用层部分,通过嵌入式TCP/IP协议对用户数据进行收发处理。这里是在应用层实现HTTP协议来完成Web服务器功能的。
  所以系统软件设计部分主要包括了以太网控制器的驱动程序、嵌入式TCP/IP协议栈以及动态web网页的实现等几个模块:
  1)以太网控制器驱动程序是指LPC2132微控制器对ENC28J60芯片的驱动、控制过程。
  2)在LPC2132微控制器内部嵌入TCP/IP协议栈是系统实现的关键,它主要包括了ARP,ICMP,IP,TCP和HTTP协议的设计与实现。
  3)动态网页的实现。使用CGI技术,可以实现动态信息的交换,从而达到远程监视、控制的目的。
  软件设计中的另一任务是确定开发语言。对于嵌入式系统来说,掌握汇编语言的编程是至关重要的,即使使用高级语言来进行编程,通过阅读编译出来的汇编代码,也可以发现高级语言编程时需要优化的地方,从而提高高级语言所编写代码的执行效率。
  同时嵌入式系统的资源紧张,要合理利用资源,提高运行效率,关键部分、时间要求严格的部分还是需要使用汇编语言来完成。但汇编语言在代码编写和维护上效率较低,通用性不强,在复杂的项目上还是选用高级语言比较合理。在本设计中,采用汇编语言编写ARM7内核的启动代码(boot loader),其它的程序采用C语言作为设计语言。它有很明显的优势:C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,有丰富的库函数、运算速度快,而且可以直接实现对系统硬件的控制,较汇编语言有更好的可读性。
  3.嵌入式Web服务器设计的实现
  (1)主程序流程
  在主程序流程中,主要设计实现包括两大部分:第一是对接收到的以太网数据帧进行解包:第二则是对要发送的数据进行封装并发送。
  系统初始化模块主要包括了LPC2I32微控制器的初始化、网络接口芯片ENC28J60的初始化、TCP/IP协议栈中各标志的初始化等:
  ARP处理模块主要完成接收ARP请求并发送ARP响应;ICMP处理模块主要完成接收ICMP回显请求并发送ICMP回显响应;TCP数据处理模块主要完成对TCP数据报及HTTP数据的处理。
  当程序运行时,首先对系统初始化,这时系统处于等待状态,直到有数据帧到达。ENC28J60接收完数据帧以后,首先去除帧头,然后判断该数据帧的报文是否为ARP包,若是,则进行ARP数据包处理,若不是,则检查数据报头,看IP数据包的报文是否为ICMP数据包,若是ICMP数据包,则转到ICMP数据处理子程序。若不是ICMP数据包,就继续进行判断,看是否为TCP数据包,若为TCP数据包则转入TCP数据处理子程序,若此时即不是ICMP数据包也不是TCP数据包,则将该包丢弃。
  子程序的设计是为了完成TCP/IP协议体系的每一层的功能的,TCP/IP协议的每一层都是相互联系的,但也是相对独立的,具体由下面7个部分实现:以太网驱动程序、以太网层程序、ARP协议处理程序、IP协议处理程序、ICMP协议处理程序、TCP协议处理程序、HTTP协议处理程序。
  (2)嵌入式Web服务器的实现
  1)网络接口的实现
  网络接口是Web服务器与外界交流的接口。操作系统提供网络协议栈的支持,最主要是TCP/IP以及socket套接字系统函数库。
  网络接口使用操作系统提供的socket函数族建立可远程通信的套接字。它分两部分,一部分在系统初始化的时候建立,另一部分在HTTP引擎模块里面实现。网络接口模块的功能描述为:首先建立socket.socket是BSOUnix提出的进程间通信(IPC)机制,它是一种双向的通信接口,使得可以在两个不同进程(通常是网络上的不同节点的进程)之间可以直接通信。
  2)中心处理模块
  中心处理模块是嵌入式W e b服务器的核心。它进行全局的控制和管理。它通过accept()接收HTTP请求,调用read将请求接收到本地,然后进行请求解析。根据请求的内容,判断是属于动态内容还是静态内容,如果是动态内容则调用相应的动态处理函数,如果是静态内容则访问VFS获得相应的内容。然后将获得的内容包装成为HTTP响应,返回给客户端。中心处理模块还实现控制管理信息和容错机制。
  3)动态文件预处理器
  Web服务器必须有交互能力才是有实际意义的服务器程序。目前大多数的Web服务器都是利用CGI(Common Gateway Interface,通用网关接口)来实现应用程序的接口。本论文从嵌入式系统的角度出发,实现了一种内部的应用程序接口。
  动态文件预处理器所实现的功能是将普通的Web动态资源转变成为可编译的函数代码。设动态文档为f.dtm,它包含内容{x,f(a)}。其中x为静态的内容,F()为应用程序,a为通过解析HTTP请求得出的参数。动态文件预处理器将f.dtm转变成为f_dtm.c.它的内容为(f_dtm()},它是一个函数,实现功能为输出{x‘,f(a)}。其中f(a)是f(a)的实际输出,而x‘是输出静态内容的动作。
继承事业,薪火相传
返回列表