电子信息科学与技术毕业论文基于LwIP的嵌入式网络终端设计2.docx
- 文档编号:27351494
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:17
- 大小:548.68KB
电子信息科学与技术毕业论文基于LwIP的嵌入式网络终端设计2.docx
《电子信息科学与技术毕业论文基于LwIP的嵌入式网络终端设计2.docx》由会员分享,可在线阅读,更多相关《电子信息科学与技术毕业论文基于LwIP的嵌入式网络终端设计2.docx(17页珍藏版)》请在冰豆网上搜索。
电子信息科学与技术毕业论文基于LwIP的嵌入式网络终端设计2
本科毕业论文
题目:
基于LwIP的嵌入式网络终
端设计
附件20
摘要
因特网的快速发展和成熟,3C(计算机,通讯,消费电子)合一为主流的数字时代已经到来,电冰箱,空调等电器也不再功能单一,电器结构也变得更加复杂,更加人性化。
互联网已经达到在全球范围内的连通性,网络通信也成了人们购买产品中考虑的一种选择性条件。
而一些小型轻便的设备,处理能力不强,内存资源有限,需要在这类产品上实现联网通信就成了现今比较热的话题。
而LwIP正式为解决这类问题提出的一种解决方案。
LwIP是TCP/IP协议栈的一种实现,LwIP的主要目的是减少内存使用率和代码尺寸,使得LwIP适用于资源有限的处理器,如嵌入式系统。
为了简化处理过程和内存的要求,LwIP对API进行了裁剪,可以不需要复制一些数据。
本文介绍了在STM32F107上实现基于LwIP的WEB服务器,客户端可以通过访问服务器对网络终端进行控制。
为了使用户能够通过互联网对嵌入式设备进行实时控制,嵌入式WEB服务器的设计符合了嵌入式设备和网络技术的发展要求。
因为作为本科生的毕业设计,所以本文设计的系统以功能性作为首要的考虑问题,并在此基础上最大程度的降低成本。
本文主要描述LwIP的设计和实现,并在此基础上实现嵌入式WEB服务器的通讯应用。
叙述了STM32F107的硬件结构,以太网功能,以及LwIP在TCP/IP协议栈的实现中的操作系统,应用程序,底层网络中使用的数据结构和算法。
关键词:
STM32F107,嵌入式,LwIP,WEB服务器
Abstract
Therapiddevelopment of Internet and 3C (computer, communications, consumerelectronics) one of themainstream ofthedigitalage hascome, refrigerators,air-conditioners and otherelectricalappliances arenolonger singlefunction, the electricalstructure becomesmorecomplex, morehumane. The Internet hasreached worldwideconnectivity, networktraffic hasbecome the peopletobuy products toconsider aselective conditions. Somesmall portable devices, the processingcapacity i-s notstrong,limited memoryresources, networkingandcommunications ontheseproducts hasbecome today's hot topic. LwIP isasolutiontoformally proposed t-o solvesuchproblems.
LwIP is animplementation of TCP/IPprotocol stack, ImplementationofLwIP's mainpurposeis to reduce memoryusage andcode size, make LwIP applyto limitedresources, processor,suchas embeddedsystems.Inordertosimplify the processing and memoryrequirements,LwIP API cutting, do notneed to copysome data.Thisarticledescribes in STM32F107-based LwIP WEBserver, theclient can accesstheserver onthenetwork terminal control.Inorderto enableusersto embeddeddevices, real-timecontrol viatheInternet, theembedded Web server designedtomeet the requirements of embeddeddevices andthe developmentofnetworktec-hnology.Undergraduate graduation design,so thispaper,thedesignofthe syste-m tobefunctional as a primaryconsideration, and onthisbasis, thegreatestdegreeof lowercosts.Thispaperdescribesthe design andrealization of LwIP embeddedWEBservercommunication applications, and onthisbasis. Described the ST-M32F107 of hardwarestructure,the Ethernet function, as well as LwIP in the imple-mentation of the TCP/IPprotocol stack, o-peratingsystem, application, used in th-e underlyingnetwork datastructures andalgorithms. The testresultsshowthat th-e performance ofthesystem couldmeetthe designrequirements.
KeyWords:
STM32F107, embedded,LwIP,WEBserver
1引言
近几年来,随着科学技术日新月异的发展,计算机科技的快速发展,特别是互联网的快速普及,互联网在人类活动中也越来越紧密联系,尤其是对于工业控制和信息电器领域中同样有着越来越重要的应用。
同时计算机,通讯,消费电子三合一的快速发展,数字化时代已经到来。
而嵌入式接入设备是数字化时代的一大主流标志,形态各异的计算机,通讯,消费电子三合一产品也将是网络接入设备的一大主流。
因为PC机以及现有的Internet技术可以实现对非网络设备进行远程控制的部分的要求,而且成本费用较高,可靠性和期望值也有一定的距离,所以这种方案并没有被广泛的接受和使用。
由于嵌入式设备具有低成本高性能的特点,而现今对嵌入式系统的开发研究和嵌入式技术也都进入到了一个成熟的阶段,将嵌入式系统和网络相结合来实现非网络系统的网络控制,那么世界可能就是另一番景象。
1.1研究背景
因特网技术的成熟,使得网上提供的信息更加丰富,应用项目也更加多样,人们对网络的需求也越来越广泛,利用PC机上网来查阅和发布各类信息等对于网络的日常应用已经不能满足人们的需求。
像传统的电器,电冰箱,微波炉,电视,空调等,这类电子设备的功能也不在单一,电器结构也更为复杂,也逐步开始应用嵌入式网络接入,使用户可以通过网络就能实现远程控制,信息通讯。
同样,互联网在全球范围内的连通性,那些能够连接因特网的设备也成为人们选择产品中考虑的一大问题,通过Internet对家用电器等非网络设备进行远程控制已经成为现今主流。
而一些小型轻便的设备,比如一些医学仪器上的身体上使用的传感器,体积小而且便宜,内存小,运算能力有限,因此必须在资源受限的情况下实现TCP/IP协议甚至处理接受到的信息。
TCP/IP协议可以分为四个层次,从底层到最高层分别是物理层和数据链路层,网络层,传输层,和最高层的应用层。
物理层和数据链路层是TCP/IP协议的最低层,要求提供给上层一个访问接口,以便传递IP分组信息。
网络层是第二层,也是整个TCP/IP协议栈的核心,其功能是把分组发往目标网络或主机,源主机与目的主机可以在同一个网上,也可以在不同的网上。
其中定义了分组格式和协议,即IP协议,来对分组进行排序。
IP协议是一种不可靠、无连接的数据报发传送服务的协议,提供的只是一种尽力而为的服务。
传输层是第三层,负责在应用进程中的端到端之间的通信。
传输层定义了两种服务质量不同的协议,TCP和UDP。
TCP是一种可靠的面向连接的协议,允许将源主机的字节数据流无差别的传送到目的主机。
同时能够完成流量的控制功能,协调收发主机之间的发送和接受速度,从而控制正确的传输。
应用层是最高层,其中也包括了很多协议:
文件传送协议,简单邮件传送协议,简单网络管理协议,超文本传送协议等。
LwIP是瑞士计算机科学院一个开源的TCP/IP协议栈实现。
LwIP是LightWeightIP协议,有无操作系统都可以运行,其实现的重点是在保持TCP/IP协议的主要功能的基础上减少对内存的占用,一般只需要几百字节的RAM和40K左右的ROM就可以运行,这使得LwIP成为在资源受限的情况下实现及处理TCP/IP协议的解决方法。
LwIP可以支持多网络接口下的IP转发,提供专门的内部回调接口RawAPI,这样可以提高应用程序性能。
像LwIP的目标系统是最小限度系统,所使用的操作系统通常不能在内核与应用层进程之间维持一个严格的保护屏障。
这里允许使用一种比较宽松的通许机制,通过共享内存的方式实现应用层与底层协议族之间的通讯。
应用层可以知道底层协议使用的缓冲处理机制,这使得应用层可以有效的重复使用缓冲区。
同样,应用层与网络代码使用的是相同的内存区,那么应用层就可以直接读写内部缓冲区。
1.2本科生研究的意义
作为一个本科生,试着去了解一下这门新兴的、紧密连接着数字时代前沿的学科是很有必要的,同时,也可以以此作为契机来检验自己在大学四年里所学的理论知识,并将其应用到实践中,理论和实践相结合,而且嵌入式作为一门新兴的技术,基于LwIP的嵌入式网络终端设计也是一个很好的毕业设计的题目。
STM32F107中以太网MAC(MediumAccessControl介质访问控制)构成数据链接路层,外部PHY构成了物理层,LwIP构成网络层以及传输层。
操纵系统与LwIP的接口是LwIP的操作系统模拟层。
LwIP依靠操作系统来实现线程,信号量,邮箱和队列等以及那些与这些相关的操作,同时,考虑到我们实验室有STM32F107,所以,本文就采用STM32F107硬件条件下基于LwIP的嵌入式网络终端设计,在STM32F107上实现基于LwIP的WEB服务器,客户端可以通过访问服务器对网络中断进行控制以及信号的一些简单的数据处理。
2基于LwIP的嵌入式网络终端的总体结构
2.1嵌入式网络终端的整体设计
嵌入式网络终端的设计分为两部分硬件设计和软件设计。
硬件设计是建立在STM32F107的开发板和一个外部的PHY(物理接口收发器)这个组合上的。
它为实现嵌入式网络终端设计的TCP/IP协议上的提供数据链路层和物理层。
软件设计上,主要是依靠LwIP来实现,LwIP在功能上实现TCP/IP协议上的网络层和传输层。
而操纵系统和LwIP的接口就成为了LwIP的操作系统模拟层,从而实现了TCP/IP协议的应用层功能。
根据嵌入式网络终端和TCPIP协议栈的设计和实现的功能上将本次毕业设计分成以下几个部分:
1、硬件上STM32F107和外部的物理接口收发器实现TCP/IP协议的数据链路层和物理层。
2、LwIP的实现TCPIP协议的网络层和传输层,即LwIP在操作系统上的移植。
3、LwIP实现过程中的操作系统模拟层实现,缓冲和内存管理的子系统,网络接口函数实现。
2.2硬件设计
2.2.1STM32F107概述
32位ARMCortex-M3结构,72MHz运行频率,1.25DMIPS/MHz,硬件除法和单周期乘法,并可快速可嵌套中断,6~12个时钟周期,有64K~256KB的FLASH,以及高达64KB的SRAM。
另外在网络通信功能上,具有一个RJ45网络接口,支持10M/100M自适应网络,还有一个Zigbee无线网络通讯接口,一个Wi-FiWLAN无线宽带网络通讯接口。
在本开发板上,添加了一些人机交互接口,一个大屏幕320*240,262144色TFT-LCD,支持SPI接口式/总线接口,四个LED发光管,一个电源LED指示灯,另外一个标准3.5mm耳机接口,一个五方向的输入摇杆,3个GPIO按键,1个RESTE按键,以及音频级处理芯片,USBOTG功能能,支持外接鼠标和键盘。
串行通信功能上,有两个RS232连接插座,其中一个RS232带硬件流控制引脚,一个mini型USB插座,两个CAN连接口。
其中与以太网最重要的硬件是MAC(介质访问控制)及其专用的DMA。
专用的DMA控制器允许专用SRAM和描述符之间高速传输,其中一些地址过滤模式,对物理和组发送地址,以及32位状态编码,用于每个传送和接受帧。
内部的FIFO用于缓存传输和接受帧,传输FIFO和接受FIFO都是2Kbyte,总共4Kbytes。
2.2.2STM32F107的以太网功能描述
STM32F107支持两种工业标准的物理层接口,默认的介质无关接口MII和精简的介质无关接口RMII。
以太网的外设由MAC和一个专用的DMA控制器,支持默认的MII和RMII通过一个选择位来设置默认的MII接口或者精简MII接口。
TDMA控制器接口通过AHB主从接口连接核和内存,AHB主接口控制数据传输当AHN从接口访问控制盒状态寄存器空间。
在MAC核传输前,传输FIFO缓存通过DMA从系统内存中读取数据,类似的,接受的FIFO队列从线上储存以太网帧从而知道它们被DMA传送到了系统内存中。
以太网的外设还包括一个SMI用于和外部的PHY通信。
配置寄存器允许用户为MAC和DMA控制器选择想要的模式和特性。
图2-1STM32F107以太网原理框图
2.2.3SMI站管理接口
SMI(stationmanagementinterface站管理接口)允许应用程序通过一根时钟数据线来读取配置中任意一个物理寄存器,接口最多支持访问是32个PHY。
应用程序可以在SMI的允许下选择32个PHY中的其中一个,再在PHY中32个寄存器中的任意一个来发送控制数据或者接受状态信息。
但是在给定的时间里,只能访问一个PHY中的寄存器。
如图2-1所示,图中微控制器执行使MDC时钟线和MDIO数据线来为交替的功能I/O扣。
MDC是一个用于给数据传输提供时间参考的周期性时钟,最大的频率为2.5MHz,最小的MDC的高低时间是每次160ns,最小的周期是400ns。
值得注意的是,在不工作的情况下,SMI管理接口驱动MDC时钟信号为低,即为0。
而MDIO是数据输入和输出数据是要用MDC时钟信号来同步传输状态信号给物理设备,或者从物理设备那得到状态信号。
图2-2SMI管理接口框图
2.2.4SMI写操作
当应用程序设置介质无关接口MII写和忙位时,SMI通过传输PHY的地址,PHY中的寄存器地址以及写数据来启动一个写操作到PHY寄存器上。
当然,在传输过程中应用程序不能改变MII的地址寄存器中的内存或者是MII数据寄存器。
在这个写操作的时间里,任何对MII地址寄存器和MII数据寄存器的写操作都会被忽略(忙时位为高,即为1),保证传输过程无差错完成。
这个写操作完成之后,SMI又通过复位忙位,使得可以重新接受新的写操作。
图2-3SMI写操作
2.2.5SMI的读操作
用户设置以太网MAC中MII的地址寄存器中的MIIBusybit时,MIIWritebit为零,SMI就通过传输PHY地址和PHY中的寄存器的地址,然后在PHY寄存器中就启动一个读操作。
同样的,在传输过程中应用程序不能改变MII地址寄存器中的内容或者MII数据寄存器中的内容。
同时在读操作过程中,对MII地址寄存器和MII数据寄存器的写操作也会被忽略(Busybit为高,即为1),保证传输过程不差错,能够正确完成。
读操作完成后,SMI复位Busybit,然后用从PHY中读到的数据来更新MII数据寄存器。
图2-4SMI读操作
2.3TCP/IP的实现和设计
2.3.1TCP/IP协议的体系结构
图2-5TCP/IP协议各层关系
应用程序使用TCP传送数据时,数据被送入协议栈中,逐步通过每一层,最后直到被当做一串比特流送入到网络当中。
每层对于收到的数据都要在数据首部加些信息,TCP传给IP的数据单元称为TCP报文段。
IP传给网络层的数据单元称作IP数据报。
数据帧是由帧头、IP数据包和帧尾构成的,帧头包括源主机和目标主机的MAC地址以及类型,帧尾是校验字。
IP数据包又是有IP头部和TCP数据信息组成的。
IP头包括源主机和目标主机的IP地址、类型等。
TCP数据信息就是TCP头部和真正的实际数据。
TCP头包括源主机和目标主机的端口号、顺序号、确认好、校验字等。
2.3.2IP协议概要及IP处理
IP是TCPIP协议族中最为重要最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
如同一辆运货的卡车,需要将一车一车的货物运向目的地,主要的货物就是TPC活着UDP分配给它的。
IP提供不可靠、无连接的数据报传送服务,它不能保证IP数据报能够成功地到达目的地。
IP仅仅提供最好的传输服务,但是不保证IP数据报能够成功地到达目的地。
如果该过程中发生某种错误时,如网络系统中某个路由器暂时用完了缓冲区,IP有一个简单的错误的处理算法:
丢弃该数据报,然后发送ICMP消息给信源端。
图2-6IP数据报格式及首部中的各字段
普通IP首部长为20个字节,除非含选项字段。
如图2-3-2所示,最高位在左边,记0bit;最低位在右边,记31bit。
4个字节的32bit值下面的次序传输:
首先是1~7bit,其次8~15bit,然后16~23bit,最后24~31bit。
这种传输次序称作bigendian字节序,也称作网络字节序。
对于处理IP信息包,由网络设备驱动调用函数ip_input()处理,完成对IP版本字段及包头长度的初始检查,还要同时计算和验证包头校验和。
接下来,函数检查目的地址是否与网络接口的IP地址相符合以便确定信息包是否已到达预定的目的地。
网络接口在链表中被排序并且采用了线性检索。
如果一个到达的信息包被检查到已经到达了目的地(目的主机),则由协议字段来决定信息包应该传送到哪个上层协议。
外发的信息包由ip_output()函数处理,查找到适当的网络接口来传送信息包,当外发的网络接口被确定后,信息包传给以外发网络接口为参数的ip_output_if()函数。
此时,所有的IP包头字段被填充,并同时计算IP包头的校验和。
将IP信息包的源以及目标地址作为参数传递给ip_output_if()函数。
通过线性检索网络接口链表找到适当的网络接口,因为在检索期间,网络接口的网络掩码会对IP信息包的目标地址进行掩码运算,经掩码运算过后的目标地址等于同样经过掩码运算的接口IP地址,则找到正确合适的网络接口,即选择这个接口。
2.3.3TCP处理
TCP属于传输层协议,为应用层提供可靠的字节流服务。
将TCP处理过程分割为六个功能函数来实现:
tcp_input()、tcp_process()及tcp_receive()函数用于TCP输入,tcp_write()、tcp_enqueue()及tcp_output()则用于TCP输出。
发送过程的发起者是应用层,调用ip_write()函数,接着其再将控制权交给tcp_enqueue()函数,这个过程后,数据会被分割成适当大小的TCP段,然后这些TCP段会被放到所属连接的传输队列中。
此时,tcp_output()函数会检查现在是不是符合条件发送数据,判断接收器窗口是否拥有足够大的空间,阻塞窗口是否也足够大,条件满足时,ip_route()和ip_output_if()函数就会发送数据。
接收过程中的发起者是网络层,网络层将数据包传递给ip_input()函数,验证IP版头后移交给TCP段给tcp_input()函数,由其校验和验证与TCP选项解析,并判定这个TCP段属于哪个TCP连接。
然后TCP段到tcp_process()函数,实现必要的状态转换,调用tcp_receive()函数,并将数据传给上层的应用程序。
若这个TCP段包含的信息是不被承认的ACK应答数据构成,数据就会从缓冲区移走,如果收到的是一个ACK应该确认数据,接收器就会同意接受更多的数据,tcp_output()函数就会被调用。
2.3.4API的实现
程序的执行使靠回调函数来驱动的,每一个回调函数也只不过是一个能够直接被TCP/IP代码调用的普通的C语言函数,每一个回调函数的调用也都是传递一个当前连接UDP或者TCP的状态。
建立TCP连接函数:
建立连接函数同sequentialAPI很相似,一个新的TCP连接的标志由tcp_new()函数来创建,其实质上就是一个协议控制块-PCB的创建。
连接创建后,新建的协议控制块就进入监听状态,等待数据接收的连接信号,也可以是直接连接到另外的一个主机上。
tcp_new():
定义一个tcp_pcb控制块后首先被调用,建立该控制块的连接标志。
其原型是structtcp_pcb*tcp_new(void),正常建立连接标志后返回建立的pcb。
tcp_bind():
用于绑定本地的IP地址和端口号,用户可以将其绑定在一个任意的本地IP地址上,它也只能在函数tcp_new()调用之后才能调用。
它的原型是err_ttcp_bind(structtcp_pcb*pcb,structip_addr*ipaddr,u16_tport),正确绑定了制定连接时返回OK。
ipaddr绑定的是IP地址,port绑定的是本地的端口号。
tcp_accept():
当处于监听的连接与一个新来的连接连接上后,该函数指定的回调函数将会被调用。
通常在tcp_listen()函数调用之后调用。
其原型为:
voidtcp_accept(structtcp_pcb*pcb,
err_t(*accept)(void*arg,
structtcp_pcb*newpcb,
err_terr));
tcp_listen():
当一个正在请求的连接被接收时,由tcp_accept()函数制定的回调函数将会被调用。
调用本函数前,必须首先调用函数tcp_bind()来绑定一个本地的IP地址和端口号。
原型是:
structtcp_pcb*tcp_listen(structtcp_pcb*pcb),pcb指将要进去监听状态的连接。
tcp_listen_with_backlog():
该函数用于限制在监听队列中未处理的连接数量,通过参数backlog来实现。
tcp_connect():
请求参数pcb指定的连接连接到远程主机,并发送打开连接最初的SYN段,函数tcp_connect()调用后立即返回,并不等待连接一定要正确建立。
如果正确建立,它可以直接调用第四个参数指定的函数(connected参数)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子信息 科学 技术 毕业论文 基于 LwIP 嵌入式 网络 终端 设计