uip协议栈
以太网及TCPIP通俗理解

1 以太网------EtherNet:---------------------------参考图解以太网最早由Xerox(施乐)公司创建,于1980年DEC、lntel和Xerox三家公司联合开发成为一个标准。
以太网是应用最为广泛的局域网,包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网,采用的是CSMA/CD访问控制法,它们都符合IEEE802.3。
IEEE 802.3标准IEEE802.3规定了包括物理层的连线、电信号和介质访问层协议的内容。
以太网是当前应用最普遍的局域网技术,它很大程度上取代了其他局域网标准。
如令牌环、FDDI和ARCNET。
历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。
常见的802.3应用为:10M: 10base-T (铜线UTP模式)100M: 100base-TX (铜线UTP模式)100base-FX(光纤线)1000M: 1000base-T(铜线UTP模式)2 UIP协议:uIP由瑞典计算机科学学院(网络嵌入式系统小组)的Adam Dunkels 开发。
其源代码由C 语言编写,并完全公开,uIP 的最新版本是1.0 版本,本指南移植和使用的版本正是此版本。
uIP协议栈去掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。
由于uIP协议栈专门为嵌入式系统而设计,因此还具有如下优越功能:1)代码非常少,其协议栈代码不到6K,很方便阅读和移植。
2)占用的内存数非常少,RAM 占用仅几百字节。
3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。
uip协议栈,下载

竭诚为您提供优质文档/双击可除uip协议栈,下载篇一:uip之udp应用笔记千兆网项目中,移植了uip到mcu中,采用udp通信方式,主要用来做一些控制协议的处理。
刚开始接手的时候,并没有做过网络方面的应用,而且对tcp/ip及udp通信又不太熟悉。
好在网上有一些文档,加上仔细阅读uip_process 代码,一边用抓包软件一边调试,总算把uip很好的应用了起来,而且还针对项目某些应用的特殊性,对uip源码进行了一些修改。
本文前半部分对uip源码的一些重要函数进行介绍,后半部分将对修改的部分做个记录,以备往后查阅。
本次使用的是uip-1.0,抓包软件用的wireshark1.6.7,这个软件真的很不错,居然支持gigevision,这点真的很意外。
一、一个完整的udp数据报文格式其实uip就是将你要发送到网络上的数据加上报头,好让它被成功发送到目的主机。
所以我们要先搞清楚一个完整的数据报文,才能搞清楚uip到底在做些什么。
ethernetheader:由目标mac和本机mac及type组成,共14byte,当目标mac全为ff时,表示是udp广播。
type=0x0800表示是ip。
在uip中,ethernetheader结构体定义如下:ipheader:0x45表示version=4,headerlength=20byte;0028表示ipheader+udpheader+userdata长度为40byte;6c14为包的id,每发一个包,这个id会自加1。
80的意义是timetolive,表示这个包的存活时间,路由每转发一次,就会对它自减1。
17表示通信协议类型为udp,4a0a为ipheader的校验码。
再后面就是源ip和目的ip地址了。
udpheader:0aaa表示srcport为2730;0f74表示dstprot为3956;14表示udpheader+userdata长度为20byte,c477表示udpheader的校验码,在一般的情况下,这个可以为0。
uIP协议栈在基于DSP以太网通信系统中的应用

