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

2018-06-11 11:05陈志星杨金孝
电子设计工程 2018年11期
关键词:浏览器以太网网页

陈志星,杨金孝

(西北工业大学电子信息学院,陕西西安710129)

随着物联网技术的兴起和智能家居的发展,嵌入式设备需要接入局域网或者因特网已成为一种趋势,由于网口通信比其他模式通信速率高且抗干扰性强,在局域网中往往很多嵌入式设备只留有网口供于外部通信,此时对于嵌入式设备内部一些参数设置和内部程序升级只能由网口通信完成。

当前大部分嵌入式设备已具有内部Web服务器的功能,不过许多都使用带操作系统的高性能处理器和TCP/IP协议完成的[1]。这种实现方式对于硬件资源要求比较高,实现的过程比较复杂;而使用无操作系统的处理器和LwIP(light weight internet proto⁃col)轻量型网络协议栈的实现方法,可以对硬件资源的要求减少许多[2],实现方式也比原来的简单许多。本文研究实现了一种基于LwIP轻型协议栈和STM32处理器的嵌入式设备内部Web服务器。

1 Web服务器和LwIP协议栈简介

1.1 Web服务器概述

嵌入式设备Web服务器以在内部嵌入Web方式来实现[3]。通过程序中嵌入的网页数据,完成嵌入式设备和上位机浏览器之间的数据转换与传输[4]。嵌入式设备内部数据在转换成网页数据后由网络接口模块用有线或无线方式传输到上位机浏览器。用户通过上位机浏览器可以实时查看嵌入式设备内部数据,同时还可以对内部参数进行配置控制操作。

硬件设计包括:服务器最小系统、电源模块和网络通讯模块设计等。软件设计的目的是完成数据的转换与传输,实现上下行通信,参数配置、数据封包、数据缓冲和升级程序等。

1.2 LwIP协议栈简介

LwIP协议是瑞典计算机科学院设计的一个小型的TCP/IP协议栈[5]。它的设计方式和TCP/IP协议是一样的。LwIP协议的轻量型特点使其可以在无操作系统环境下运行。LwIP协议栈在保持TCP协议大部分功能的前提下减少了对RAM的占用量,它只需十几KB的RAM和大约40 K的ROM就可以运行[6]。LwIP协议通过使用不复制任何数据的API函数减少数据处理和内存需求。因此LwIP协议很适用于资源受限的嵌入式系统。

协议中的每一个子协议作为一个模块来实现,在每个子协议中用几个函数作为协议的接入口[7]。虽然这些子协议是以独立行使实现的,但是为了提高处理速度和内存占用率,有些层协议不是被独立实现的。换言之,应用层的应用协议与协议底层之间没有严格的分开来,可以共用相同的内存[8]。所以各个协议层之间可以使用共享内存的方式实现通讯,这和传统TCP/IP协议是不一样的。

LwIP协议主要由IP模块,ICMP模块,UDP模块,TCP模块和相关支持模等几个模块组成。相关支持模块包括:操作系统模拟层、缓冲与内存管理子系统、网络接口函数及校验和计算函数[9]。LwIP协议的主要特性如下:支持ARP以太网地址解析协议;支持IPv4和IPv6协议;支持IP分片与重装;支持多网络接口下数据转发;支持ICMP协议,用于网络调试与维护;支持IGMP协议,用于网络组管理;支持UDP协议,用户数据报协议;支持TCP协议;具有TCP拥塞控制,RTT估计,快速恢复与重传等功能;提 供 raw/callback API、sequential API、BSD-style socket API 3种用户编程接口方式;支持DHCP,动态主机配置协议等;

2 Web服务器硬件方案设计

2.1 主控芯片选择

Web服务器的硬件电路模块主要由处理器和网络通信模块组成。

主控处理器选用意法半导体公司生产的STM32F103ZET6处理器。该处理器是一款基于Cortex-M3内核的具有高性能、低成本、低功耗的32位处理器[10]。它的主频高达72MHz,完全满足网口通信的需要。STM32F103ZET6处理器内置512KB的FLASH和64KB的SRAM[10]。

STM32F103ZET6处理器内部具有符合IEEE 802.3-2002标准的以太网模块。该以太网模块支持独立于介质的接口(MII)和简化的独立于介质的接口(RMII)两种标准接口[11]。通过这两种接口连接到外接的物理层(PHY)模块就可以实现以太网通信。所以使用STM32F103ZET6处理器只需外接一个物理层(PHY)芯片就可以实现一个完整的以太网收发器。

2.2 网络通信芯片选择

网络通信芯片使用SMSC公司生产的LAN8720A作为PHY芯片。LAN8720是低功耗的10/100M以太网PHY层芯片,I/O引脚电压符合IEEE802.3-2005标准[10]。LAN8720A支持通过RMII接口与以太网MAC层通信,内置10-BAST-T/100BASETX全双工传输模块,支持10 Mbps和100 Mbps。通过自协商的功能LAN8720A可以实现与目的主机最佳的连接方式(速度和双工模式)。LAN8720A还支持HP Auto-MDIX自动翻转功能,所以无需更替网线就可以把连接方式变成直线或交叉连接。

