基于PXA270嵌入式Web服务器的设计与实现

发布者:幸福家园最新更新时间:2012-09-17 来源: 现代电子技术 关键字:PXA270  Web  服务器 手机看文章 扫描二维码
随时随地手机看文章

随着嵌入式系统的发展和Internet的普及,嵌入式系统接入网络已经成为嵌入式系统应用的一个重要方向和必然结果,嵌入式Web服务器是嵌入式系统网络化应用的重要方面。传统的8位单片机由于其运行速度、驱动能力、功耗等问题已经越来越不能满足用户的需求。ARM处理器以其高性能、低功耗、丰富驱动等功能成为新的嵌入式电子产品开发的理想选择。同时为了实现对系统资源的更好分配、复杂任务的更好调度,引入嵌入式操作系统。ARM-Linux具有很好的移植性、稳定性、强大的协议支持功能和丰富的设备支持功能,现在被广泛应用于嵌入式操作系统。本系统采用基于INTEL Xscale架构的嵌入式处理器PXA270与ARM-Linux相结合构建一个嵌入式Web服务器。

1 嵌入式Web服务器技术

1.1 嵌入式Web服务器体系结构

嵌入式Web服务器的体系结构如图1所示。其中,客户端和Web服务器之间的通信协议采用HTTP 1.1;嵌人式实时多任务操作系统提供TCP/IP协议支持;Web服务器与数据库服务器间的交互接口为CGI(Common Gateway Interface)。

1.2 嵌入式Web服务器工作流程

客户端使用Web浏览器与Web服务器进行通信。Web服务器中使用HTTP协议,HTTP(超文本传输协议)为标准WWW传输协议,使用可靠的TCP连接,通常采用端口80。HTTP是一个简单的协议,每次连接只完成一个请求。客户端与Web服务器交换数据之前,首先用TCP/IP建立连接,服务器端程序建立TCP类型SOCKET并在80端口进行监听,服务器在接收到用户端的请求后,解析客户请求的HTTP协议头、分析客户的请求,根据客户的请求返回相应的数据。这些数据可来自静态主页和文件,也可以根据请求动态产生。由此可见,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是Web服务器所完成的主要任务。

2 模块功能分析

系统分为客户连接处理模块、客户请求处理模块、协议处理模块3个模块。

2.1 客户连接处理模块功能

连接处理模块如图2所示。此模块完成第一步客户连接请求的处理,并将请求信息传递给客户请求解析处理模块去处理。 

模块工作流程如下:

(1)打开文件描述字,建立文件描述符;

(2)读取连接信息、获取客户信息;

(3)调用客户请求解析模块,关闭文件流。

2.2 客户请求解析处理模块功能

此模块在连接模块完成对客户请求信息进行解析、处理。模块工作流程如下:

(1)对用户信息进行解密;

(2)查找用户请求资源是否存在;

(3)判断用户请求类型,选取不同的协议进行数据回传。[page]

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内核启动后,需要加载根文件系统,以支持系统与用户交互。

[page]

(2)TCP/IP协议族的裁剪。在TCP协议中采用“停止等待算法”代替“滑动窗口算法”。一方面是由于数据量小,对网络拥塞不会产生太大影响,从而可以裁剪TCP的流量控制功能;另一方面是因为数据量小时,采用停止等待算法的传输效率和滑动窗口算法的效率差不多,因此采用简单停止等待算法代替复杂的滑动窗口算法,不但降低了实现难度,提高了处理速度,同时取消了TCP发送缓存区和接收缓存区,从而减小了占用存储空间。研究发现,如果TCP层的上层实现服务器端的应用,可以将标准TCP状态机建立连接过程中客户端建立连接的状态机部分简化掉,即将主动创建连接的SYN-SENT状态,主动关闭连接的FIN-WAIT1,FIN-WAIT2,CL0SING,TIME-WAIT状态。同理,如果应用是基于客户端的,还可以将服务器建立连接的状态机部分简化。当处于监听状态的服务器收到客户端的请求时,发送“ACK+对方发过来的SYN数据”。当收到来自客户端的一个仅含有ACK的空数据片后,双方进人Established状态建立连接,之后可以进行TCP数据通信。这样既节省了系统开销,同时也保证了所有的数据段都能安全正确地到达目的端。

(3)编写HTTP Web Server。Linux下嵌入式Web服务器主要有3个:httpd,thttpd和Boa。系统以boa作为服务器。Boa是一个单任务的http服务器,源代码开放、性能高。建立boa Web服务器的步骤如下:

①下载boa源代码boa-0.94.14r21.tar.gz。BoaWeb服务器的源代码可以从http://www.boa.org下载,当前最新版本为0.94.14。