岳世 为 尹 为 民
武汉 403) 3 0 3 ( 海军工程大学 电气与信息工程学院
摘
要
文章通过对 uP协议的简单分析介 绍 , 出了以太 网通信 系统整体硬 件平 台、 I 给 设计思路和软件 工作流程 。完
成 了 以太 网 控 制 器 硬 件 驱 动 的 开 发 和 嵌 入 式 uP 协 议 栈 的 移 植 , 给 出 了 面 向 D P 的 优 化 编 程 方 法 。 实 现 了 以 I 并 S
TMS 2 F 8 2 3 0 2 1 数字信பைடு நூலகம்处理器和 C 8 0 A以太网控制器为核心的局 域网络 D P端 的以太 网通信 。 S 90 S
关键词 uP S ; S 90 I ;D P C 8 0 A;以太 网 T 33 P 9 中 图分 类 号
Ap lc to fuI o o o t c p i a i n o P Pr t c lS a k Bas d o e n D S Et r tN e wo k Co m u c to ys e P he ne t r m ni a i n S t m
Ab t a t Th s a tceb s d o h r fa ay i n r d c i n o f t c s rc i ril a e n t e b i n l ssi t o u t f P s a k,g v s t e Et e n t e wo k c mmu ia i n e o u ie h h r e t r o n nc t o s s e h r wa e p a f r ,d sg e s a d s fwa ewo k f w.Th u h r a o y t m a d r lto m e in i a n o t r r l d o e a t o s c mp e e h a d r r e e e o me t h lt d t eh r wa ed i rd v lp n v
【原创】Contiki介绍及参考资料

1
-专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛
统,可以提供对本地串口终端、基于 VNC 的网络化虚拟显示或者 Telnet 的图形 化支持。 Contiki 系统内部集成了两种类型的无线传感器网络协议栈:uIP 和 Rime。 uIP 是一个小型的符合 RFC 规范的 TCP/IP 协议栈,使得 contiki 可以直接和 Internet 通信。uIP 包含了 IPv4 和 IPv6 两种协议栈版本,支持 TCP、UDP、ICMP 等协议,但是编译时只能二选一,不可以同时使用。Rime 是一个轻量级为低功 耗无线传感器网络设计的协议栈,该协议栈提供了大量的通信原语,能够实现从 简单的一跳广播通信,到复杂的可靠多跳数据传输等通信功能。
参考资料 Contiki 官方网站: Contiki Wiki: www.sics.se/contiki/wiki Contiki 源代码文档: /contiki-doxygen Contiki 代码下载: /projects/contiki/files/Contiki/ 或者使用 Git 工具下载 contiki 代码: git clone git:///gitroot/contiki/contiki Instant Contiki 开发环境: /projects/contiki/files/Instant%20Contiki 物联网开发论坛:
Cooja/MSPsim、文件系统 Coffee File system(CFS) 、shell 命令工具等,指出了 Contiki 的应用领域。最后给出了 Contiki 相关网站、教程和绍
Contiki 是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式 系统和无线传感器网络,由瑞典计算机科学学院(Swedish Institute of Computer Science)的 Adam Dunkels 和他的团队开发。Contiki 完全采用 C 语言开发,可移 植性非常好,对硬件的要求极低,能够运行在各种类型的微处理器及电脑上,目 前已经移植到 8051 单片机、 MSP430、 AVR、 ARM、 PC 机等硬件平台上。 Contiki 适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下 Contiki 只占用 约 2Kbytes 的 RAM 以及 40Kbytes 的 Flash 存储器。Contiki 是开源的操作系统, 适用于 BSD 协议,即可以任意修改和发布,无需任何版权费用,因此已经应用 在许多项目中。 Contiki 操作系统是基于事件驱动(Event-driven)内核的操作系统,在此内 核上,应用程序可以在运行时动态加载,非常灵活。在事件驱动内核基础上, Contiki 实现了一种轻量级的名为 protothread 的线程模型,来实现线性的、类似 于线程的编程风格。该模型类似于 Linux 和 windows 中线程的概念,多个线程共 享同一个任务栈, 从而减少 RAM 占用。 Contiki 还提供一种可选的任务抢占机制、 基于事件和消息传递的进程间通信机制。Contiki 中还包括一个可选的 GUI 子系
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协议栈,适用于各种嵌入式系统。
它具有小代码量、可移植性、良好的性能和可靠性等特点,广泛应用于传感器网络、工业控制系统和物联网设备等领域。
uip协议栈源码详解

uip协议栈源码详解UIP协议栈源码详解一、双方的基本信息本协议由以下双方达成:甲方:地址:联系人:电话:电子邮箱:乙方:地址:联系人:电话:电子邮箱:二、各方身份、权利、义务、履行方式、期限、违约责任甲方的身份为软件开发公司,提供UIP协议栈源码。
乙方的身份为客户,接受并使用UIP协议栈源码。
甲方的权利:1.拥有UIP协议栈源码的知识产权,并保留其一切权利。
2.未经乙方授权,不得向第三方提供UIP协议栈源码。
3.有权定期或不定期进行软件升级、修补、优化等操作。
甲方的义务:1.提供UIP协议栈源码,并确保其真实、准确、完整。
2.保证UIP协议栈源码的质量和稳定性。
3.协助乙方解决UIP协议栈源码相关的技术问题。
乙方的权利:1.使用UIP协议栈源码进行相关开发和生产。
2.在UIP协议栈源码使用期限内,享有后续升级、修补、优化等服务。
乙方的义务:1.支付相应的授权费用,并按照甲方的要求使用UIP协议栈源码。
2.在未获得甲方授权之前,不得将UIP协议栈源码提供给第三方。
3.遵守中国相关的法律法规,不得将UIP协议栈源码应用于违法、不良等活动。
期限:本协议的期限为一年,自签署之日起生效。
期满后,如有需要,可协商双方续签。
违约责任:1.如任何一方未能履行本协议的义务或条件,则视为违约,违约方需承担相应的违约责任。
2.如甲方未能提供UIP协议栈源码或提供的UIP协议栈源码存在严重质量问题,则乙方有权要求返还全部授权费用,并要求赔偿相关损失。
3.如乙方将UIP协议栈源码提供给第三方,或将UIP协议栈源码应用于违法、不良等活动,则视为违约,乙方需承担相应的违约责任。
三、需遵守中国的相关法律法规本协议各项条款均符合中国相关法律法规。
四、明确各方的权力和义务本协议明确了甲、乙双方在UIP协议栈源码授权使用方面的权力和义务。
五、明确法律效力和可执行性本协议是双方人民法院具有司法管辖权的有法律效力的法律文件,是双方在UIP协议栈源码授权使用方面的合法依据。
奋斗STM32开发板uIP1.0 以太网例程讲解

奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程uIP1.0 ENC28J60 以太网例程实验平台:奋斗版STM32开发板V2、V2.1、V3 实验内容:本例程演示了在奋斗STM32开发板上完成ARP,ICMP,TCP服务器、WEB 服务器以及UDP服务器,该实验学习了基于uIP1.0网络协议栈的程序编制。
预先需要掌握的知识1.ENC28J60ENC28J60是MICROCHIP公司的带SPI 接口的独立以太网控制器, 以太网控制器特性 • IEEE 802.3 兼容的以太网控制器 • 集成MAC 和10 BASE-T PHY • 接收器和冲突抑制电路 • 支持一个带自动极性检测和校正的10BASE-T 端口 • 支持全双工和半双工模式 • 可编程在发生冲突时自动重发 • 可编程填充和CRC 生成 • 可编程自动拒绝错误数据包 • 最高速度可达10 Mb/s 的SPI 接口 缓冲器 • 8 KB 发送/ 接收数据包双端口SRAM • 可配置发送/ 接收缓冲器大小 • 硬件管理的循环接收FIFO • 字节宽度的随机访问和顺序访问(地址自动递增) • 用于快速数据传送的内部DMA • 硬件支持的IP 校验和计算 介质访问控制器(MAC)特性 • 支持单播、组播和广播数据包 • 可编程数据包过滤,并在以下事件的逻辑“与” 和“或”结果为真时唤醒主机: - 单播目标地址 - 组播地址 广播地址 - Magic Packet - 由64 位哈希表定义的组目标地址 - 多达64 字节的可编程模式匹配(偏移量可由用户定义)淘宝店铺:1奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程• 环回模式 物理层(PHY)特性 • 整形输出滤波器 • 环回模式 工作特性 • 两个用来表示连接、发送、接收、冲突和全/ 半双工状态的可编程LED 输出 • 使用两个中断引脚的七个中断源 • 25 MHz 时钟 • 带可编程预分频器的时钟输出引脚 • 工作电压范围是3.14V 到3.45V • TTL 电平输入 • 温度范围:-40°C 到+85°C (工业级), 0°C 到 +70°C (商业级)(仅SSOP 封装) • 28 引脚SPDIP、SSOP、SOIC 和QFN 封装概述ENC28J60 是带有行业标准串行外设接口(SerialPeripheral Interface,SPI)的独立以太网控制器。
开源TCPIP协议概述--LwIP_uIP_TinyTcp_uCIP

1、BSD TCP/IP协议栈BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。
这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。
同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。
2、uC/IPuC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的TCP/IP协议栈,亦可移植到其它操作系统,是一套完全免费的、可供研究的TCP/IP协议栈,uC/IP大部分源码是从公开源码BSD发布站点和KA9Q(一个基于DOS单任务环境运行的TCP/IP协议栈)移植过来。
uC/IP具有如下一些特点:带身份验证和报头压缩支持的PPP协议,优化的单一请求/回复交互过程,支持IP/TCP/UDP协议,可实现的网络功能较为强大,并可裁减。
UCIP协议栈被设计为一个带最小化用户接口及可应用串行链路网络模块。
根据采用CPU、编译器和系统所需实现协议的多少,协议栈需要的代码容量空间在30-60KB之间。
3、LwIPLwIP是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。
LwIP的含义是Light Weight(轻型)IP协议,相对于uip。
LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。
LwIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM 就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。
LwIP的特性如下:支持多网络接口下的IP转发,支持ICMP协议 ,包括实验性扩展的的UDP(用户数据报协议),包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议),提供专门的内部回调接口(Raw API)用于提高应用程序性能,并提供了可选择的Berkeley接口API。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uIP协议栈分析
uIP特性
uIP协议栈往掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保存了网络通讯必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。
由于uIP协议栈专门为嵌进式系统而设计,因此还具有如下优越功能:
(1)代码非常少,其协议栈代码不到6K,很方便阅读和移植。
(2)占用的内存数非常少,RAM占用仅几百字节。
(3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。
(4)支持多个主动连接和被动连接并发。
(5)其源代码中提供一套实例程序:web服务器,web客户端,电子邮件发送程序(SMTP 客户端),Telnet服务器,DNS主机名解析程序等。
通用性强,移植起来基本不用修改就可以通过。
(6)对数据的处理采用轮循机制,不需要操纵系统的支持。
由于uIP对资源的需求少和移植轻易,大部分的8位微控制器都使用过uIP协议栈, 而且很多的著名的嵌进式产品和项目(如卫星,Cisco路由器,无线传感器网络)中都在使用uIP协议栈。
uIP架构
uIP相当于一个代码库,通过一系列的函数实现与底层硬件和高层应用程序的通讯,对于整个系统来说它内部的协议组是透明的,从而增加了协议的通用性。
uIP协议栈与系统底层和高层应用之间的关系如图2-1所示。
从上图可以看出,uIP协议栈主要提供了三个函数供系统底层调用。
即uip_init(), uip_input() 和uip_periodic()。
其与应用程序的主要接口是UIP_APPCALL( )。
uip_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的大小发送。
由于使用TCP/IP的应用场景很多,因此应用程序作为单独的模块由用户实现。
uIP协议栈提供一系列接口函数供用户程序调用,其中大部分函数是作为C的宏命令实现的,主要是为了速度、代码大小、效率和堆栈的使用。
用户需要将应用层进口程序作为接口提供给uIP 协议栈,并将这个函数定义为宏UIP_APPCALL()。
这样,uIP在接受到底层传来的数据包后,在需要送到上层应用程序处理的地方,调用UIP_APPCALL( )。
在不用修改协议栈的情况下可以适配不同的应用程序。
uIP在MCS-51单片机上的移植
1.为此项目建立一个keil C工程,建立src目录存放源文件。
2.通过阅读uip-1.0\unix\main.c,了解uIP的的主循环代码架构,并将main.c放到src目录下。
3.仿照uip-1.0\unix\tapdev.c写网卡驱动程序,与具体硬件相关。
这一步比较费点时间,不过好在大部分网卡芯片的驱动程序都有代码鉴戒或移植。
驱动需要提供三个函数,以RTL9019AS驱动为例。
etherdev_init():网卡初始化函数,初始化网卡的工作模式。
u16_t etherdev_read(void):读包函数。
将网卡收到的数据放进全局缓存区uip_buf中,返回包的长度,赋给uip_len。
void etherdev_send(void):发包函数。
将全局缓存区uip_buf里的数据(长度放在uip_len中)发送出往。
所以,收包和发包主要是操纵uip_buf和uip_len。
具体驱动分析可参考《第三章网络芯片的驱动》。
4.由于uIP协议栈需要使用时钟,为TCP和ARP的定时器服务。
因此使用单片机的定时器0用作时钟,每20ms让计数TIck_cnt加1,这样,25次计数(0.5S)满了后可以调用TCP 的定时处理程序。
10S后可以调用ARP老化程序。
对uIP1.0版本,增加了timer.c/timer.h,专门用来治理时钟,都放到src下。
5.uIP协议栈的主要内容在uip-1.0\uip\下的uip.c/uip.h中,放到src下。
假如需要ARP协议,需要将uip_arp.c和uip_arp.h也放到src下。
6.uipopt.h/uip-cONf.h是配置文件,用来设置本地的IP地址、网关地址、MAC地址、全局缓冲区的大小、支持的最大连接数、侦听数、ARP表大小等。
需要放在src下,并且根据需要配置。
在V1.00版本中对配置做了如下修改:
(1)配置IP地址,默认先关IP,在初始化中再设定。
#define UIP_FIXEDADDR 0
#define UIP_IPADDR0 192
#define UIP_IPADDR1 168
#define UIP_IPADDR2 1
#define UIP_IPADDR3 9
#define UIP_NETMASK0 255
#define UIP_NETMASK1 255
#define UIP_NETMASK2 255
#define UIP_NETMASK3 0
#define UIP_DRIPADDR0 192
#define UIP_DRIPADDR1 168
#define UIP_DRIPADDR2 1
#define UIP_DRIPADDR3 1
(2)使能MAC地址
#define UIP_FIXEDETHADDR 1
#define UIP_ETHADDR0 0x00
#define UIP_ETHADDR1 0x4f
#define UIP_ETHADDR2 0x49
#define UIP_ETHADDR3 0x12
#define UIP_ETHADDR4 0x12
#define UIP_ETHADDR5 0x13
(3)使能ping功能
#define UIP_PINGADDRCONF 1
(4)封闭主动请求连接的功能
#define UIP_ACTIVE_OPEN 0
(5)将uip_tcp_appstate_t定位u8_t类型。
(6)由于单片机是大端结构,因此宏定义需要修改
#define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN
(7)暂时不移植打印信息,先封闭
#define UIP_CONF_LOGGING 0
(8)定义数据结构类型
typedef unsigned char u8_t;
typedef unsigned int u16_t;
typedef unsigned long u32_t;
7.假如使用keil C的小模式编译,需要在大部分的RAM的变量前增加xdata。
8.data为keil C的关键词,代码中所有出现data的地方(主要是参数、局部变量、结构体成员)改为pucdata或ucdata。
9.解决编译过程中的错误。
uIP协议栈为C语言编写,编译过程中的题目比较少,并且轻易解决。
uIP的主控制循环
通过实际的代码说明uIP协议栈的主控制循环。
void main(void)
{
/*省略部分代码*/
/*设置TCP超时处理时间和ARP老化时间*/
timer_set(&periodic_timer, CLOCK_CONF_SECOND / 2);
timer_set(&arp_timer, CLOCK_CONF_SECOND * 10);
/*定时器初始化*/
init_Timer();
/*协议栈初始化*/
uip_init();
uip_arp_init();
/*应用层初始化*/
example1_init();
/*驱动层初始化*/
etherdev_init();
/*IP地址、网关、掩码设置*/
uip_ipaddr(ipaddr, 192,168,1,9);
uip_sethostaddr(ipaddr);
uip_ipaddr(ipaddr, 192,168,1,16);
uip_setdraddr(ipaddr);
uip_ipaddr(ipaddr, 255,255,255,0);
uip_setnetmask(ipaddr); /*主循环*/
while(1)
{
/*从网卡读数据*/
uip_len = etherdev_read(); /*假如存在数据则按协。