嵌入式多节点的无线批量程序更新系统设计
交流阶段中,节点拥有"维护"、"请求"和"发送"中的人一个状态。节点在"维护"状态广播广告并听取其他节点的广播;在请求阶段向其他节点发送数据页请求,并接收对方发来的数据;在发送状态广播被请求的数据页。图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中要注意的是,节点以广播的方式发送数据,这意味着处于"请求"状态的节点可以接收任何节点(不一定是它请求的指定节点)发送的符合其需要的数据包,这也是协议中避免网络冗余的一个体现。
图4.3 可靠数据分发交流阶段节点状态转换示意图
以上是本设计中可靠数据分发协议的全部内容,本文在下一节中将详细论述协议的软件设计实现。
3.3 可靠数据分发协议的软件设计实现
协议的软件设计在网络层实现,涉及到MAC层接口的调用。本节先简单介绍本设计实验平台上网络模块提供的MAC层应用接口,然后详细论述软件的设计和实现。
3.3.1 MAC层接口简介
首先做两点说明。
第一,设计中使用的MAC层接口不提供绝对可靠的网络通信。一方面是因为设计使用实验室自制的硬件平台主要用于做群体实验,而群体实验不需要可靠的网络通信,所以平台的通信模块也没有能实现可靠通信的机制;另一方面要求MAC层提供可靠通信也不是必要的。
第二,网络层只使用了MAC层提供的数据帧发送和数据帧接收两个接口,网络层的帧结构包含在MAC数据帧的数据域中。
从第一点可以看到,协议在网络层实现可靠数据传输的机制,降低了对MAC层通信质量的要求,而第二点说明协议仅仅需要MAC层提供两个最基本的应用接口。本设计中的可靠数据分发协议对底层通信的要求很低,具有较好的鲁棒性和可移植性。
本设计实验平台上提供的MAC层数据帧发送命令结构如图4.4所示,其中区域3为数据域,包含网络层的帧结构,另外节点在MAC层以广播的方式通信,所以命令中不包含源节点和目的节点的地址信息。MAC层接收到数据帧后,将数据域分离出来存储到接收缓存区;发送数据时,将发送缓存区中的数据加上MAC层数据帧的头部和尾部并发送出去,网络层只关心发送和接收缓冲区中的数据。这里规定以下章节中提到的各种帧结构均指网络层帧结构。
图4.4 MAC层接口数据帧发送命令
3.3.2 可靠数据分发协议的数据结构设计
网络层数据要经过缓存,解析再到存储或者执行三步操作,并且不同种类的帧要区别处理,因此一个好的数据结构设计方案对简化数据处理操作和提高数据处理效率是非常有必要的。图4.5为网络层数据流图,数据帧的流向为:
从MAC层读入后放入原始数据缓冲区;
经解析后得到帧结构;
将帧结构作相关处理后仅提取页号(p)、帧号(id)和数据(data)放到写flash缓冲区;
写flash。
注意以上是数据帧的流向,除数据帧以外的其他类型帧(如请求帧,结束帧等)只执行第(1)、(2)步操作。下面着重论述图中每个阶段涉及到的数据结构。
图4.5 网络层数据流图
缓冲区Deluge_buf
Deluge_buf是一个环形缓冲区,用于缓存原始的网络层数据。缓冲区实际上是由一个环形链表、两个指针和一个整数组成。链表的每个节点用于存储实际数据,节点数目根据需要而定;一个tail指针和一个head指针
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 嵌入式系统实时性的问题(06-21)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 嵌入式Linux系统中MMC卡驱动管理技术研究(06-10)
- FPGA的DSP性能揭秘(06-16)