论文部分内容阅读
无线传感器网络(WSNs)在环境监测、军事战场、工业控制等领域的应用非常广泛。在真实的WSNs中,通常需要部署成百上千个节点。随着时间推移和环境变化,可能需对运行的节点增加、关闭一些功能或者修复软件中存在的问题,即节点运行的程序需要进行重编程以实现版本更新。传统手动的更新方式效率低下,甚至某些部署在环境恶劣或人类无法到达区域的节点不能实现更新,因此研究者提出无线远程更新方式。但是,大部分代码更新操作,新版本程序代码相对于旧版本需要更新的部分远小于整个新版本程序代码。此外,鉴于传感器节点自身的资源限制,所以节点通过无线方式远程进行更新时,需要减小重编程过程中分发的代码量,提高重编程效率并降低节点能耗。本文以MeshSPAIS智能精准农业信息系统为背景对基于差异的WSNs重编程进行深入研究,提出基于代码克隆检测技术的WSNs重编程方法(RePCCDT)和总体架构,主要工作如下:首先,对WSNs重编程的两个部分即代码分发协议和重编程方法进行研究,重点分析Deluge、Zephyr/Hermes、Elon、R2几种具有代表性的重编程方法,指出它们在代码分发量和能耗方面存在的不足及待改进之处。其次,针对基于差异的WSNs重编程的新旧版本程序代码相似度的保护问题,提出BGIR代码相似度保护方法。该方法从分支、全局变量、间接寻址、相对跳转四个方面分别处理其变化所带来的影响,以提高新旧版本程序的相似性,为后续差异补丁生成算法生成较小的差异补丁做准备。通过理论分析和实例分析验证该方法能够提高新旧版本程序代码相似性从而减小差异补丁的大小。然后,针对基于差异的WSNs重编程的差异补丁生成问题,提出基于代码克隆检测技术的差异补丁生成算法CCDTDiff。将基于Token序列的代码克隆检测技术引入到差异补丁生成算法中,寻找新旧版本程序代码的公共代码段,用本文设计的差异补丁计算算法生成最小化的差异补丁。从算法的执行效率和差异补丁生成大小两个方面分析该算法的性能。最后,设计基于代码克隆检测技术的WSNs重编程总体架构和引导装载程序Bootloader。总体架构主要包括三个模块:差异补丁生成、代码分发和构建程序镜像,接着改进默认的Bootloader使节点通过软件重启来执行更新后的程序。通过TOSSIM仿真实验验证该架构的可行性,差异补丁生成模块能够生成最小化的补丁,减少重编程过程中下载代码耗费的时间和消耗的能量。