2.3 协议处理模块的功能
TCP/IP协议包括很多的协议,鉴于嵌入式Web服务器的应用场合和有限的资源,并不是所有的协议都需要实现,应根据系统的要求有选择的加以实现。以太网数据的传输是采用MAC地址来识别。为了保证系统在以太网的正常通信,首先需要实现ARP协议,因为ARP协议提供IP地址到MAC地址的转换功能。嵌入式Web服务器要实现在Internet上通信,在网络层一定要实现IP协议,以及能报告数据传送差错等情况的ICMP协议,因为IP协议是面向无连接的,它无法将状态信息和错误信息传到最初的主机上,因此要通过网际控制报文协议(ICMP)实现。在传输层主要有TCP协议和UDP协议,UDP协议是面向无连接的数据报文传输协议,而TCP协议则是面向可靠的数据流的传输。基于应用的需要和对可靠性的要求,在传输层采用TCP协议,并对TCP协议进行简化处理。在应用层,远端主机是通过浏览器的访问控制方式读取数据的,所以要实现HTTP协议。其他一些在Internet上应用较广泛的协议(如FTP协议、SMTP协议等)在此无需实现。
协议处理模块完成对连接信息进行分析,根据参数的不同,发送不同的HTTP协议头信息,在Linux系统下建立通信双方的服务程序可以使用套接字技术,常用的套接字有2种:流式套接字和数据报套接字。本系统为实现Web服务器功能采用的是流式套接字,流式套接字用法流程图如图3所示。
流式套接字提供了一种可靠的面向连接的数据传输方法,此方法对单个的数据报和对数据包都提供一种流式数据传输。流式套接字由socket函数调用来创建、而且调用时必须用bind函数为它分配一个地址。使用listen函数建立和客户机的连接,该函数告诉套接字开始侦听客户机的连接请求。一旦将套接字设置成侦听连接后,用accept函数来完成连接,如果连接成功,accept函数将返回一个新套接字的描述符,新套接字被用作以后处理的连接。一旦客户机套接字和服务器套接字建立连接,双方就可以通过send()和recv()函数来发送和接收数据。
3 硬件平台与软件设计
3.1 硬件开发平台
基于PXA270的Web服务器硬件平台为研兴科技开发的EDK-270SL硬件系统,EDK-270SL是研兴科技针对Intel PXA270 CPU推出的Linux开发平台。PXA270嵌入式微处理器最高主频可达624 MHz,加入了WirelessMMX技术,大大提升了多媒体处理能力,同时PXA270还引入PC机上的Intel SpeedStep动态电源管理技术,在保证CPU性能的情况下,最大限度地降低移动设备的功耗。EDK-270SL由处理器核心板、主板及LCD三部分组成。EDK-270SL上还集成了下列部件:64 MB SDRAM、32 MB FLASH Memory、LAN91C113以太网接口、1个全功能串口,1个带流控串口、1个红外接口、1个CF、接口、1个USB HOST、1个USB SLAVE、2个SSP接口等。因处理器的高性能、低成本、高效率等特点,广泛应用于PDA、智能电器、仪器仪表、监测控制等领域。
3.2 软件设计
嵌入式Web服务器的软件开发主要包括以下几项内容:
(1)嵌入式操作系统ARM-linux的移植。ARM-Linux可移植性强,用户通过重新进行配置、编译内核可以使其内核文件小于500 kB。Linux是源码公开的免费操作系统,所用版本支持MMU功能。ARM-Linux网络支持功能强大,支持PPP,Ethernet等多种网络连接方式,包括完整的TCP/IP协议栈及大量的其他协议。另外,由于ARM-Linux的开放性,新的网络协议可以很容易地加入到内核中。移植过程如下:
①安装交叉编译工具链。由于嵌入式设备没有足够的内存以及存储资源来完成编译工作,于是就必须在主机上完成针目标机的代码编译生成,编译后的代码下载到目标机上运行。
②编译Linux内核需要的源码树:linux2.6.9-270SL1.tar.gz。使用自动编译脚本my编译内核,生成可运行在嵌入式系统上的内核映像文件zImage。
③创建JFFS2根文件系统。对于一个实际的嵌入式应用系统,仅包含Linux内核是不够的,还必须有文件系统的支持。在嵌入式Linux内核启动后,需要加载根文件系统,以支持系统与用户交互。