详解uIP TCPIP协议栈在51单片机上的设计实现

合集下载

TCPIP协议栈LwIP的设计与实现(可编辑)

TCPIP协议栈LwIP的设计与实现(可编辑)

TCPIP协议栈LwIP的设计与实现TCP/IP 协议栈 LwIP 的设计与实现Design and Implementation of the LwIPTCP/IP Stack[瑞典]Adam Dunkels著************翻译焦海波marsstory99@hotmailSwedish Institute of Computer ScienceFebruary 20, 2001TCP/IP 协议栈 LwIP 的设计与实现 - 1 -摘要LwIP 是 TCP/IP 协议栈的一个实现。

它的目的是减少内存使用率和代码大小,使 LwIP 适用于资源受限系统比如嵌入式系统。

为了减少处理和内存需求,LwIP 使用不需要任何数据复制的经过裁剪的 API。

本文描述了 LwIP 的设计与实现。

描述了在协议栈实现中以及像内存与缓冲管理这样的子系统中使用的算法和数据结构。

本文还包括 LwIP 的参考手册以及使用LwIP 的代码例子。

1 简介昀近几年,人们对计算机互联以及计算机无线网络支撑设备的兴趣一直不断的增长。

计算机逐渐与日常使用的设备无缝集成在了一起,并且价格一直在下降。

与此同时,无线网络技术比如蓝牙(Bluetooth)[HNI+98]及 IEEE 802.11b WLAN[BIG+97]正逐渐的出现在人们的视野中。

这些新技术的出现,在许多诸如卫生保健、安全保密、运输及工业处理等领域提供了一个非常诱人的应用前景。

一些像传感器一类的轻便设备可以连入互联网,以便随时随地进行监控。

在过去的近十年的时间里,互联网技术被证明拥有足够的灵活性以适应不断变化的网络环境。

从原始的 ARPNET 一类的低速网络发展起来的互联网,发展到今天,在带宽和误码率方面拥有巨大差异的光纤连接技术已经使互联网实现了巨大的跨越。

相当多的以互联网为基础的应用技术被开发出来。

因此,未来的无线网络??使用已经存在的互联网技术成为人们的首选。

基于ARM芯片的简单TCP IP协议栈设计与实现说明书

基于ARM芯片的简单TCP IP协议栈设计与实现说明书

The Design and Implementation of Simple TCP/IP StackBased on ARM ChipHOU QunSchool of Physics and Electronic Information Engineering,Jianghan University, Wuhan, ChinaAbstract: In recent years, research on connecting embedded system with Internet has become one of the fo-cuses in applications of embedded system. The implementation of TCP/IP stack in embedded system is the basis of the research. This paper design a tiny TCP/IP stack suitable for embedded systems with the most extensive 32 embedded RISC processor , high performance ARM7TDMI system. After the standard TCP/IP protocol has been studied and analyzed, according to the characteristic of embedded system and the simplify-ing principles, some relevant protocols are picked up, simplified and designed. To make sure the essential functions and the irrelevant functions of each protocol, these protocols are analyzed one by one. At last,the implementation models of each protocol are designed.In addition,the method of the network configuration for embedded system is present in this paper. In this paper, a solution with low-cost for networking on em-bedded system is obtained. Experiments show that it is promising in many fields, such as remote data collect-ing, industrial controlling.Keywords: embedded system; TCP/IP protocol stack; UCOSⅡoperating system基于ARM的精简TCP/IP协议栈设计与实现侯 群江汉大学物理与信息工程学院,武汉,中国,430056摘 要:嵌入式系统的Internet网络化的研究与应用是近几年来嵌入式应用领域的一个研究热点。

TCP_IP协议栈开发

TCP_IP协议栈开发

