毕业设计(论文)基于uip协议的WEB服务器的软件设计

上传人:仙*** 文档编号:31996508 上传时间:2021-10-13 格式:DOC 页数:20 大小:327.51KB
收藏 版权申诉 举报 下载
毕业设计(论文)基于uip协议的WEB服务器的软件设计_第1页
第1页 / 共20页
毕业设计(论文)基于uip协议的WEB服务器的软件设计_第2页
第2页 / 共20页
毕业设计(论文)基于uip协议的WEB服务器的软件设计_第3页
第3页 / 共20页
资源描述:

《毕业设计(论文)基于uip协议的WEB服务器的软件设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于uip协议的WEB服务器的软件设计(20页珍藏版)》请在装配图网上搜索。

1、中南林业科技大学本科毕业设计 基于uip协议的WEB服务器的软件设计1 引言目前,随着无线网络技术的不断发展,物联网时代呼之欲出。物联网既是将所有智能设备联入互联网,充分利用互联网覆盖范围极其广泛的优势,在世界各地也能轻松实现对这些智能设备的控制。大型设备的网络控制基本采用PC技术实现,但是物联网时代联入互联网的更多的是小型的、普通的生活用品,如洗衣机,电饭煲,电灯等。若都用pc控制那成本必然不敢想象,正是基于此,只有考虑成本更小的嵌入式技术。基于51单片机的嵌入式控制系统就是一个很经济实惠的解决方案。在PC领域,通过TCP/IP协议就可以轻松实现互联网通信。但出于压缩成本的原因,嵌入式系统的

2、硬件资源就远远比不上PC,像在基于51单片机的控制系统集成TCP/IP也成了奢望。这样一来,如何在有限的硬件资源下实现互联网通信变成了主要的研究问题。本毕业设计课题“基于uip协议的WEB服务器的软件设计”,目的就是要设计一个WEB服务器,通过IE浏览器可远程浏览访问单片机。软硬结合,追求成本更小,更经济实用的嵌入式控制系统,为实现物联网时代提供更多选择。2 硬件系统硬件电路部分,本设计选用最为常见的ATMEL公司开发的高性能8位单片机AT89C51作为嵌入式系统的微处理器,通过网络控制芯片RTL8019AS将嵌入式系统与Interact相连接。其硬件系统总框架如图1所示。2.1 主控芯片AT

3、89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,内含4 k的可反复擦写的只读程序存储器(PEROM)和128 byte的随机数据存储器(RAM)。2.1.1 主要特性与MCS-51 兼容寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路2.1.2 管脚说明VCC:供电电压。GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定

4、义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

5、并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口

6、,具体功能如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入,当振荡器复位器件时,要保持RST脚两个机器周期的高电平。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频

7、率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式

8、1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.2 网络芯片RTL8019AS网络接口芯片选用RTL8019AS(台湾REALTEK公司),它是一种全双工即插即用的以太网控制器,兼容RTL8019控制软件和NE2000 8bit或16bit的传输,支持UTP,AUI,BNC和PNP自动检测模式,支持外接闪烁存储器读写操作,支持I/O口地址的完全解码,具有LED指示功能。全二重功能能够模拟传播和接收在双绞

9、线到全二重以太网交换机,避免了由于以太网频道争夺特性导致的读出多路存取协议的问题。2.2.1 芯片主要特性 (1)支持以太网和IEFES02 3(10Base5,10Base2,10BaseT),软件支持8位16位的NE2000;(2)全双工,收发商时达到10Mbps的速度;(3)内置16kB的SRAM,用于收发缓冲,降低对主处理器的速度要求,支持816位数据总线,8个中断申请线以及16个IO基地址选择为大资源提供了宽松的环境;(4)可以使用8位ISA总线,与51系列单片机的接口简单,不用转换芯片;(5)性价比高。2.2.2 主要引脚功能引脚14,97100:中断控制INT0-7;引脚33:复

