CC1101的远距离无线数据传输协议设计
据帧传输的路线,因此路由表的完整性和准确性关系到数据传输速度和协议运行的效率。而广播作为路由表的生成基础,直接影响路由表的完整性和准确性。
本文提出一种二次携带信息广播协议,来提高回应节点的完整性。
二次携带信息广播:源节点首先发送一次广播命令并启动一个广播定时器,收到广播命令的节点,按照防碰撞算法进行广播命令的回应源节点在广播定时器超时之后,将收到的回应信息节点地址放入到第二次广播命令帧中,进行第二次携带信息广播,收到该广播命令的目标节点首先在广播命令帧中查找自己的地址,如果找到,则不进行广播回应,否则按照防碰撞算法进行广播回应。二次携带信息广播的过程如图2所示。
按照二次携带信息广播的过程,其广播命令帧的格式如下:
根据二次携带信息广播的原理和过程,设计如图3所示的流程。因为广播处在协议层次中的链路层,因此,此图的左半部分表示链路层程序流程,右半部分为二次携带信息广播的程序流程。
3 协议层次结构
协议划分的5层从底层到高层依次是物理层、链路层、网络层、解析层和应用层。每层负责解析自身层次数据帧,对其他层的数据格式不可见。各层的层次说明如表3所列。
根据以上5层结构中各层不同的功能,协议数据传输的过程如图4所示,可以得出,在源节点到目标节点数据流过5层,然而在中间路由节点,只需要经过协议的底3层,即中间路由节点对传输的数据是不可见的。
各个协议层的功能如下:
①物理层是协议层中的最底层,负责数据传输之前监测信道是否空闲,防止数据碰撞的发生,以便保证点对点数据传输的准确性。
②链路层主要在相邻节点间实现数据准确无误的传输,使上层不用担心帧丢失、干扰和错误等问题,向上层提供准确的数据包。
③协议网络层主要提供数据传输的路径,使数据能够按照最短路径完成传输,并向上层提供简单灵活、无连接、尽最大努力交付的数据服务。网络层服务质量关系到数据包传输的速度和网络的稳健性,是分层传递的关键技术。
当处理节点不可达信息回传时,可能会出现死循环现象,因此本文规定:如果数据帧向下层节点传输的过程中出现不可达节点,则把节点不可达信息返回给中心节点,以便中心节点为完成数据帧传输做出进一步处理;但是,如果数据帧向上层节点传输的过程中出现不可达信息,则直接丢弃数据帧,等待中心节点超时,中心节点超时没有收到回应信息,就会重传,重传超时会更新路由表或选择其他线路完成数据的传输。
④解析层主要为应用层提供一个统一的接口,应用层可以通过该接口,完成命令帧的封装和发送。除此之外,解析层将整个网络拓扑结构放在Linux内核内存空间,为了快速响应应用层对拓扑网络的请求命令,为应用层访问路由表信息提供一组路由相关的命令接口。
⑤应用层相当于用户在协议的基础上,通过调用解析层提供的接口,完成对终端节点的检测和控制。开发人员只要了解相关的接口和需要实现的功能,即使不懂协议,也可以完成程序开发。
4 系统测试
全局路由表是整个协议的核心内容,它的准确性是整个系统是否能够正常、快速运行的关键。因此,可以通过部署不同网络结构、比较网络结构与路由表记录的结构,进而验证协议路由表映射的准确性。本文设计单层、双层交叉网络结构,对协议全局路由表进行层次性测试,通过开发板输出的全局路由表结构与实际路由节点部署对比,验证各种层次结构路由协议运行的准确性。
路由表单层测试结构设计如图5(a)所示,单层模式下开发板输出全局路由表测试结果如图5(b)所示。从输出结果可以看出,ID为01的节点层次为0,父节点为-1,说明该节点是中心节点,其余节点层次都为1且父节点都只有01,从而可以证明,全局拓扑网络为以01节点为中心的单层结构。此结论与图 5(a)中的单层结构图相符,证明了协议单层结构中运行的准确性和全局路由表的完整性。
在实际环境部署节点的过程中,节点路径不可能都是简单的无交叉分支结构,其分支必定存在一定程度的交叉。因此,本文设计了双父节点双层结构测试模式,其整体节点部署如图6(a)所示,图6(b)为该模式下节点组网完成后的全局路由表。从输出的结果可以看出,第二次路由节点包括09、0C和0D,09有两个父节点0B和0E,0C和0D分别是0B和0E的子节点,0B和0E位于第一层,其父节点为01。其结果显示与实际路由分布一致,从而证明,在双父节点双层结构模式下协议运行正确。
结语
本文通过设计一种远距离无线传输协议,实现了基于CC1101无线芯片的远距离、大面积范围的数据传输。首先构建了协议的整体构架,然后设计了记录网络结构
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)