图4
UDP_Server服务程序和1℃P-Server服务程序
在本系统中,UDPLserver任务实现的功能就是
回送数据,也就是将对方发来的数据直接回送这些
数据。通过此种功能就可以验证UDP连接是否正
常。
主要函数功能与模块介绍 tcp—rcve()函数
是TCP任务中的核心,它完成的主要功能是建立
TCP状态机,完成TCP机制中的编号确认、运输
2 在51微控器上运行pC/oS一Ⅱ 操作系统
要在51微控器对上运行肚c/()孓Ⅱ操作系统需 要对肚C/o孓Ⅱ操作系统改动以下几个内容。①改 写最简单的oS—CPU.H#define oS—TASK— SW(),oSCtxSw();②在改写oS—CPU—C.C 中,唯一必要的函数是oSTaskStkInit(),其它 函数必须得声明但没必要包含代码。
Keywords—:/O孓Ⅱoperation system TCP/IP pmtocol 51 micro.∞mroller
1 系统介绍
系统功能介绍 此方案是在51微控器下运行 肛C/o孓Ⅱ操作系统,实现ARP、IP、TCP、UDP 等TCP/IP协议栈。最终实现的是网络中Server 端的功能。在协议栈中共建立了三个任务:网卡接 收任务,用来实现查询网卡,判断是否有数据到 达;TCP—Server任务,用来与客户端建立TCP连 接;uDP_server任务,用来与客户端建立UDP连 接。三个任务中,TCP-Server任务的优先级最高, 三者通过肚C/o孓Ⅱ中提供的信号量功能实现任务 之间的切换。本系统的硬件目标板上的核心芯片使 用的是51微控器,能较好的满足“C/o孓Ⅱ操作系 统的实时性,多任务的要求。网络接口芯片使用 RTL8019AS。

uip 协议栈代码

uip 协议栈代码

uip 协议栈代码UIP协议栈是一种用于嵌入式系统的TCP/IP协议栈,它的设计旨在提供高效、灵活和易于移植的网络通信解决方案。

本文将介绍UIP 协议栈的基本原理、主要特点以及应用领域。

UIP协议栈的基本原理是将TCP/IP协议分成多个层次,每个层次负责不同的功能。

这些层次包括网络接口层、网络层、传输层和应用层。

网络接口层负责处理硬件接口和数据包的发送与接收,网络层负责处理IP地址和路由,传输层负责提供可靠的数据传输服务,应用层负责提供各种网络应用服务。

UIP协议栈的主要特点之一是它的代码量非常小。

由于嵌入式系统通常具有有限的资源,如处理器速度和存储容量,因此UIP协议栈的设计目标是尽量减小占用的资源。

为了实现这一目标,UIP协议栈使用了一些优化技术,如数据压缩和代码精简等。

这使得UIP协议栈非常适合于低功耗设备和资源受限的系统。

另一个重要特点是UIP协议栈的可移植性。

由于UIP协议栈是使用C语言编写的,它可以在多种嵌入式系统平台上运行。

UIP协议栈提供了一些通用的接口和配置选项,以便用户可以根据自己的需求进行定制。

这使得UIP协议栈可以广泛应用于各种嵌入式系统,如传感器网络、工业控制系统和物联网设备等。

UIP协议栈还具有良好的性能和可靠性。

它使用了一些高效的算法和机制,如快速重传和拥塞控制等,以提高数据传输的速度和可靠性。

同时,UIP协议栈还支持一些高级功能,如安全性、多播和多路径传输等,以满足不同应用的需求。

UIP协议栈广泛应用于各种嵌入式系统领域。

在传感器网络中,UIP 协议栈可以实现传感器节点之间的通信,用于数据采集和监控。

在工业控制系统中,UIP协议栈可以实现远程监控和控制,用于实时数据传输和设备管理。

在物联网设备中,UIP协议栈可以实现设备间的互联互通,用于智能家居和智能城市等应用。

UIP协议栈是一种高效、灵活和易于移植的TCP/IP协议栈,适用于各种嵌入式系统。

它具有小代码量、可移植性、良好的性能和可靠性等特点,广泛应用于传感器网络、工业控制系统和物联网设备等领域。

一个月写了一个连51单片机都可以轻松联网的协议栈,FuIP,有教程,免费给大家我爱单片机

一个月写了一个连51单片机都可以轻松联网的协议栈,FuIP,有教程,免费给大家我爱单片机

⼀个⽉写了⼀个连51单⽚机都可以轻松联⽹的协议栈,FuIP,有教程,免费给
⼤家我爱单⽚机
以前买了个ENC28J60模块,想⽤单⽚机联⽹,结果搜寻了半天,⽤的最⼴泛的是uIP,不过这
个东西太多内容,⼏⼗K的ROM,⽽且胡你糊涂移植了能勉强⽤,也有点模糊。

资料⼤多是⽹
友留下的,遇到问题⾃⼰想改都⽆从下⼿,摸索了很久,想主动访问服务器,虽然能了,但还
是不理想。

于是⾃⼰潜⼼研究了⼀下,把每个过程都⼿画了⼀遍,以加强理解。

⾃⼰每天加班写了程序,⽤的是覆盖法,替换keil 4,可以直接使⽤STC头⽂件。