2.3 硬件电路设计

硬件电路设计包括服务器最小系统电路设计、网口芯片电路设计和RJ45接口电路设计。服务器最小系统电路包含时钟电路、复位电路、电源电路和下载程序电路。处理器采用精简介质独立接口(RMII)和PHY芯片连接。相对于采用介质独立接口(MII)的连接方式可以减少一半的信号数量。上位机通过浏览器发送数据经过网线差分信号传输给PHY芯片再转换成MAC层使用的数据格式。处理器内部的LwIP协议把收到的数据转换成需要的应用数据。而处理器发送数据是与接收数据相反的过程。图1为Web服务器系统框图。图2为RJ45接口电路原理图;图3为LAN8720A硬件电路原理图。

图1 Web服务器系统框图

3 Web服务器软件方案设计

3.1 LwIP协议栈移植

图2 RJ45接口电路

图3 LAN8720A硬件设计原理图

LwIP协议栈的移植工作主要是在嵌入式设备中把LwIP协议栈源码添加到服务器代码工程中。主要将LwIP协议栈源码中LWIP-NETIF、LWIPCORE、LWIP-API文件夹内的.c文件添加到工程中。其中还需添加arch文件将以太网驱动和LWIP连接起来。在arch中有5个文件cc.h、cpu.h、perf.h、sys_arch.h和sys_arch.c。cc.h定义协议栈内部常用的数据类型[11];perf.h定义系统测量与统计相关的宏,用户可以根据需要定义测试的对象和数据记录;cpu.h定义字节排放次序即大小端模式,由于STM32是小端模式,所以定义BYTE_ORDER为小端模式。在没有使用操作系统的时候不使用sys_arch.h和sys_arch.c文件。添加LWIP通用文件,主要有lwip_comm.c、lwip_comm.h和 lwipopts.h 3个文件。LWIP源码和以太网驱动库由lwip_comm.c和lwip_comm.h结合起来,lwipopts.h是用来裁剪和配置LWIP的文件[12]。利用struct netif结构体实现对LwIP中不同网络接口的操作[13]。网络设备的驱动、网卡初始化、接收和发送网络数据以及网络中断处理函数这几部分功能都在stm32f103_eth_bsp.c文件中实现。

3.2 网页制作

使用html语言编写原始网页,将原始网页使用makefsdata.exe工具生成C语言格式的网页数组数据。网页数据和嵌入式设备交互采用公共网关接口(Common Gateway Interface,CGI)技术和服务器端嵌入(Server Side Include,SSI)技术实现[14]。

Web服务器使用CGI技术执行外部程序,并将输出的结果发送给Web浏览器。在服务器上CGI是物理上一段程序,提供同客户端网页页面的接口。当有来自浏览器表单的输入信息时服务器调用CGI程序来解释,并在产生相应的处理。

在数据发送到浏览器前,服务器使用SSI指令把文本、图形和应用程序信息包含在网页中[15]。Web服务器根据指示将内容插入适当网页,完成数据从嵌入式设备传向浏览器。图4为嵌入式设备配置页面。

图4 嵌入式设备配置页面

3.3 Web服务器实现

嵌入式设备程序开始运行时,首先对各个模块进行初始化,初始化网卡参数,申请内存,创建服务器控制块,初始化Web服务器,在服务器上绑定本地地址与端口,建立网络连接。在服务器进入监听状态后,当有浏览器请求时,服务器采用回调函数机制调用数据接收函数处理接收的数据,并返回查询需要的数据。服务器软件实现流程图如图5所示。

图5 服务器实现流程图

4 测试验证

以PC机的浏览器作为客户端,嵌入式设备作为Web服务器端;服务器IP地址设为192.168.1.103,端口设为8080,本地PC机IP地址设为192.168.1.100;使用ping命令在PC机上测试网络连通状况,测试结果如图6所示;从图6可知,上位机发送的数据均成功返回,无数据丢失,通信状况良好。

图6 ping通信测试结果

将192.168.1.103地址输入到浏览器地址栏中,可以看到嵌入式设备内部服务器返回数据页面,如图7所示。

图7 服务器返回数据

由图7可以看出嵌入式设备Web服务器通信正常,返回了设备内部参数,并可以通过页面配置设备内部参数,修改设备IP地址、设备端口等。

5 结束语

文中设计并实现了一种基于LwIP协议栈的嵌入式设备Web服务器。该服务器系统所需的外围器件较少,方便组网,对处理器性能要求较低,易于实现。系统经过实际测试和验证,性能可靠,运行稳定,能满足一般嵌入式设备数据传输要求。

猜你喜欢
浏览器以太网网页
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
反浏览器指纹追踪
基于CSS的网页导航栏的设计
基于URL和网页类型的网页信息采集研究
谈实时以太网EtherCAT技术在变电站自动化中的应用
环球浏览器
网页制作在英语教学中的应用
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
10个必知的网页设计术语