新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 嵌入式多节点的无线批量程序更新系统设计(二)

嵌入式多节点的无线批量程序更新系统设计(二)

作者:时间:2018-08-31来源:网络收藏

 3.2 可靠数据分发协议的设计

本文引用地址:http://www.eepw.com.cn/article/201808/388162.htm

  在阐述具体的设计思路之前,先提出以下应用场景的假设。

  假设一:网络节点不支持高级的操作系统。可以理解为必须考虑节点处理和通信能力有限,而且通信协议要从底层(如MAC层)实现。

  假设二:大部分待烧录节点分布在数据基站的通讯范围之内。可以理解为通信协议不需要实现复杂的多跳通信和流水线,可以充分利用数据基站第一次数据广播,这一点下文会详细阐述。

  基于以上两点假设,可靠性数据分发协议的具体设计如下。

  考虑到不同平台的无线收发模块提供的服务接口和通信质量的差异以及程序更新对网络可靠性的要求,通信协议选择在网络层实现可靠数据分发的机制,协议只需要硬件平台在MAC层提供收发数据帧的应用接口即可。协议中,数据分发分为两个阶段:第一轮发送阶段和节点间交流阶段。图4.2为两个阶段通信方式示意图。

  (实线代表发送完整数据文件,虚线表示发送数据页)

  1、第一轮发送阶段。

  数据基站(如PC)在接收节点准备好后不间断广播数据帧,直至数据发送结束;接收节点尽力接收数据,并记录自己已有数据帧的id信息,期间不向源节点发送反馈信息。

  在原始的Deluge协议中没有这一阶段,因为Deluge协议中可能无线传感器网络庞大,分布范围也较广,所以数据分发一旦启动,所有接收到数据的节点都参与到数据发送中来;而本设计中,网络充分利用了假设二中的节点分布条件,通常情况下,在第一轮发送结束后,相当大比例的节点就已经接收到了大部分的数据,而这个过程中因为只有数据基站在发送广播,网络中数据传输的效率是最高的。当然,这种节点分布条件不满足的情况也不会明显降低数据分发效率。

  节点间交流阶段。

  交流阶段参考了trickle算法的“polite gossip”策略,所有节点(包括数据基站)都参与到交流中去。每个节点的交流的目的都是相同的,即将自己拥有的数据包发送给需要的节点和请求并接收自己需要的数据包。

  第2阶段是保证可靠性的关键,协议中让源节点也参与到交流中来,这是为了防止网络状况极差以至在第一轮发送结束之后所有节点接收数据的总和都不构成完整数据文件的极端情况。这一步中,节点长时间处于“维护”状态标志数据分发结束。

  节点首先广播广告,每一个广告包含一个摘要(φ),摘要(φ)由两部分组成:(1)本节点的IP标识v。(2)本节点的最大可用页号p,即φ(v,p)。可用页号p的定义:页p所包含的包被节点全部接收,称页p完成。页p被完成并且它之前的所有的页(0,p)也被节点全部接收,称页p可用。节点通过广告来了解对方拥有的数据信息,继而向比自己数据更完备的节点发送数据页请求。协议中将时间分成时间片(round),在每一个时间片中,节点来决定是否广播一个广告。假设时间片的长度由Tm,i来表示,它的上下界由Tl和Th来表示,则有取Tl

  交流阶段中,节点拥有“维护”、“请求”和“发送”中的人一个状态。节点在“维护”状态广播广告并听取其他节点的广播;在请求阶段向其他节点发送数据页请求,并接收对方发来的数据;在发送状态广播被请求的数据页。图4.3为状态转换示意图。主要的交流规则如下。

  (1)“维护”状态规则

  M1: 假设时间片i的开始时间为ti,节点在ti+ri的时间段内,若接收不到广告φ'=φ,则广播广告φ;若收到与φ不一致的广告(包括φ'=φ、广告帧和数据帧等),则调整时间片为Tl,并立即重新开始时间片;若接收到广告φ'=φ,则调整时间片为min(2*Tm,i ,Th )。

  M2: 节点在收到广告φ'(v',p')中p'大于自身的最大可用页p时,转向“请求”状态,向节点v'发送数据页请求;节点收到请求帧,则转向“发送”状态,广播被请求数据页。

  规则1能控制冗余广告的发送,节约网络资源,并且根据网络状况动态调整时间片长度,从而是网络资源得到有效的利用。

  规则2实现从“维护”状态到“请求”和“发送”状态的转换。

  (2)“请求”状态规则:

  M3:若节点在向源节点发出数据页请求后节点在时间t(t为自定义时间长度,是经验值,根据网络状况而定)内没有收到数据,则再次发送请求,若累计请求次数大于k(k为自定义次数),则认为请求失败,返回“维护”状态;若节点接收到数据页,则在接收结束后返回“维护”状态。

  规则3中考虑到网络的质量因素,定义了等待时间t和最大请求次数k。

  (3)“发送”状态规则:

  M4:节点进入“发送”状态立即广播被请求的数据页,广播结束后返回“维护”状态。

  规则4中要注意的是,节点以广播的方式发送数据,这意味着处于“请求”状态的节点可以接收任何节点(不一定是它请求的指定节点)发送的符合其需要的数据包,这也是协议中避免网络冗余的一个体现。

  以上是本设计中可靠数据分发协议的全部内容,本文在下一节中将详细论述协议的软件设计实现。

  3.3 可靠数据分发协议的软件设计实现

  协议的软件设计在网络层实现,涉及到MAC层接口的调用。本节先简单介绍本设计实验平台上网络模块提供的MAC层应用接口,然后详细论述软件的设计和实现。

  3.3.1 MAC层接口简介

  首先做两点说明。

  第一,设计中使用的MAC层接口不提供绝对可靠的网络通信。一方面是因为设计使用实验室自制的硬件平台主要用于做群体实验,而群体实验不需要可靠的网络通信,所以平台的通信模块也没有能实现可靠通信的机制;另一方面要求MAC层提供可靠通信也不是必要的。

  第二,网络层只使用了MAC层提供的数据帧发送和数据帧接收两个接口,网络层的帧结构包含在MAC数据帧的数据域中。

  从第一点可以看到,协议在网络层实现可靠数据传输的机制,降低了对MAC层通信质量的要求,而第二点说明协议仅仅需要MAC层提供两个最基本的应用接口。本设计中的可靠数据分发协议对底层通信的要求很低,具有较好的鲁棒性和可移植性。

  本设计实验平台上提供的MAC层数据帧发送命令结构如图4.4所示,其中区域3为数据域,包含网络层的帧结构,另外节点在MAC层以广播的方式通信,所以命令中不包含源节点和目的节点的地址信息。MAC层接收到数据帧后,将数据域分离出来存储到接收缓存区;发送数据时,将发送缓存区中的数据加上MAC层数据帧的头部和尾部并发送出去,网络层只关心发送和接收缓冲区中的数据。这里规定以下章节中提到的各种帧结构均指网络层帧结构。

  3.3.2 可靠数据分发协议的数据结构设计

  网络层数据要经过缓存,解析再到存储或者执行三步操作,并且不同种类的帧要区别处理,因此一个好的数据结构设计方案对简化数据处理操作和提高数据处理效率是非常有必要的。图4.5为网络层数据流图,数据帧的流向为:

  从MAC层读入后放入原始数据缓冲区;

  经解析后得到帧结构;

  将帧结构作相关处理后仅提取页号(p)、帧号(id)和数据(data)放到写flash缓冲区;

  写flash。

  注意以上是数据帧的流向,除数据帧以外的其他类型帧(如请求帧,结束帧等)只执行第(1)、(2)步操作。下面着重论述图中每个阶段涉及到的数据结构。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