很简单的,由于⾃⼰也是想⽤,所以为单⽚机联⽹控制设备考虑到⼤家的基础,所以只要你
会51单⽚机,我给的视频教程,不到三分钟你就知道怎么no了。

当然不局限于51单⽚机,AVR
STM32都可以,还有就是
keil4 STC替换⽂件 keil4 STC.rar (396 K) 下载次数:48
FuIP 1.2源码 FuIP v1.2.zip (1304 K) 下载次数:85
如果要积分可以到免费下载地址:/bbs/
下⾯是演⽰视频
都是从51学习过来的,充分考虑了8位 16位 32位单⽚机平台特性,采⽤最易移植写法,因此特
别适合任何有单⽚机基础的⽹友轻松控制家⽤电器等,其他扩展 平台会逐步完善。

您还没有安装flash播放器,请点击这⾥安装
V1.2版本⽀持与特性:
1,⽀持ARP请求、应答(获取⽬的IP的MAC)
2,⽀持ICMP_Ping请求,应答(ping命令)
3,⽀持TCP主动连接,断开,被动连接,断开,数据发送
4,⽀持UDP发送,接收数据。

工控tcpip协议详解?

工控tcpip协议详解?

工控TCP/IP协议指的是应用于工业控制系统中的TCP/IP协议栈。

TCP/IP协议是一组用于在计算机网络之间进行通信的协议,包括传输控制协议(TCP)和互联网协议(IP)。

在工业控制领域,使用TCP/IP协议可实现设备之间的数据交换和通信。

下面是对工控TCP/IP协议的一些详解:1. TCP/IP协议栈:工控TCP/IP协议栈是基于TCP/IP协议设计的专为工业控制领域而优化的协议栈。

它包含多个协议层,包括物理层、数据链路层、网络层、传输层和应用层。

2. 数据链路层:工控TCP/IP协议使用以太网作为主要的数据链路层协议。

它使用以太网帧格式来封装和传输数据。

3. 网络层:工控TCP/IP协议使用互联网协议IP作为网络层协议。

IP负责数据的路由和传递,并实现了IPv4或IPv6地址的分配和识别。

4. 传输层:工控TCP/IP协议使用传输控制协议TCP或用户数据报协议UDP作为传输层协议。

TCP提供面向连接的、可靠的数据传输,而UDP提供无连接的、不可靠的数据传输。

5. 应用层:工控TCP/IP协议的应用层包括一系列协议和服务,用于实现特定的应用功能,如Modbus TCP、OPC UA、SNMP和HTTP等。

6. 网络拓扑:工业控制系统中的网络拓扑通常采用层次化结构,包括控制网络、现场总线和设备级网络。

工控TCP/IP协议可在这些网络之间建立通信连接。

7. 安全性:由于工业控制系统对安全性的要求较高,工控TCP/IP协议通常会引入安全机制,如虚拟私有网络(VPN)、防火墙和加密技术,以保护通信数据的安全性和保密性。

工控TCP/IP协议提供了在工业控制系统中实现数据传输和通信的基础。

它广泛应用于工业自动化、远程监控和设备管理等领域,为工控设备的互联和集成提供了标准化的解决方案。

基于嵌入式网络接口的精简TCPIP协议栈的设计及实现

基于嵌入式网络接口的精简TCPIP协议栈的设计及实现

基于嵌入式网络接口的TCP/IP协议栈的设计及实现摘要:根据嵌入式系统及其接入网络的特点,对标准TCP/IP协议栈进行裁减,设计了一种适用于8位微控制系统的嵌入式TCP/IP协议栈。

将其移植到UCOSII上并与现有协议栈uIP进行对比测试。

证明了其实用性。

关键词:TCP/IP协议栈嵌入式网络接口UCOSII uIP引言网络化是现代电子设备普遍的特点,嵌入式系统也不例外。

使嵌入式设备接入网络,扩宽了设备的通信范围,也使操作者更加便于操控设备。

但是,嵌入式系统具有处理能力有限、存储资源少、应用场合单一等特点,标准的TCP/IP协议栈显然不能直接运用于8位的微控制系统中。

本文量体裁衣,设计一种精简的TCP/IP协议栈,主要包括ARP、ICMP、IP、UDP等协议。

本协议栈的测试平台配置如下:STC12C5A60S2单片机、62256外部RAM存储器、RTL8019AS网络芯片、12M晶振。