②安装并编译boa源代码。首先将源码文件进行解压,修改Makefile文件,修改CC=gcc为CC=/usr/local/arm-linux/bin/arm-linux-gcc(//自己主机交叉编译器的目录),修改CPP=gcc-E为CPP=/usr/local/arm-linux/bin/arm-linux-gcc-E,执行make,即可在SRC下得到boa可执行文件。

③配置boa Web服务器。Boa启动时将加载一个配置文件boa.conf,在boa程序运行前,必须对其进行修改。

④执行Boa。成功配置以后,创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录/var/www/cgi-bin,将cgi的脚本存放在该目录下,另外还要将mime.types文件复制/etc目录下。在实际运行时,可以将index.html,index_Zcn.html文件、img目录和mime.types文件放到CF卡目录下,建立目录后,拷贝至相应目录。启动ARM-Linux,在终端运行./boa,用网页浏览器访问,看到/usr/share/doc/HTML/目录下的index.html网页,嵌入式Web服务器移植成功。

(4)CGI程序设计

嵌入式Web服务器,其为用户提供基于HTTP协议的网络接入方式,再通过编写适当的CGI程序来实现动态网页的交互。

要使用CGI程序,一般使用HTML中的FORM结构:

内容</FORM>,其ACTION属性指定相关的CGI程序,METHOD属性指明提交数据的方法(POST或GET);也可以在标签的HREF属性中调用CGI程序,结构如:START CGI</A>;还可以在的HTML标签中调用CGI程序,如果把CGI程序的路径当作SRC属性的话,服务器就会去运行程序并把运行结果当成图像的来源,结构如:

4 结 语

嵌入式Web服务器是实现嵌入式系统通过Web方式与Intenet互联的关键组成部分,直接影响网络应用系统运行的质量与效率,对其进行研究对Intenet技术的发展有重要意义。本文提出一种基于ARM-Linux操作系统的嵌入式Web服务器的设计方法,并给出相应的软硬件设计,并利用Socket编程和CGI程序完成整个Web服务器的设计。该嵌入式Web服务器具有成本低、开放性好、可移植性强等优点,便于后期维护和升级。由于此设计的嵌入式Web服务器是一个单独的模块,提供的是标准接口,只要在软件上作少许的修改就能很容易地应用到其他的嵌入式设备(如智能家电、现场节点等)中,具有一定的推广价值。

关键字:
PXA270  Web  服务器 引用地址:基于PXA270嵌入式Web服务器的设计与实现

上一篇:基于LabVIEW8.6和S3C2440的手持数字波形表的界面设计
下一篇:基于PXA270平台的实名管理系统设计与实现

推荐阅读最新更新时间:2024-03-16 13:08

谷歌为何要自主设计服务器芯片?
    有消息称,自主设计服务器系统的谷歌也将自主设计服务器芯片。那谷歌为什么要那么做呢?该公司是世界上最大的服务器采购者之一,其庞大的网络搜索运营运行于主要由英特尔芯片驱动的机器。巨大的采购量使得它能够从零部件供应商获得很好的价钱。 与此同时,各家厂商正加速将基于ARM技术的服务器芯片推向市场。该类芯片的设计跟多数智能手机的一样。它们希望提供功耗低于英特尔和AMD出售的x86设计的芯片,这将加剧市场竞争,芯片价格可能会出现下降,因而对谷歌有利。 谷歌也已加入了以IBM为首的联盟,该联盟正寻求通过向其它公司授权设计来推动其Power芯片的普及,效仿ARM的商业模式。 供应商的潜在数量即将激增,那谷歌何必要亲自去设计芯片呢? 该公司并
[手机便携]
CPU一样 华为服务器自研芯片有何特点
众所周知,今天市场上的主流服务器均是采用英特尔的CPU,于是有一种声音:“CPU都一样了,服务器们又有什么不一样”如果说过去的服务器跟随CPU做设计就可以了,今天不再是。 今天的服务器需要匹配云、大数据等新技术,它是一个计算平台。服务器行业已经打破过去多年的稳定,加剧创新和变革。而对于华为服务器来说,十几年来秉承着“持续创新,让计算变简单”的理念,针对客户应用场景,不断优化。CPU都一样了,华为服务器还真的与别人不一样。 为什么?华为从2002年面向运营商行业到2008年进入互联网行业,再到2012年进入企业行业,在服务器领域耕耘近15年,实现多维度基础技术与产品的创新,包括工程创新、架构创新、应用方案创新,还包括芯片创新,本文带
[半导体设计/制造]
海底有微软的服务器、养鱼的 Google,还有 Facebook 的超多电缆
即使是没有学过多少地理知识的孩子也知道,地球是一颗蓝色的「水球」——71% 的面积都由水所覆盖。 在今天的大部分人看来,互联网应该是「水球」的一种基础设施。人人都能用,处处都能用,只是网络好和网络差的区别而已。但事实上,在大部分水所覆盖的地方,互联网都没法随时提供服务。船员只能通过老式的娱乐方式打发时间,联网就别想了。 在海洋之上,一艘船就是一个没有外界信息流通的封闭社会,所以鲁荣渔 2682 这样的恶性杀人事件会在此发生。 但没有网络就没有互联网了吗?各大公司正在以不同的方式探索、开发这片信号不能达到之地。 Google 养鱼、微软听声 Google 和微软的做法颇为「田园」。作为世界上最大的互联网公司之二,他们没少在海
[手机便携]
海底有微软的<font color='red'>服务器</font>、养鱼的 Google,还有 Facebook 的超多电缆
基于PXA270嵌入式开发板的GPS定位系统设计
将GPS与嵌入式技术融合在一起,形成一个嵌入式的地理平台,是当前 GPS 领域的一个重要趋势。本文是在PXA270嵌入式开发板和GPS模块上开发实现的。在Linux下的嵌入式开发环境中,利用C++设计完成定位。嵌入式系统利用软件设计主要完成GPS定位信号的处理、电子地图的移植、地球坐标的转换、定位的显示等功能。 1 系统概述 嵌入式系统是控制、监视或者辅助装置、机器和设备运行装置;是软件和硬件的综合体,可涵盖机械等附属装置;有着友好的人机界面,支持LCD及GPS模块;主要完成提取GPS定位信号的数据、坐标转换、电子地图的显示等功能。软件设计流程如图1所示。 2 嵌入式系统软件设计 2.1 GPS模块输出的信息的提取
[网络通信]
亚马逊发布第二代自主设计服务器芯片“Graviton2” 对比Intel
亚马逊 刚刚发布了第二代自主设计服务器芯片“Graviton2”,堪称迄今最强 ARM 平台处理器,对比 Intel 顶级的至强铂金也毫不逊色。 亚马逊Graviton2采用了ARM最新的Neove rs e N1 CPU 架构,由自家设计团队打造,直接堆砌到64个核心,是第一代的四倍(比之前报道也多一倍),而且使用顶级配置,每个核心1MB二级缓存,总计64MB,所有核心共享32MB三级缓存。 64个核心采用网格总线(Mesh Fabric)互连互通,合并带宽高达2TB/s。支持八通道DDR4-3200内存,支持硬件AES-256内存加密,支持64条PCIe 4.0。 官方宣称,Graviton2性能是第一代的最多7倍
[手机便携]
亚马逊发布第二代自主设计<font color='red'>服务器</font>芯片“Graviton2” 对比Intel
一种串口服务器的指纹网络考勤系统
本文讨论了一种将指纹识别技术用于考勤的系统,结合串口服务器ATOP TigerLink GW21S一256协议转换的功能,将只能提供RS232/485串口的考勤终端接入以太网,实现网络考勤。介绍了系统的设计思路、总体构成及软、硬件实现,对于企业人事管理现代化具有一定的实用价值。   1.引言   目前指纹识别技术已应用到各种综合信息管理系统中,可以设计将指纹识别技术用于考勤。代替传统的打卡制度,避免代打卡的现象发生。但是指纹考勤终端是单片机控制系统,通常只提供RS232/485串口通讯,对于考勤地点比较分散、距离较远、需要多台考勤终端的单位来说,RS232/485则不能完成远距离的网络数据传输。目前,基于TCP/IP协议的网络架
[嵌入式]
主要攻击端口为服务器、数字钥匙,主机厂加大汽车信息安全布局
佐思产研 发布《2020 主机厂 信息安全 布局研究报告》,对当前汽车信息安全现状和主机厂布局进行了梳理。 汽车信息安全事件频发,服务器、数字钥匙等成主要攻击端口 随着新四化发展, 汽车智能化 率不断提升,功能逐渐丰富。根据统计,2020 年 1-10 月中国新车网联功能装配率已超过 50%,2025 年将达到 75%左右。功能上,则向智能座舱、高等级自动驾驶方向演进,多模态交互、多屏互动、5G 网络、V2X、OTA、数字钥匙等功能应用不断扩大。随之而来的,则是汽车控制代码逐渐增多,可攻击端口增加,面临的安全威胁加大。 从安全事件端口分布来看,目前的汽车信息安全事件主要集中在服务器、数字钥匙、移动 APP、OBD 端口等
[汽车电子]
主要攻击端口为<font color='red'>服务器</font>、数字钥匙,主机厂加大汽车信息安全布局
如何配置及访问S7-1200的Web服务器功能?
TIA Portal 从 V17 版本开始、S7-1200 CPU 从 V4.5 版本开始,Web 服务器支持现代 API 和证书处理。并且在 Web 服务器属性中新增了 Security 属性,在其中设置安全通信所用的证书。 在使用 TIA Portal V17 对 V4.5 版本的 S7-1200 组态 Web 服务器时,必须在 Security 属性中的证书类型进行选择,以使用不同的证书。 本文档将介绍如何配置及访问 S7-1200 的 Web 服务器功能 硬件和软件版本 硬件:S7-1200 V4.5 及以上 (本文档使用硬件:6ES7214-1AG40-0XB0 V4.5 版本) 软件:TIA Portal V17
[嵌入式]
如何配置及访问S7-1200的<font color='red'>Web</font><font color='red'>服务器</font>功能?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 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