文档库 最新最全的文档下载
当前位置:文档库 › uip协议栈

uip协议栈

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(); /*假如存在数据则按协

uIP的ARP协议代码分析之二 ARP应答

ARP应答部分代码为uip_arp.c中的void uip_arp_arpin(void)函数. 这个函数是在设备接收到ARP包时,由驱动程序调用的. 如果收到是ARP包是一个对本地主机上次发送的ARP请求的应答,那么就从包中取得自己想要的主机的MAC地址,加入自己的ARP缓存表中. 如果收到是一个ARP请求,那就把自己的MAC地址打包成一个ARP应答,发送给请求的主机. 看代码uip_arp.c的254行: 1./*----------------------------------------------------------------- ------------------*/ 2./** 3.* ARP processing for incoming ARP packets. 4.*对传入的ARP包的处理. 5.* This function should be called by the device driver when an ARP 6.* packet has been received. The function will act differently 7.* depending on the ARP packet type: if it is a reply for a request 8.* that we previously sent out, the ARP cache will be filled in with 9.* the values from the ARP reply. If the incoming ARP packet is an ARP 10.* request for our IP address, an ARP reply packet is created and put 11.* into the uip_buf[] buffer. 12.*此函数在收到ARP包时由设备驱动调用,函数行为会因包类型而有不同.如果 收到的是一个对前先发送的请求的应答 13.*则根据应答的值填充缓存.如果传入的包是对我们的IP的请求,则创建一个 ARP应答,并放入uip_buf[]中. 14.* When the function returns, the value of the global variable uip_len 15.* indicates whether the device driver should send out a packet or 16.* not. If uip_len is zero, no packet should be sent. If uip_len is 17.* non-zero, it contains the length of the outbound packet that is 18.* present in the uip_buf[] buffer. 19.*函数返回时,全局变量uip_len的值指明了设备驱动要不要发送包.若 uip_len为0,则不需发送,若uip_len不是0, 20.* 则其值是uip_buf[]中包含的要传出的包的大小. 21.* This function expects an ARP packet with a prepended Ethernet 22.* header in the uip_buf[] buffer, and the length of the packet in the 23.* global variable uip_len.此函数预期中的uip_buf中有一个带以太网头的 ARP包.其长度存为uip_len中. 24.*/ 25./*----------------------------------------------------------------- ------------------*/ 26.void 27.uip_arp_arpin(void) 28.{ 29. 30.if(uip_len < sizeof(struct arp_hdr)) { 31.uip_len = 0;

ZigBee协议栈OSAL介绍

讨论ZigBee协议栈的构成以及内部OSAL的工作机理。 ZigBee协议栈OSAL介绍 操作系统抽象层 OSAL常用术语: 1.资源(Resource):任何任务所占用的实体都叫资源,如变量、数组、结构体 2.共享资源(Shared Resource):两个或两个以上任务使用的资源,为防止破坏资源,任务在操作共享资源时是独占状态。 3.任务(Task):即线程,简单的程序的执行过程。任务设计时将问题尽可能分成多个任务,每个任务独立完成某项功能,同时赋予优先级、CPU寄存器和堆栈空间。一般一个任务设计为一个无限循环。 4.多任务运行(Muti-task Running):其实同一时刻只有一个任务运行。 5.内核(Kernel):内核负责管理各个任务。包括:分配CPU时间;任务调度;任务间的通信。 6.互斥(Mutual Exclusion):多任务通信最常用方法是共享数据结构。 保护共享资源常用的方法: 关中断; 使用测试并置位指令(T&S指令); 禁止任务切换; 使用信号量; 7.消息队列(Message Queue):用于任务间传递消息。 OSAL提供如下功能: 任务注册、初始化和启动; 任务间的同步、互斥; 中断处理; 储存器分配和管理; OSAL运行机理: OSAL就是一种支持多任务运行的系统资源分配机制。 OSAL是一种基于事件驱动的轮询式操作系统。、 void osal_start_system(void)是ZigBee协议栈的灵魂,不断的查看事件列表,如果有事件发生就调用相应的事件处理函数。 SYS_EVENT_MSG是一个事件集合,是由协议栈定义的事件,即系统强制事件(Mandatory Events),它的定义为: #define SYS_EVENT_MSG 0x8000; 它包含如下事件: AF_INCOMING_MSG_CMD 收到一个新的无线数据

TCPIP协议规范及UIP处理流程模板

TCPIP协议规范及UIP处 理流程模板 目录 一、简要历史 (4) 二、TCP/IP协议族 (4) 2.1. 简介 (4) 2.2. 编址 (5) 2.2.1 物理地址 (5) 2.2.2 逻辑地址 (5) 2.2.3 端口地址 (8) 2.3. 分层数据包介绍 (8) 2.3.1 以太网帧 (8) 2.3.2 ARP报文格式 (9)

2.3.3 IP数据报格式 (11) 23.4 ICMP报文格式 (13) 2.3.5 IGMP报文格式 (15) 23.6 UDP用户数据报首部格式 (16) 2.3.7 TCP报文段格式 (17) 2.4. 分层协议讲解 (19) 2.4.1 ARP 和RARP (20) 2.4.2 IP 协议 (23) 2.4.3 ICMP 协议 (25) 2.4.4 网际组管理协议(IGMP) (30) 2.4.5 用户数据报(UDP) (31) 2.4.6 传输控制协议(TCP) (34) 三、UIP处理流程 (40) 3.1. 简介 (40) 3.2. 层次结构 (41) 3.2.1 实现设备驱动与UIP对接需要的7个接口程序,定义在uip.h: (42) 3.2.2 应用层要调用的函数,包括一些宏定义与函数,定义在uip.h: (48) 3.2.3 UIP中所用到的主要结构体 (55) 3.2.4 uip的初始化与配置函数 (64) 3.2.5 Uip的主程序循环 (67) 3.2.6 主要的处理函数uip_process() (71) 3.2.7 再來分析UIP_UDP_SEND_CONN,主要处理UDP报文的发送: (79) 3.2.8 接下來,分析UIP_POLL_REQUEST (82) 3.2.9 对定时器期满的处理流程UIP_TIMER (84) 3.2.10 对UIP_UDP_TIMER 的处理流程 (86) 3.2.11 原始套接字和原始线程 (87)

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

7号信令协议栈

SS7信令系统协议简介 SS7信令协议栈,MTP1,MTP2,MTP3,SCCP,TCAP,ISUP,TUP 3.1 SS7信令协议栈 协议是通过网络传送数据的规则集合。 协议栈也就是协议的分层结构,协议分层的目的是为了使各层相对独立,或使各层具有不同的职能。SS7协议一开始就是按分层结构的思想设计的,但SS7协议 在开始发展时,主要是考虑在数字电话网和采用电路交换方式的数据通信网中传送各种与电路有关的信息,所以CCITT在80年代提出的SS7技术规范黄皮书 中对SS7协议的分层方法没有和OSI七层模型取得一致,对SS7协议只提出了4个功能层的要求。这4个功能层如下: 物理层:就是底层,具体是DS0或V.35。 数据链路层:在两节点间提供可靠的通信。 网络层:提供消息发送的路由选择.。 用户部份/应用部份:就是数据库事务处理,呼叫建立和释放。 但随着综合业务数字网(ISDN)和智能网的发展,不仅需要传送与电路有关的消息,而且需要传送与电路无关的端到端的消息,原来的四层结构已不 能满足要求。在1984年和1988年的红皮书和蓝皮书建议中,CCITT作了大量的努力,使SS7协议的分层结构尽量向OSI的七层模型靠近。 下图图示了SS7信令协议栈: MTP1(消息传递部分第一层):即物理层。 MTP1(消息传递部分第二层):即数据链路层。 MTP1(消息传递部分第三层):即网络层。

SCCP(信令连接控制部分) TCAP(事务处理应用部分) ISUP(ISDN用户部分) TUP(电话用户部分) MTP1 MTP1是SS7协议栈中的最底层,对应于OSI模型中的物理层,这一层定义了数字链路在物理上,电气上及功能上的特性。物理接口的定义包括:E-1,T-1,DS -1,V.35,DS-0,DS -0A(56K)。 MTP2 MTP2确保消息在链路上实现精确的端到端传送。MTP2提供流控制,消息序号,差错检查等功能。当传送出错时,出错的消息会被重发。MTP2对应OSI模型中的数据链路层。 MTP3 MTP3在SS7信令网中提供两个信令点间消息的路由选择功能,消息在依次通过MTP1,MTP2,MTP3层之后,可能会 被发送回MTP2再传向别的信令点,也可能会传递给某个应用层,如:SCCP或ISUP 层。MTP3还提供一些网管功能的支持,包括:流量控制,路由选择 和链路管理。MTP3对应OSI模型中的网络层。 SCCP(信令连接控制部分) SCCP位于MTP之上,为MTP提供附加功能,以便通过SS7信令网在信令点之间传递电路相关和非电 路相关的消息,提供两类无连接业务和两类面向连接的业务。 无连接业务是指在两个应用实体间,不需要建立逻辑连接就可以传递信令数据。面向连接的业务在数据传递之前应用实体之间必须先建立连接,可以是一般性的连

uip协议栈

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

arp协议栈

竭诚为您提供优质文档/双击可除 arp协议栈 篇一:实验2地址解析协议aRp 实验2地址解析协议(aRp) 【实验目的】 1.掌握aRp协议的报文格式 2.掌握aRp协议的工作原理 3.理解aRp高速缓存的作用 4.掌握aRp请求和应答的实现方法 5.掌握aRp缓存表的维护过程 【学时分配】 2学时 【实验环境】 该实验采用网络结构二 【实验原理】 一、物理地址与逻辑地址 1.物理地址 物理地址是节点的地址,由它所在的局域网或广域网定义。物理地址包含在数据链路层的帧中。物理地址是最低一

级的地址。 物理地址的长度和格式是可变的,取决于具体的网络。以太网使用写在网络接口卡(nic)上的6字节的标识作为 物理地址。 物理地址可以是单播地址(一个接收者)、多播地址(一组接收者)或广播地址(由网络中的所有主机接收)。有些 网络不支持多播或广播地址,当需要把帧发送给一组主机或所有主机时,多播地址或广播地址就需要用单播地址来模拟。 2.逻辑地址 在互联网的环境中仅使用物理地址是不合适的,因为不同网络可以使用不同的地址格式。因此,需要一种通用的编址系统,用来惟一地标识每一台主机,而不管底层使用什么样的物理网络。 逻辑地址就是为此目的而设计的。目前internet上的 逻辑地址是32位地址,通常称为ip地址,可以用来标识连接在internet上的每一台主机。在internet上没有两个主机具有同样的ip地址。 逻辑地址可以是单播地址、多播地址和广播地址。其中广播地址有一些局限性。在实验三中将详细介绍这三种类型的地址。 二、aRp协议简介 internet是由各种各样的物理网络通过使用诸如路由

CI 协议栈简介

DVB / ETSI EN-50221 Common Interface Stack The GkWare Common Interface Stack already enables PayTV on thousands of DVB Setttop boxes worldwide, including single-slot and dual-slot systems and little and big-endian CPUs. The ANSI-C sourcecode is portable and only a small lowlevel PCMCIA I/O driver has to be developed for new platform integrations. Compatibility for all modules available to the general public is guaranteed. FEATURES Support for SCM CiMax, I&C StarCI and direct GPIO connections Simple Integration of custom Resources Flexible PMT => CAPMT converter PCMCIA Card-Info-Structure decoder included Full ETSI R206-001 profile level 1 implementation PVR / Headend descrambling mode, including support for Aston Professional CAM series Supports friendly coexistence with other PCMCIA drivers (e.g. Compact Flash, Network Interface or Bluetooth) SUPPORTED EN50221 RESOURCES Resource Manager Application Information Version 1 and 2 MMI DateTime CA Support Host Control LowSpeed Communication SUPPORTED PLATFORMS ARM7 (Thumb) ARM9 MIPS ST (OS20) x86 REQUIREMENTS approximately 32kb RAM + 16kb per Slot Multitasking OS recommended (but not required) (existing ports for Nucleus+, uCOS, pSoS, Win32) SUPPORTED CHIPSETS Conexant CX2249x, CX241xx, CX2417x ST 5105, 5519 Philips LPC 2214 NEC EMMA Series TI AV711x Technotrend DVB-PCI Budget series (including clones) KNC-One TV-Station Cineview slot (including clones) Whatever CI module you have... we make it work ! MMI Menu Sample Various licensing models are available, including low-volume closed-source and royalty-free with a limited sourcecode redistribution license. GkWare e.K. - Humboldtstrasse 177 - 45149 Essen - Germany https://www.wendangku.net/doc/4e1851828.html, - support@https://www.wendangku.net/doc/4e1851828.html, - +49 174 5208026

TCPIP协议规范及UIP处理流程

简要历史 1973年,ARPANET核心组成员Vint Cerf和Bob Kahn发表了一篇里程碑论文,阐述了实现分组的端到端交付的协议。这篇关于传输控制协议(TCP的论文包括:封装、数据报,以及网关的功能。 后来,TCP被划分为两个协议:传输控制协议(TCF)和网际互联协议(IP)。IP处理数据报的路由选 择,而TCP负责高层的一些功能,如分段、重装和差错检测。这个用来进行网际互联的协议后来就被称为TCP/IP。 TCP/IP协议族 简介 TCP/IP协议族由5层组成:物理层、数据链路层、网络层、运输层和应用层。前四层与OSI模型的前四层 相对应,提供物理标准、网络接口、网际互联、以及运输功能。而应用层与OSI模型中最高的三层相对应。 TCP/IP协议族中的各层包含了一些相对独立的协议。在物理层和数据链路层,TCP/IP并没有定义任何协议。 在网络层TCP/IP支持网际互联协议(IP),而IP又由四个支撑协议组成:ARP、RARP ICMP和IGMP。在传 统上,TCP/IP协议族在运输层有两个运输协议:TCP和UDP,然而现在已经设计出一个新的运输层协议SCTP 以满足新的应用的需要。IP是主机到主机的协议,即把分组从一个物理设备交付到另一个物理设备。UDP 和TCP是运输机协议,负责把报文从一个进程(运行着的程序)交付到另一个进程。 编址 使用TCP/IP协议的互联网使用3个等级的地址:物理(链路)地址、逻辑(IP)地址以及端口地址。 每一种地址属于TCP/IP体系结构中的特定层。 物理地址物理地址也叫链路地址,是结点的地址,由它所在的局域网或广域网定义。物理地址包含在数据链路层使用的帧中。 以太网的地址是6字节(48位)长,通常用十六进制记法,如:07:01:02:01:2C:4B。以太网的地址共 3 种:单播、多播和广播。在单播地址中的第一个字节的最低位0;在多播地址中的第一个字节的最低位 是1。广播地址是48 个1。 逻辑地址 因特网的逻辑地址是32位地址,可以用来标志连接在因特网上的每个主机。在因特网上没有两个主 机有相同的IP地址。同样,逻辑地址也可以是单播地址、多播地址和广播地址。 In ternet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分 成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要通过路由器转发。 把所有IP地址分为五类,如下图1所示: 图2-1 A 类到 B类到 C 类到 D 类到 E类到

嵌入式TCPIP协议栈

嵌入式TCPIP协议栈 嵌入式TCP/IP协议栈 目前,市场上几乎所有的嵌入式TCP/IP协议栈都是根据BSD版的TCP/IP协议栈改写的。在商业嵌入式TCP/IP协议栈大都相当昂贵的情况下,很多人转而使用一些源代码公开的免费协议栈,并加以改造应用。目前较为著名的免费协议栈有: lwIP(Light weight TCP/IP Stack)——支持的协议比较完整,一般需要多任务环境支持,代码占用ROM>40KB,不适合8位机系统,没有完整的应用文档; uC/IP(TCP/IP stack for uC/OS)—基于uC/OS的任务管理,接口较复杂,没有说明文档。 笔者采用的协议栈系瑞典计算机科学研究所Adam Dunkels开发的uIP0.9。其功能特性总结如下: *完整的说明文档和公开的源代码(全部用C语言编写,并附有详细注释); *极少的代码占用量和RAM资源要求,尤其适用于8/16位单片机(见表1); *高度可配置性,以适应不同资源条件和应用场合; *支持ARP、IP、ICMP、TCP、UDP(可选)等必要的功能特性; *支持多个主动连接和被动连接并发,支持连接的动态分配和释放; *简易的应用层接口和设备驱动层接口; *完善的示例程序和应用协议实现范例。 表1 uIP在ATMEL AVR上代码和RAM占用情况 协议模块代码大小/B 使用的RAM/B ARP 1324 118 IP/ICMP/TCP 3304 360 HTTP 994 110 校验和函数636 0 数据包缓存0 400 总和6258 988

注:配置为1个TCP听端口,10个连接,10个ARP表项,400字节数据包缓存。 正是由于uIP所具有的显著特点,自从0.6版本以来就被移植到多种处理器上,包括MSP430、AVR和Z80等。笔者使用的uIP0.9是2003年11月发布的版本。目前,笔者已将它成功移植到MCS-51上了。 2 uIP0.9的体系结构 uIP0.9是一个适用于8/16位机上的小型嵌入式TCP/IP协议栈,简单易用,资源占用少是它的设计特点。它去掉了许多全功能协议栈中不常用的功能,而保留网络通信所必要的协议机制。其设计重点放在IP、ICMP和TCP协议的实现上,将这三个模块合为一个有机的整体,而将UDP和ARP协议实现作为可选模块。UIP0.9的体系结构如图1所示。 UIP0.9处于网络通信的中间层,其上层协议在这里被称之为应用程序,而下层硬件或固件被称之为网络设备驱动。显然,uIP0.9并不是仅仅针对以太网设计的,以具有媒体无关性。 为了节省资源占用,简化应用接口,uIP0.9在内部实现上作了特殊的处理。 ①注意各模块的融合,减少处理函数的个数和调用次数,提高代码复用率,以减少ROM占用。 ②基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据。 ③基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时 ,由uIP内核唤起应用程序处理。这样,uIP用户只须关注特定应用就可以了。传统的TCP/IP实现一般要基于多任务处理环境,而大多数8位机系统不具备这个条件。 ④应用程序主动参与部分协议栈功能的实现(如TCP的重发机制,数据包分段和流量控制),由uIP内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应用接口使得这些实现较为简单。 3 uIP的设备驱动程序接口 uIP内核中有两个函数直接需要底层设备驱动程序的支持。 一是uip_input()。当设置驱动程序从网络层收到的一个数据包时要调用这个函数,

无线物联网中CoAP协议的研究与实现

无线物联网中CoAP协议的研究与实现 作者:汤春明,张荧,吴宇平 引言 物联网是在互联网的基础上延伸和扩展的一种网络,其用户端延伸和扩展到了任何物品之间,彼此进行信息交换和通信,目的是实现所有物品与网络的连接,从而方便识别、管理和控制。 无线物联网的特点包括:全面感知、实时准确传递物品信息、利用智能计算技术对海量数据进行分析和处理,以实现智能化控制。 由于无线物联网中的设备很多都是资源受限型的,这些设备只有少量的内存空间和有限的计算能力。为此,IETF(Intemet Engineering Task Force)的CoRE(Constrained RESTful Environment)工作组为受限节点制定相关的REST(Representational State Transfer)形式的应用层协议。这就是CoRE工作组正在制订的CoAP(Constrained Application Protocol)协议。 1.6LoWPAN协议栈 由于TCP/IP协议栈不适用于资源受限的设备,因此提出了一种6LoWPAN(IPv6over Low power Wireless Personal Area Networks)协议栈。CoAP是6LoWPAN协议栈中的应用层协议。6LoWPAN使IPv6可用于低功耗的有损网络,它是基于IEEE802.15.4标准的。6LoWPAN协议栈如图1所示。 CoAP UDP IPv6层 IPv6—6LoWPAN适配层 802.15.4MAC 802.15.4PHY 图1 协议栈的下两层用802.15.4PHY/MAC,中间加一个IPv6-6LoWPAN适配层,传输层使用UDP协议,应用层使用CoAP协议。它包括REST的最小子集和到HTTP的无状态映射。通信主机使用CoAP协议,能够支持稳定的通信架构,以实现传感器节点与互联网的无线连接。 2.CoAP协议 在2010年3月,CoRE工作组开始制定CoAP协议,到目前为止,该协议还没有定稿。CoAP协议是为物联网中资源受限设备制定的应用层协议。它是一种面向网络的协

协议栈工作原理介绍

协议栈工作原理介绍 CC2540集成了增强型的8051内核,TI为BLE协议栈搭建了一个简单的操作系统,即一种任务轮询机制。帮你做好了底层和蓝牙协议深层的内容,将复杂部分屏蔽掉。让用户通过API函数就可以轻易用蓝牙4.0,是开发起来更加方便,开发周期也可以相应缩短。 1.1.1工程文件介绍 安装完BLE协议栈之后,会在安装目录下看到以下文件结构: 图 3.2BLE栈目录

可看到Projects文件夹里面有很多工程,我们主要介绍SimpleBLECentral和SimpleBLEPeripheral。 ble文件夹中有很多工程文件,有些是具体的应用,例如 BloodPressure、GlucoseCollector、GlucoseSensor、HeartRate、HIDEmuKbd等都为传感器的实际应用,有相应标准的Profile(即通用的协议)。 其中还有4中角色:SimpleBLEBroadcaster、SimpleBLECentral、SimpleBLEObserver、SimpleBLEPeripheral。 他们都有自己的特点。 ?Broadcaster广播员——非连接性的信号装置 ?Observer观察者——扫描得到,但不能链接 ?Peripheral从机——可链接,在单个链路层链接中作为从机?Central主机——扫描设备并发起链接,在单链路层或多链路层 中作为主机。 最后的BTool文件夹为BLE设备PC端的使用工具。 1.1.2OSAL介绍 协议栈是一个小操作系统。大家不要听到是操作系统就感觉到很复杂。回想

我们当初学习51单片机时候是不是会用到定时器的功能?嗯,我们会利用定时器计时,令LED一秒改变一次状态。好,现在进一步,我们利用同一个定时器计时,令LED1一秒闪烁一次,LED2二秒闪烁一次。这样就有2个任务了。再进一步…有n个LED,就有n个任务执行了。协议栈的最终工作原理也一样。从它工作开始,定时器周而复始地计时,有发送、接收…等任务要执行时就执行。这个方式称为任务轮询。 图 3.3任务轮询 现在我们直接打开协议栈,直接拿他们的东西来解剖!我们打开协议栈文件夹Texas Instruments\BLE-CC254x-1.2.1\Projects \ble\SimpleBLEPeripheral\CC2540DB里面的工程文件SampleApp.eww。

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

详解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请求包。

OMCI协议 介绍 中文版

OMCI协议(1) 1、OMCI协议栈的结构 GPON 系统的协议栈,主要由物理媒质相关(PMD)层和GPON 传输汇聚(GTC)层组成。GTC 层从结构层次来分可以分成两个子层:GTC 成帧子层和TC 适配子层。从功能层次可以分为C/M平面和U平面。GTC 层可分为两种封装模式:ATM 模式和GEM 模式,目前GPON 设备基本都采用GEM 模式。GEM 模式的GTC 层可为其客户层提供3 种类型的接口:ATM 客户接口、GEM客户接口和ONT 管理和控制接口(OMCI) 2、PMD层 GPON 的PMD 层对应于OLT 和ONU 之间的光传输接口(也称为PON 接口),其具体参数值决定了GPON 系统的最大传输距离和最大分路比。OLT 和ONU 的发送光功率、接收机灵敏度等关键参数主要根据系统支持的ODN 类型来进行划分。根据允许衰减范围的不同,ODN 类型主要分为A、B、C 三大类,结合目前实际应用需求和光收发模块的实际能力工业界还定义了B+类,扩展了GPON 系统支持 1244.16 Mbit/s/155.52 Mbit/s; 1244.16 Mbit/s/622.08 Mbit/s; 1244.16 Mbit/s/1244.16 Mbit/s; 2488.32 Mbit/s/155.52 Mbit/s; 2488.32 Mbit/s/622.08 Mbit/s; 2488.32 Mbit/s/1244.16 Mbit/s; 2488.32 Mbit/s/2488.32 Mbit/s。 目前主流厂家的GPON 产品均支持2488.32Mbit/s/1244.16Mbit/s,并且在20km 传输距离下支持1:64 分路比。 OMCI协议(2) 1、GTC层 TC 层(也称为GTC 层)是GPON 的核心层,主要完成上行业务流的媒质接入控制和ONU 注册这两个关键功能。GTC 层包括两个子层:GTC 成帧子层和TC 适配子层。 1)GTC帧子层 GTC 成帧子层包括3个功能: 复用和解复用。PLOAM 和GEM 部分根据帧头指示的边界信息复用到下行TC 帧中,并可以根据帧头指示从上行TC 帧中提取出PLOAM 和GEM 部分。 帧头生成和解码。下行帧的TC 帧头按照格式要求生成,上行帧的帧头会被解码。此外还要完成嵌入式OAM。

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中,ipheader和udpheader结构体定义如下: userdata:再后面就是用户的数据了。 二、aRp数据报文格式 网络中是使用ip来标识主机的,而数据链路层的第一 道关卡是mac地址。因此ip和mac有一张动态映射表,而 这张表就是由aRp协议来建立并维护的。下面是一个aRp数据报文。 同样的,前面14byte是ethheader。hardwaretype对 于以太网来说为0001;0800表示是ipV4;06表示mac地址

1.ZigBee协议栈简介

1、ZigBee协议栈简介 本节内容仅仅是对ZigBee协议栈的一些大家必须理解清楚的概念进行简单的讲解,并没有对ZigBee协议栈的构成及工作原理进行详细的讨论。让刚接触ZigBee协议栈的朋友们对它有个初步的感性认识,有助于后面使用ZigBee协议栈进行真正的项目开发。 什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢 协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 图1展示了ZigBee无线网络协议层的架构图。ZigBee的协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee 联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。 图1 ZigBee无线网络协议层 在开发一个应用时,协议较底下的层与应用是相互独立的,它们可以从第三方来获得,因此我们需要做的就只是在应用层进行相应的改动。 介绍到这里,大家应该清楚协议和协议栈的关系了吧,是不是会想着怎么样才能用协议栈来开发自己的项目呢?技术总是不断地在发展地,我们可以用ZigBee厂商提供的协议栈软件来方便地使用ZigBee协议栈(注意:不同厂商提供的协议栈是有区别的,此处介绍TI推出的ZigBee 2007协议栈也称Z-Stack)。 Z-stack是挪威半导体公司Chipcon(目前已经被TI公司收购)推出其CC2430开发平台时,推出的一款业界领先的商业级协议栈软件,由于这个协议栈软件的出现,用户可以很容易地开发出具体的应用程序来,也就是大家说的掌

BLE协议栈简介

BLE协议栈简介 协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 下图为BLE协议栈的结构框图: 图 3.1BLE栈架构 协议栈包括两个部分:控制器和主机。控制器和主机在标准蓝牙BR/EDR 设备这两个部分通常是单独实现。任何配置文件和应用程序都是建立在GAP和

GATT协议层上。 ·PHY层:1Mbps自适应跳频GFSK(高斯频移键控),运行在免证的2.4GHz 频段。 ·LL层:RF控制器,控制设备处于准备(standby)、广播(advertising)、监听/扫描(scanning)、初始化(initiating)、连接(connected)这五种状态中一种。 ·HCI层:为接口层,向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制。 ·L2CAP层:为上层提供数据封装服务,允许逻辑上的端到端数据通信。 ·SM层:提供配对和密匙分发服务,实现安全连接和数据交换。 ·GAP层:直接与应用程序或配置文件(profiles)通信的接口,处理设备发现和连接相关服务。另外还处理安全特性的初始化。 ·ATT层:导出特定的数据(称为属性)到其他设备。 ·GATT层:定义了使用ATT的服务框架和配置文件(profiles)的结构。BLE中所有的数据通信都需要经过GATT。 TI的这款CC2540器件可以单芯片实现BLE蓝牙协议栈结构图的所有组件,包括应用程序。 通过上面的介绍,我们基本了解了BLE协议栈的各层功能,其中需要我们直接接触的主要是GAP和GATT这两个层。

相关文档