此协议栈可方便地移植到嵌入式实时操作系统UCOSII上,作为其一个任务,控制网络数据的收发。

1 TCP/IP协议的设计图1 TCP/IP分层模型一些常用协议在TCP/IP分层模型中所处的位置如图1所示。

根据TCPIP协议分层的特点,在编写代码的过程中,可以围绕三个特点来设计:第一,由于协议栈每层都由头部和数据部分组成,而头部又由多个项组成,所以应将各层头部封装成为结构体形式。

第二,当网络接口收到数据时,需要向上层传递或者在本层处理,这就需要判断数据包的类型。

比如,当硬件接口收到数据时,需要对数据包类型进行判断,如果是IP包,则向上传递给IP层,如果是ARP包则调用处理ARP包的函数。

第三,当网络接口发送数据时,数据从协议栈上层到下层,层层封装,最后由硬件接口发送。

这就需要有对每层进行封装的函数。

最后剩下的是数据的解封装和网络芯片驱动程序,数据的解封装相对简单,可在一个统一的函数中完成,而网络芯片驱动程序根据使用的芯片类型设计初始化、发送、接收数据三个函数即可。

网络协议栈解析与实现

网络协议栈解析与实现

网络协议栈解析与实现网络协议栈是计算机网络中的一个重要概念,它是指一系列网络协议的集合,用于实现网络通信。

网络协议栈的设计和实现对于网络的性能和稳定性有着重要的影响。

本文将对网络协议栈的概念、结构以及实现原理进行详细的解析和讨论。

一、网络协议栈的概述网络协议栈是计算机网络通信的基础,它由多个协议层次组成,每个层次负责特定的功能和任务。

常用的网络协议栈模型包括OSI七层模型和TCP/IP四层模型。

其中,OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;而TCP/IP四层模型包括网络接口层、网络层、传输层和应用层。

不同的协议层次之间通过接口和协议进行通信和交互,完成数据传输和通信任务。

二、网络协议栈的结构网络协议栈的结构分为底层和应用层两部分。

底层包括物理层、数据链路层和网络层,负责实现数据传输和路由选择等功能。

应用层包括传输层和应用层,负责实现数据分段和最终的应用数据传输。

底层和应用层之间通过接口和协议进行通信和交互。

在底层中,物理层负责将信息从比特流转化为物理信号,并通过物理介质进行传输。

数据链路层负责通过帧封装和解封装将原始数据分割成小的数据块,并添加控制信息,保证数据的可靠性和完整性。

网络层负责实现数据包的传输和路由选择,将数据包从源地址传输到目的地址。

在应用层中,传输层负责数据的分段和重组,保证数据的可靠传输。

应用层负责将数据传输到最终的应用程序中,并处理相应的业务逻辑。

三、网络协议栈的实现原理网络协议栈的实现借助于操作系统中的网络协议栈软件模块。

常见的网络协议栈实现包括传统的套接字接口实现和现代的DPDK(Data Plane Development Kit)实现。

传统的套接字接口实现是基于操作系统内核的网络协议栈,通过套接字API提供网络通信功能。

套接字接口实现相对简单,但性能较低,无法满足高性能网络通信的需求。

而DPDK是一种用户态网络协议栈实现,它将网络协议栈移植到用户态,利用硬件加速技术提高网络通信的性能和吞吐量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解uIP TCPIP协议栈在51单片机上的设计实现一引言随着信息技术的不断发展,以及人们对日常生活舒适度、方便度要求的提高,信息家电、智能仪表等产品越来越频繁的出现在我们的生活当中;人们也越来越热衷于把家电、仪表等设备连接到Internet 中,从而可以方便、及时的对它们进行远程察看、远程控制。

把这些设备接入Internet ,就需要考虑TCP/IP 网络协议的实现。

51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。

51单片机是基础入门的一个单片机,还是应用最广泛的一种。

需要注意的是52系列的单片机一般不具备自编程能力。

本文将简要描述uIP的实现方法,分析uIP协议栈的应用接口,并讨论如何将其应用到51系列单片机上。

二uIP协议栈的实现方法简述uIP协议栈主要提供了三个函数供系统底层调用。

即uip_init(),uip_input()和uip_periodic()。

其与应用程序的主要接口是UIP_APPCALL()。

ip_init()是系统初始化时调用的,主要初始化协议栈的侦听端口和默认所有连接是封闭的。

当网卡驱动收到一个输进包时,将放进全局缓冲区uip_buf中,包的大小由全局变量uip_len约束。

