logo资料库

中文版Lightweight-Mesh-Developer-Guide_Application.pdf

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
翻译有些错误的地方,请各位修改指导 Lightweight Mesh开发指南 本文的功能: • Atmel Lightweight Mesh协议栈的功能和API • Lightweight Mesh软件开发工具包(SDK) 说明: 这份文档描述了Lightweight Mesh的功能——简单易用的爱特梅尔公司专有的低功率无线网 状网络协议。这份文档能被认为是完整和全面的协议说明和相关API规范。本文还描述了 协议的参考实现。 Lightweight Mesh主要针对系统设计师、嵌入式程序员和硬件工程师进行原型机设计评估和 部署无线解决方案产品。Lightweight Mesh以软件开发工具包方式提供,其中包括完整的堆 栈组件的源代码,以及样品吗应用程序。 使用者被认为是熟悉C编程语言,了解一些嵌入式系统推荐,但不是必需的。 1
• 概述 1.1目标应用 Lightweight Mesh旨在解决需要广泛无线连接的应用程序。这些应用程序包括: • 远程控制 • 安防和保险 • 自动抄表 • 智能家居和楼宇自动化 • 玩具和教学仪器 1.2硬件要求 Lightweight Mesh 旨在工作在所有Atmel的IEEE® 802.15.4 的收发芯片和片上系统。当前的协 议栈可以工作在基于AVR®-和ARM®的单片机上,但考虑到极端的可移植性和较低的资源需 求,它可以运行在几乎任何Atmel单片机。 支持平台的完整列表可以在Lightweight Mesh Getting Started Guide中查看。 1.3缩写和术语 AODV ——AODV路由协议 (AODV(Ad hoc on-demand distance vector routing) 是一种源驱动路由协议。当一个节点需 要给网络中的其他节点传送信息时,如果没有到达目标节点的路由,则必须先以多播的形 式发出RREQ(路由请求)报文。RREQ报文中记录着发起节点和目标节点的网络层地址,邻近 节点收到RREQ,首先判断目标节点是否为自己。如果是,则向发起节点发送RREP(路由回 应);如果不是,则首先在路由表中查找是否有到达目标节点的路由,如果有,则向源节点 单播RREP,否则继续转发RREQ进行查找。) API——应用程序接口 Device, Node——物理设备作为网络的一部分 GPIO——通用输入输出 LQI——链路质量指示 (LQI (link quality indicator) 是链路质量指示,表示接收数据帧的能量与质量。其大小基于 信号强度以及检测到的信噪比(SNR),由MAC(media access control)层计算得到并提供给上一 层,一般与正确接收到数据帧的概率有关。IEEE 802.15.4 标准定义了链路质量:指示(LQI) 计量的就是所收到的数据包的强度和/或质量。IEEE 802.15.4 标准要求的LQI值限制在范围0 2
到255,至少需要8个唯一的值。) MAC——介质访问控制 MCU——微控制器 MIC——消息完整性编码 NWK——网络层 PAN——个人局域网络 PHY——物理层 RAM——可读写存储器 RSSI——接收信号强度指示器 2. Lightweight Mesh协议栈概述 2.1功能 Lightweight Mesh协议栈的实现现状具有以下特点: • 配置和使用简单 • 在一个网络里多达65535个节点(理论极限) • 在一个信道上多达65535个独立的局域网络 • 15个独立的应用程序端点 • 没有专门的节点需要去启动网络 • 没有定期业务流量占用带宽 • 两种不同类型的节点: 路由(网络地址为<0x8000) 非路由(网络地址为0x8000≥) • 一旦接通电源节点就准备好发送和接收数据;没有什么特别的加入过程 • 节点之间没有父子关系 • 非路由节点能够发送和接收数据至/从任何其他节点(包括非路由节点),但是它们永 远不会被用于路由目的 • 如果到达目的是未知,路由发现是将会自动发生的 • 路由表将被自动更新,根据从接收到的和发送的帧中的数据 • 可选支持AODV路由 • 可以选择多播通信 • 重复帧(广播或单播多路径)被拒绝 • 占用硬件少(8KBFlash和4KBRAM是一个典型例子) 3
22.网络拓扑 网络拓扑结构和可能的设备类型由图2-1所示。以蓝色显示的节点是路由节点;他们形成了 典型的网络核心和期望用主电源供电。在绿色显示的节点都是非路由节点; 它们是网络的 一部分,并且它们可以发送和接收的数据,只要它们在无线覆盖范围内,但它们不是一直 工作的(它们可以休眠,或移动出无线覆盖范围等)。非路由节点将不被用于路由的目 的,因此它们不能充当范围扩展器,并且通常会位于网络的边缘。 2.3提供的服务 Lightweight Mesh提供了以下核心服务: • 基本数据服务(发送和接收数据) • 致谢 • 路由 • 基本安全 • 无线收发器的功率管理 • 接口的无线收发器的高级功能(加密,能量检测,随机数等) Lightweight Mesh的应用程序负责: • 网络管理(发现,连接,调试等) • 先进的网络运行情况(沉睡的路由器,亲子关系,数据传输到睡觉的节点等) • 数据发送失败后重发 • 定义消息负载格式 • 高级安全 • MCU的电源管理 • 接口硬件外设(ADC,PWM,EEPROM等) 4
3.Lightweight Mesh的结构 3.1结构亮点 Lightweight Mesh 高层体系结构表示在图3-1。Lightweight Mesh 代码分离成若干个,每个均 提供了一组用于用户访问的API。该协议栈的设计提供唯一的功能用于无线通信的,并且 因此预计剩余部分用于被用户创建,或者由第三方库提供,如果需要的话。 • 硬件抽象层(HAL)提供基本的硬件相关的功能,如硬件定时器,睡眠控制,对于无线 电接口的GPIO接入 • 无线物理层(PHY)提供用于无线电收发的访问。其中有些只访问网络层(请求发送数 据时,数据指示);他们中的一些可以从应用程序中使用(信道选择,随机数的产生, 能量检测等) • 网络层(NWK)提供核心协议栈功能,这将在详细贯穿本文献中描述 • 系统服务提供所有的层普通功能,一些必要的正常操作协议栈的常用功能。系统服务 包括基本类型和定义,软件定时器,默认的配置参数,加密模块接入等 • 应用服务不是本协议栈必须要求的模块,但是常见于大多数应用。目前,这种服务的 唯一应用就是在空中升级(OTA)。应用服务超出本文献的讨论范围 3.2命名约定 Lightweight Mesh使用一套定义良好的命名约定,使人们很容易阅读源代码,并 缩短应用开发时间。以下是一些基本的规则: • 每个API函数名是由函数所在的层的名称作为前缀。例如,该NWK_SetAddr()是网络 层的 • 每个函数名前缀后面是一个下划线字符的描述和分离前缀函数名 • 描述函数名可能有所需的物品,工业或CONF后缀,表明以下几点: • REQ对应于协议栈用户程序中的请求(例如,NWK_DataReq()) • IND对应于协议栈用户应用的事件异步指示传播的到来(例如,NWK_DataInd ()) 5
• CONF对应于用户定义的回调的异步请求,证实了请求执行 • 每个结构和类型名带有后缀_t,标注形式 • 枚举和宏变量名是大写字母 所以建议应用程序开发者坚持上述命名约定在用户应用程序。 3.3文件系统布局 SDK的文件系统布局密切反映Lightweight Mesh的架构。 Lightweight Mesh SDK文件系统布局 4 网络层规范 4.1通用Lightweight Mesh帧格式 Lightweight Mesh 网络报头和有效载荷应用的是标准IEEE805.15.4的内部封装数据帧有效载 荷(参见[1]),但堆栈本身不遵守标准,因此它不会接收和处理的IEEE805.15.4命令帧。 图4-1显示了IEEE805.15.4 MAC 报头组成的通用帧格式,网络报头,应用程序有效载荷,可 选的消息完整性代码(MIC)和校验和(CRC) 以下设置用于MAC帧控制字段如[1]: • 帧类型:数据 • 安全启用:假 • 帧未完成:假 6
• 确认请求:真正的单播帧和假的广播帧 • PAN ID压缩:真 • 目标寻址模式:16位短地址 • 框架版本:0 • 源寻址模式:16位短地址 这给出了对于可以由协议栈生成和确认的MAC帧控制字段的两个可能值:0x8841为广播 帧,并0x8861用于单播帧。 4.1.1 帧控制字段(Frame Control Field) 帧控制字段是1个字节的长度,并包含控制信息的帧。帧控制字段被格式化为示于图4-2。 4.1.1.1 确认请求子字段(Acknowledgment Request Subfield) 确认请求子字段是1个位的长度,并指定从一个确认是否需要目的节点。如果该子字段被 设置为1,目的节点必须发送,如果帧的确认命令被接收和处理。如果该子字段被设置为 零,所述目的地装置不发送确认帧(例外情况见4.3节)。 4.1.1.2 安全启用子字段(Security Enabled Subfield) 安全启用字段的长度为1个位,如果该帧有效载荷进行加密,则应被设置为1,否则,就设 置为零。如果安全性已启用子字段设置为1,消息完整性代码(MIC)应存在 4.1.1.3本地链路子字段(Link Local Subfield) 本地链路字段的长度为1个位,并且它可以被设置为1,以防止转播一个相邻节点的数据 帧。此字段是仅适用于广播帧,并且对单播帧没有影响。 4.1.1.4组播子字段(Multicast Subfield) 组播字段的长度为1个位,如果目的地址是一组地址,应被设置为1,如果不是应被设置为 0。如果组播字段被设置为1,组播部首应存在。 4.1.1.5保留子字段(Reserved Subfield) 7
保留字段为4位的长度,它应被设置成0。 4.1.2序列号字段(Sequence Number Field) 序列号字段的长度是1个字节,并指定该帧的序列标识符。节点每发送一个帧,该序列编 号字段应增加1,它不应该改变路由帧。 4.1.3源地址字段(Source Address Field) 源地址字段的长度为2个字节,并指定该节点发起该帧的网络地址。 4.1.4 目的地址域(Destination Address Field) 目标地址字段的长度为2个字节,并指定目标的网络地址,不满足多播消息。目标地址字段 的含义由组播subf定义网络帧控制字段。目标地址字段可以被设置为0xFF为广播帧。 4.1.5 源端点字段(Source Endpoint Field) 源端点字段是4个位的长度,并指定源端点标识符。 0值保留了协议栈命令端点。 4.1.6目标端点字段(Destination Endpoint Field) 目标端点字段是4个位的长度,并指定目标端点标识符。 0值被保留一个协议栈命令端点。 4.1.7 组播头字段(Multicast Header Field) 组播头字段的长度为2个字节,并包含控制信息头字段的格式说明如图4-3。 4.1.7.1 非成员范围子字段(Non-member Radius Subfield) 非成员范围子字段为4个位的长度,并为剩余的范围(跳数),且不属于由所述目的地址 域字段所指示的群组节点分配一个帧。如果节点不属于组,且收到一个非成员范围子字段 等于0应该指示这个帧到应用,但是不应该在发送它。在起始节点,此子字段应与最大非 成员范围子字段(Maximum Non-member Radius Subfield )具有相同的值。在重新发送数 据帧前,属于由所述目的地址域表示的组节点应设置非成员范围子字段等于最大非成员范 8
分享到:
收藏