10、位控制;引脚34:使能控制角AEN,低电平有效;引脚6,17,70,89:数字电源,5V;引脚14,28,83,86:数字地GND;引脚47,57:模拟电源:5V;引脚44,52:模拟地;引脚5,713,15,16,1827:ISA地址总线;引脚3643,87,88,9095:ISA数据总线;引脚31:Boot ROM读操作控制;引脚32:Boot ROM写操作控制;引脚62:RX接收数据显示LED1脚;引脚63:TX发送数据显示LED2脚;引脚58,59:接收数据TP IN+/-;引脚45,46:发送数据TP OUT+/-;引脚50,51:外接晶体;引脚29:ISA I/O读使能;引脚30:

11、ISA I/O写使能;引脚77:9346连续数据输出;引脚78:9346连续数据输入;引脚79:9346连续数据时钟。2.2.3 RTL8019AS驱动的实现网卡的驱动程序屏蔽了底层硬件的处理细节,为上层软件提供了一个与硬件无关的接口。RTLS019AS的驱动程序将要发送的数据包按指定的格式写人芯片输人输出缓冲区中并启动发送命令,这时RTL8019AS自动把数据包转换成物理帧格式在物理信道上传输,反之Rn皇019As收到物理信号之后将其还原成数据,按指定的格式输人输出缓冲区中供应用程序来取用。其驱动程序主要包括:网卡的初始化,数据的发送和接受函数。具体的实现由如下函数来完成相应的功能:(1)v

12、oid initRTL8019(void) /RTL8019AS的初始化函数(2)unsigned char RTL8019dev_poll(void)/网卡的接收函数unsigned int packetLength;packetLength=RTL8019beginPacketRetreive();if(!packetLength)/N断是否有数据return 0;if(packetLength UIP_BUFSIZE)RTL8019endPacketRetreive();return 0;RTL8019retreivePacketData(uip_buf,packetLength);RT

13、L8019endPacketRetreive();return packetLength;(3)void RTL8019dev_send(void)/网卡发送函数RTL8019beginPacketSend(uip_len);if(uip_hnTOTAL_HEADER_LENGTH)RTL8019sendPacketData(trip_bur,uip_len);elseuip_kn -= TOTAL_HEADER_LENGTH;RTL8019sendPacketData(uip_buf,TOTAL_HEADER_LENGTH);RTL8019sendPacketData(unsigned ch

14、ar *)uip_appdata,uip_len);RTL8019endPaeketSend();2.3 硬件电路原理图(见附录1)3 Uip协议3.1 uip协议栈体系结构uIP协议是瑞典计算机科学研究所Adam Dunkels开发的一个适用于8/16 位机上的小型嵌入式TCP/IP 协议栈,简单易用、资源占用少是它的设计特点,它去掉了许多全功能协议栈中不常用的功能而保留网络通信所必要的协议机制,其设计重点放在IP、ICMP 和TCP 协议的实现上,将这三个模块合为一个有机的整体,而将UDP 和ARP 协议实现作为可选模块 。uIP0.9 的体系结构如图 2 所示。为了节省资源简化应用接口

15、,uIP0.9在内部实现上作了特殊的处理:减少处理函数的个数和调用次数,提高代码复用率以减少ROM占用;基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据;基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时,由uIP 内核唤起应用程序处理。这样,uIP 用户只须关注特定应用就可以了。传统的TCP/IP 实现一般要基于多任务处理环境,而大多数8 位机系统不具备这个条件;应用程序主动参与部分协议栈功能的实现(如TCP的重发机制 数据包分段和流量控制),由uIP 内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应

16、用接口使得这些实现较为简单。3.2 uip的设备程序接口uIP 内核中有两个函数直接需要底层设备驱动程序的支持。一个是uip_input()。当设备驱动程序从网络层收到一个数据包时要调用这个函数,设备驱动程序必须事先将数据包存放到uip_buf中,包长放到uip_len 然后交由uip_input()处理。当函数返回时,如果uip_len不为0,则表明有带外数据(如SYN ACK 等)要发送,当需要ARP支持时,还需要考虑更新ARP 表或发出ARP 请求和回应。示例如下:#define BUF (struct uip_eth_hdr *)&uip_buf0)uip_len = ethernet