同时将调用uip_input ()函数,这个函数将会根据包首部的协议处理这个包和需要时调用应用程序。

当uip_input ()返回时,一个输出包同样放在全局缓冲区uip_buf里,大小赋给uip_len.假如uip_len是0,则说明没有包要发送。

否则调用底层系统的发包函数将包发送到网络上。

uIP周期计时是用于驱动所有的uIP内部时钟事件。

当周期计时激发,每一个TCP连接都会调用uIP函数uip_periodic()。

类似于uip_input()函数。

uip_periodic()函数返回时,输出的IP包要放到uip_buf中,供底层系统查询uip_len的大小发送。

uIP实现了TCP/IP协议集的四个基本协议:ARP地址解析协议,IP网际互联协议,ICMP 网络控制报文协议和TCP传输控制协议。

为了在8位16位处理器上应用,uIP协议栈在各层协议实现时采用有针对性的方法,保持代码大小和存储器使用量最小。

1 实现ARP地址解析协议时为了节省存储器,ARP应答包直接覆盖ARP请求包。

2 实现IP网络协议时对原协议进行了极大的简化,它没有实现分片和重组。

3 实现ICMP网络控制报文协议时,只实现echo(回响)服务。

uIP在生成回响报文时并不重新分配存储器空间,而是直接修改echo请求报文来生成回响报文。

将ICMP类型字段从"echo"类型改变成"echo reply"类型,重新计算校验和修改校验和字段。

4 uIP里的TCP没有实现发送和接收数据的滑动窗口。

每个TCP连接的状态由uip_conn 结构保存,uip_conn结构包括当地和远端的TCP端口编号,远程主机的IP地址,重发时间值,上一段重发的编号,和连接的段的最大尺寸等信息。

一个uip_conn结构数组用于保存所有的连接,数组的大小为支持的同时连接的最大数量。

为了减少储存器的使用量,在处理重发时uIP并不缓存发送的数据包,而是由应用程序在需要重发时重新生成发送的数据。

三uIP协议栈的接口uIP协议栈为了具有最大的通用性,在实现时将底层硬件驱动和顶层应用层之外的所有协议集"打包"在一个"库"里。

协议栈通过接口与底层硬件和顶层应用"通信".通过这种方式,uIP具有极高的通用性和独立性,移植到不同系统和实现不同的应用都很方便,很好的体现了TCP/IP协议平台无关性的特点。

uIP协议栈与系统底层和应用程序之间的接口关系如图(一)所示:1 uIP协议栈与系统底层的接口uIP与系统底层的接口包括与设备驱动的接口和与系统定时器的接口两类。

1.1 uIP与设备驱动接口uIP通过函数uip_input()和全局变量uip_buf、uip_len来实现与设备驱动的接口。

uip_buf 用于存放接收到的和要发送的数据包,为了减少存储器的使用,接收数据包和发送数据包使用相同的缓冲区。

uip_len表明接收发送缓冲区里的数据长度,通过判断uip_len的值是否为0来判断是否接收到新的数据,是否有数据要发送。

当设备驱动接收到一个IP包并放到输入包缓存里(uip_buf)后,应该调用uip_input()函数。

uip_input()函数是uIP协议栈的底层入口,由它处理收到的IP包。

当uip_input()返回,若有数据要发送,则发送数据包放在包缓冲区里。

包的大小由全局变量uip_len指明。

如果uip_len是0,没有包要发送;如果uip_len大于0则调用网络设备驱动发送数据包。

1.2 uIP与系统计时接口TCP/IP协议要处理许多定时事件,例如包重发、ARP表项更新。

系统计时用于为所有uIP 内部时钟事件计时。

当周期计时激发,每一个TCP连接应该调用uIP函数uip_periodic()。

TCP连接编号作为参数传递给uip_periodic()函数。

uip_periodic()函数检查参数指定的连接的状态,如果需要重发则将重发数据放到包缓冲区(uip_buf)中并修改uip_len的值。

当uip_periodic()函数返回后,应该检查uip_len的值,若不为0则将uip_buf缓冲区中的数据包发送到到网络上。

ARP协议对于构建在以太网上的TCP/IP协议是必须的,但对于构建与其他网络接口(例如:串行链路)上的TCP/IP则不是必需的。

为了结构化的目的,uIP将ARP协议作为一个可添加的模块单独实现。

因此,ARP表项的定时更新要单独处理。

系统定时器对ARP表的更新进行定时,定时时间到则调用uip_arp_timer()函数对过期表项进行清除。

2 uIP协议栈与应用程序的接口应用程序作为单独的模块由用户实现,uIP协议栈提供一系列接口函数供用户程序调用。

用户需将应用层入口程序作为接口提供给uIP协议栈,定义为宏UIP_APPCALL()。

uIP在接收到底层传来的数据包后,若需要送上层应用程序处理,它就调用UIP_APPCALL()。

uIP提供给应用程序的接口函数按功能描述如下:2.1 接收数据接口:应用程序利用uip_newdata()函数检测是否有新数据到达。

全局变量uip_appdata指针指向实际数据。

数据的大小通过uip_datalen()函数获得。

2.2 发送数据接口:应用程序通过使用uIP函数uip_send()发送数据。

uip_send()函数采用两个参数;一个指针指向发送数据起始地址,另一个指明数据的长度。

2.3 重发数据接口:应用程序通过测试函数uip_rexmit()来判断是否需要重发数据,如果需要重发则调用uip_send()函数重发数据包。

2.4 关闭连接接口:应用程序通过调用uip_close()函数关闭当前连接。

2.5 报告错误接口:uIP提供错误报告函数检测连接中出现的错误。

应用程序可以使用两个测试函数uip_aborted()和uip _timedout()去测试那些错误情况。

2.6 轮询接口:当连接空闲时,uIP会周期性地轮询应用程序,判断是否有数据要发送。

应用程序使用测试函数uip_poll()去检查它是否被轮询过。

2.7 监听端口接口:uIP维持一个监听知名TCP端口的列表。

通过uip_listen()函数,一个新的监听端口打开并添加到监听列表中。

当在一个监听端口上接收到一个新的连接请求时,uIP产生一个新的连接和调用该端口对应的应用程序。

2.8 打开连接接口:在uIP里面通过使用uip_connect()函数打开一个新连接。

这个函数打开一个新连接到指定的IP地址和端口,返回一个新连接的指针到uip_conn结构。

如果没有空余的连接槽,函数返回空值。

2.9 数据流控制接口:uIP提供函数uip_stop()和uip_restart()用于TCP连接的数据流控制。

应用程序可以通过函数uip_stop()停止远程主机发送数据。

当应用程序准备好接收更多数据,调用函数uip_restart()通知远程终端再次发送数据。

函数uip_stopped ()可以用于检查当前连接是否停止。

四uIP在51系列单片机上的应用51系列单片机具有悠久的历史和广泛的应用,许多公司推出了具有更高的处理速度的51内核的8位单片机,被应用在各个领域内。

因此使用uIP这种免费的TCP/IP协议栈解决由51内核的单片机构建的低端嵌入式设备的网络接入问题具有一定的代表性。

下面将讨论利用uIP协议栈在51单片机上实现简单的WEB SERVER,远端用户可以通过浏览器访问存储在单片机系统上的WEB页面。

硬件平台结构如图(二)所示:其中单片机选用PHILIPS公司的P89C51RD2,64K字节的串行EEPROM可以用于存储WEB页面。

采用ISA接口的以太网接口芯片RTL8019AS连接到以太网上。

通过MAX232实现与PC机的串行连接,可以显示调试信息。

uIP协议栈是以函数库的形式提供的,本身不提供底层网络驱动和上层应用程序。

因此为了完成指定的功能,开发者必须添加以下几个模块:底层RTL8019AS网卡芯片的驱动、应用层基于HTTP协议的WEB SERVER的实现、系统定时器。

RTL8019AS的驱动主要包括三部分:init_8019as()函数完成网卡芯片的上电初始化,包括设定网卡物理地址,设定收发缓冲区位置和大小等;eth_send()函数完成数据的发送;eth_rcve()函数完成以太网数据的接收。

底层网络设备驱动程序与uIP协议栈通过两个全局变量进行接口:变量uip_buf为收发缓冲区的首地址;uip_len为收发的数据长度。

eth_send ()函数将uip_buf里的uip_len长度的数据发送到以太网上。

eth_rcve()函数将接收到的数据存储到uip_buf指定的缓冲区中,同时修改uip_len的值。

uIP提供的源代码中包括一个基于HTTP协议的WEB SERVER示例,该WEB SERVER通过简单的文件系统在数据存储器中存储静态页面,同时具有CGI功能。

用户可以参照该示例以及uIP提供给应用程序的接口函数说明实现自己的应用层功能。

相关文档
最新文档