17、_devicedriver_poll(); /接收以太网数据包/(设备驱动程序)if(uip_len0) /收到数据 if(BUF-type = = HTONS(UIP_ETHTYPE_IP) /是IP包吗 uip_arp_ipin(); /去除以太网头结/构更新ARP表 uip_input(); /IP包处理if(uip_len0) /有带外回应数据uip_arp_out(); /加以太网头结构在主动/连接时可能要构造ARP请求ethernet_devicedriver_send(); /发送数据到以太网/(设备驱动程序) else if (BUF-type = = HTONS(UIP_ET

18、HTYPE_ARP) /是ARP请求包 uip_arp_arpin(); /如是是ARP回应更新ARP表/请求 构造回应数据包 if(uip_len0) /是ARP请求 要发送回应ethernet_devicedriver_send(); /发ARP回应到以太网上 另一个需要驱动程序支持的函数是uip_periodic(conn)。这个函数用于uIP内核对各连接的定时轮循,因此需要一个硬件支持的定时程序周期性地用它轮循各连接。一般用于检查主机是否有数据要发送,如有,则构造IP 包。使用示例如下:for(i=0 ; i 0) uip_arp_out(); ethernet_devicedrive

19、r_send(); 从本质上来说 ,uip_input()和uip_periodic()在内部是一个函数,即uip_process(u8t flag) 。UIP的设计者将uip_process(UIP_DATA)定义成uip_input(),而将uip_process(UIP_TIMER)定义成uip_periodic()。因此从代码实现上来说是完全复用的。3.3 uip的应用程序接口为了将用户的应用程序挂接到uIP中,必须将宏UIP_APPCALL()定义成实际的应用程序函数名。这样,每当某个 uIP 事件发生时,内核就会调用该应用程序进行处理。如果要加入应用程序状态的话,必须将宏UIP_A

20、PPSTATE_SIZE 定义成应用程序状态结构体的长度,在应用程序函数中,依靠uIP 事件检测函数来决定处理的方法。另外可以通过判断当前连接的端口号来区分处理不同的连接。下面的示例程序是一个Web 服务器应用的框架:#define UIP_APPCALL uip51_appcall#define UIP_APPSTATE_SIZE sizeof(struct uip51app_state)struct uip51app_state unsigned char *dataptr; unsigned int dataleft;void uip51_initapp /设置主机地址u16_t ipa

21、ddr2;uip_ipaddr(ipaddr 202 120 127 192 );uip_sethostaddr(ipaddr);uip_listen(HTTP_PORT); /HTTP WEB PORT(80);void uip51_appcall(void) struct uip51app_state *s; s = (struct uip51app_state *)uip_conn-appstate;/获取当前连接状态指针 if(uip_connected() /有一个客户机连上if(uip_newdata()|uip_rexmit() /收到新数据或需要重发 if(uip_datale

22、n()0) if(uip_conn-lport = = 80) /收到GET HTTP请求 update_table_data(); /根据电平状态 /数据表动态生成网页 s-dataptr=newpage; s-dataleft=2653; uip_send(s-dataptr s-dataleft);/发送长度为2653B的网页 if(uip_acked() /收到客户机的ACK if(s-dataleftuip_mss()&uip_conn-lport = = 80)/发送长度最大段长时 s-dataptr+=uip_conn-len; /继续发送剩下的数据 s-dataleft-=ui

23、p_conn-len; uip_send(s-dataptr s-dataleft); return;if(uip_poll() /将串口缓存的数据复制到电平状态数据表return;if(uip_timedout()| /重发确认超时uip_closed()| /客户机关闭了连接uip_aborted() /客户机中断连接return; 4 WEB服务器软件设计4.1 WEB服务器原理Web服务器和客户端浏览器问的通信采用HTTP协议。嵌入式系统经常需要根据用户的指令,采集系统的当前数据信息传送给客户端浏览器,为实现这种客户端浏览器和Web服务器的动态交互,需要在服务器端采用通用网关接口CGI

24、(Common Gateway Interface)技术。CGI是一个在服务器上运行的程序,它分析处理用户发送到服务器上的数据信息,完成动态文件资源的创建和处理,再将用户信息返回给客户端。Web服务器初始化完成后。服务器等待客户端的连接请求,客户端浏览器输入服务器的IP地址后发一个物理地址解析协议(ARP)请求包,服务器收到后进行应答。客户端收到应答包后发送超文本传输协议包,服务器收到HTTP包后开始建立与客户端的TCP连接并作出对此包的响应。客户端收到响应包后即断开连接,服务器侦测到客户端断开了连接也同时断开连接。4.2 WEB服务器数据处理流程当系统的网卡接收到从网络传送来的数据包后,首先

25、分析目的地址是否与自己的物理地址一致,如果不一致,则丢弃此包:如果一致,则读取网络数据并分析。如果是ARP请求包,则转入ARP处理程序,并发送一个ARP应答包给客户端。如果是IP包,则交由IP层处理,同时去掉以太网首部4-51。IP层根据IP首部的协议字段分析该IP包属于什么数据包,如果是UDP包则,丢弃;如果是ICMP请求包,则发送一个ICMP应答包给客户端;如果是TCP包且IP地址和端口号正确,则接收数据包,数据解包后,将数据部分通过串13输出,控制MAX232现场设备。反之,如果现场通过串口发送数据到单片机,单片机将数据按照TCP协议格式打包,送入RTLS019AS,由RTL8019AS

26、将数据发送到局域网中。根据需要还可以在收到串151数据时,先完成数据预处理,再将处理好的数据送到局域网。具体的处理过程如图3所示。4.3 基于uip协议的WEB服务器的实现基于UIP协议的WEB服务器主程序采用中断加轮循的方式,在程序中轮循有无网络数据包输入。如有则调用uIP 的相关处理函数( 如上uip_input()使用示例),如无则检测定时轮循中断是否发生。这里将T2 设为uIP 的定时轮循计数器。在T2 中断中设置轮循标志,一旦主程序检测到这一标志就调用uip_periodic()轮循各连接(如上uip_periodic()使用示例)。Web 服务器首先打开 80 端口的监听,一旦有客

27、户机要求连上 uIP 内部会给它分配一个连接项接着等,收到客户机IE 浏览器发出的 GET HTTP 请求后,生成一幅新的网页发给客户机,因为这幅网页的大小已经超过uIP的最大段长(MSS),因此在uIP内核第一次实际只发出了MSS 个字节,在等到下一次轮循到该连接并且收到上次数据包的 ACK 时,发送剩下的网页数据。一旦用户关闭了浏览器,uIP也会自动检测到这一事件(应用程序中可以用uip_closed()来检测) 并且释放掉这个连接项。程序流程图如图4: 4.4 C源代码(见附录2)5 Proteus仿真在proteus中仿真硬件平台的方法很简单,按照原理图画好仿真电路图,编辑好各元器件属

28、性,在AT89C51上导入编译生成的HEX文件(见图5),再点击左下角的Proteus仿真开始按钮开始运行。在程序运行起来后,打开电脑端的DOS命令行窗口,ping程序中定好的单片机的ip(本程序中设置为:192.168.1.3 )。ping通后再打开ie浏览器,在地址栏输入ip回车,即可浏览到单片机WEB服务器发送过来的信息。具体仿真结果见图6,图7:图 5 在proteus仿真的单片机中导入hex程序文件图 6 PC端能ping通单片机图 7 在IE浏览器中可浏览单片机WEB服务器发过来的网页信息结论基于uip的WEB服务器的软件在Proteus仿真平台中通过了测试验证,整个嵌入式系统可完

29、成指定的功能。本系统无论从软件还是从硬件上都力争精简,成本低廉,很有实用价值。致谢完成毕业设计,必然要感谢一些人的。首先感谢的,当然是我的指导老师蒋峰副教授。自从选上题目后便开始主动联系我们,了解我们的学习及找工作的情况,极其关心我们自己对将来的规划,生怕出现一不考研二不找工作而无所事事前程无着落的情况。对于我们日后的安排,他就个人经验给予很多建议和帮助,这让我极为感动。另外,要感谢我的室友兼搭档,我们都选择了蒋副的课题,很多东西都不是很懂,一起做毕业设计,遇到难题一起苦恼,解决问题一起欢呼。当然,自己也是要感谢的。为了这次毕业设计,查了很多资料,做了很多实验,虽苦,但确实学到了很多东西。首先

30、,学会查找资料这个不用说。一个项目确定下来后怎样才能更好更快速的完成?如果没有计划就会做的很盲目,时间进度无法把握,甚至会迷失不知道现在做到哪,下一步该做什么。分析任务,做好计划,一步步按计划执行才能事半功倍!另外,这次毕业设计让我印象最深刻的是自我解决问题。查阅资料多,方案也多,但实际操作起来总是有些问题不能圆满达到目的,有时是遇到一些自己不熟悉或者从没接触过的知识,这就得沉下心来慢慢学习,越是急切越慌乱;有时是系统软件问题,使用的软件版本不同,系统环境不一样就造成软件无法运行,硬件无法仿真等等,这事只有不断思考,不断地尝试,变通着做才有可能真正解决问题。毕业设计可以说是大学的最后一课吧,完

31、成了它就意味着大学就要划上句号了。不管这四年过得怎样,至少我真正尝试着做过,即使走出了校园,日后在工作岗位上需要学习的东西还很多很多。永远以一个新人的姿态接受一切新事物,不断学习不断充实,才能使自己将来在激烈的社会竞争中求得生存!参考文献1 Adam DunkelsuIP - a TCP/IP stack for 8- and 16-bitmicrocontrollers. EB/OL, 2002URL: 2 Brady JBuild your own 8051 web serverEB/OL,20023 ATAN18 Port 10/100 Base Ethernet Switch cont

32、roller20004REALTEKRTL8019AS datasheet,2000 5Marvell Semiconductor Inc8-Port DSP Fast Ethernet PHY6DOUGLASE COMER用TCP/IP进行网际互连电子工业出版社,20007徐爱钧单片机高级语言C51应用程序设计电子工业出版社8何立民单片机应用技术选编北京航空航天大学出版社9周炯槃等通信原理北京:北京邮电大学出版社(第二版)10谭敏生计算机文化基础长沙:湖南大学出版社(修订本)11马忠梅,籍顺心,张凯等单片机的C语言应用程序设计(第3版)12曹宇,魏丰,胡士毅用51单片机控制RTL8019AS

33、实现以太网通讯武汉华中科技大学控制科学与工程系测控所13Jeremy Bentam嵌入式系统Web-TCP/IP lean北机械工业出版社,200314胡汉才单片机原理及其接口技术M北京:清华大学出版社15Richard Stevens W. TCP/IP 详解,卷2:实现M北京:机械工业出版社,200116老古开发网,单片机与TCP/IP网络EB/OL17陈学泉,关宇东嵌入式TCP/IP协议单片机技术在网络通信中的应用J电子技术应用,2002(8):48-4918王春明嵌入式系统与以太网互连接口设计J南京理工大学学报,2002(增刊):145-14819Adam DunkelsuIP一个免费的TCP/IP栈瑞典计算机科学研究所,2003520ROBIN Burk,DAVIDB HorvathetalUNIX 技术大全InternetM,199821Behrouz A F ,Sophia C F. TCP/IP协议族M北京:清华大学出版社,2001附录1 :硬件系统原理图附录2 :基于uip协议的WEB服务器的软件设计 C代码源程序第 20 页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!