一种传感器网络节点代码升级管理中间件的升级方法与流程

文档序号:11965174阅读:297来源:国知局
一种传感器网络节点代码升级管理中间件的升级方法与流程
本发明涉及传感器网络中间件领域,特别是涉及一种传感器网络节点代码升级管理中间件的升级方法。

背景技术:
传感网是由大量多种类传感节点组成的自治网络,实现对物理世界的智能协同感知,是以感知为目的的物物互联综合信息系统。传感网作为信息技术前沿领域,将改变未来人们的生活方式,对国家安全、经济和社会发展产生重大影响。传感网具有高度创造性、渗透性和带动性,在工业、农业、军事、环境、电力、交通、医疗、家居、公共安全等领域具有重大的应用价值,还将在许多新兴领域体现其优越性,如保健、媒体、咨询等领域。虽然我国的传感网技术及其应用的研究几乎与发达国家同步启动,但投入相对较少。由于目前传感网缺乏统一的标准体系,设备种类和功能繁杂,节点的升级维护各自为政,无法互通,没有形成一个统一的升级管理方法。长期以来,传感网的统一标准一直没有真正出台,包括传感器网络升级管理中间件。传感网节点的升级管理中间件是一个重点也是难点,它能有效解决节点远程模块升级,提高节点管理效率,降低管理成本。与中国科学院上海微系统与信息技术研究所作为申请人先前提出的“一种对无线传感器网络中的节点进行无线升级的方法(申请号:201210156913.3)”发明专利申请比较,本发明拟从下述六方面作改进:1)所述的中间件不仅仅是升级网络节点代码,还应具有对网络节点代码进行管理的功能;2)所述的中间件应适用于多种传感器网络,也就是所谓的可以跨平台,可以适用于多种不同的厂家和型号的单片机,而不是单一的硬件平台;3)可以对传感器网络的节点的程序进行模块的选择化升级,而不是一次性全部升级,这样节约了升级成本,可以大大缩短升级时间;4)通过编译器的链接器对软件系统进行了逻辑划分,总体上分为应用、驱动、中间件三大块,提高了中间件的可移植性和可维护性;5)由于程序的逻辑划分,尤其是驱动层的划分,中间件可以适用于各种传输方式,可以是无线方式,也可以是有线方式,只要用户对驱动进行重新升级即可。6)升级过程包含模块版本管理过程,因此当某个模块被升级同时,模块内部相关的其他模块的版本如果过低,也可以进行关联升级,提高了升级效率和智能性。以上几方面的改进,构筑了本发明的构思。

技术实现要素:
本发明的目的在于提供一种传感器网络节点代码升级管理中间件的升级方法,所述的中间件能统一对不同处理器的传感器网络节点的进行代码管理和升级维护,形成标准的代码管理中间件。代码升级管理中间件作为一个中间件它位于底层模块和应用模块之间,作为一个基本中间件子集,能够运行代码管理服务,为整个系统的维护升级提供解决方案。如图1所示:所述的底层模块可以任何驱动模块和操作系统模块,该方法能够对驱动模块和操作系统进行升级;所述的中间件模块可以是任何中间件模块,也可以是网络节点代码升级管理中间件本身,该方法能够对任意某个中间件进行升级;所述的应用模块指的是在底层操作系统和中间件之上的任何应用模块,可以是单个模块,也可以是多个应用模块的集合,该方法能够对单个或多个应用模块进行升级;底层与中间件的划分,是本发明的特点之一。如果网络使用的不同的无线或有线传输模块,那么只需要更换底层驱动即可。而底层驱动对上层中间件提供统一的传输接口,C语言描述如下:BoolHalDataSend(char*pkt,int16len)表示报文数据的传输,其中pkt表示被传输的报文的首地址,len表示该被传输报文的长度。另外底层驱动需要提供的接口是存储器的操作接口,C语言描述如下:BoolHalFlashReaseAll()表示擦除整个Flash;BoolHalFlashRease(char*addr)表示对addr所指地址段Flash的擦除;BoolHalFlashWrite(char*addr,char*data,int16len)表示往addr地址的Flash段写入长度为len的数据data;代码管理中间件只需调用上述几个固定标准的驱动接口即可,体现了中间件的分层思想。代码升级管理可以对上层的应用模块、中间件自身的模块以及底层的OS(OperateSystem)、协议栈和硬件驱动的镜像模块进行远程更新,升级过过如图2所示。在设备的存储区域中有一个专门的空间,用来存放三个区的起始和结束地址如图3所示,起始地址的值写入可以通过编译器软件的链接器事先指定。节点平时处于一般的应用程序运行状态,当接收到来自网络管理节点升级命令,节点的升级管理中间件将节点的状态切换至升级状态,即立即执行升级模块代码,升级可以针对特定某个节点也可以对部分节点,甚至整个网络进行升级,当对部分或者整个网络进行升级时使用扩散传输方式。整个升级过程依次描述为:升级包构建管理升级包构建管理运行在网络管理节点上,它通过版本管理、升级模式判断和传输准备等服务,将需要部署的新模块转换成适合网络传输的升级包。其中,版本管理服务建立了中间件与应用模块之间的版本依赖关系列表,并维护着传感网模块更新历史记录表。当新模块所调用的其它模块的版本高于传感网节点上运行的模块版本时,版本管理服务就会先启动对这些低版本模块的升级任务。升级模式判断服务先对新旧模块进行比较,再根据模块本身和增量内容的大小,通过一定的算法分别计算出增量升级和整体升级的能耗,然后选择出最佳的升级模式。如果新模块仅改变了少量的代码而模块本身又很大,则应该选择增量升级模式,通过传输代码的差异部分而非整个模块来减少不必要的带宽开销;然而当模块修改幅度过大、或者传感器节点上并无旧模块时,则应使用整体升级模式,免去节点做增量更新时耗时的内存操作。传输准备服务首先会判断模块是否能够装载在目标节点上,如果目标节点容量已经无法容纳新模块,则升级直接宣告失败,而如果可以容纳,那么将继续升级过程。接下来,将升级代码分段打包封装,加上包头,并计算CRC校验码,为升级包在网络中的传输做准备工作。升级包网络传输升级包经过构建管理环节封装好之后,还需要通过网络传输环节使用广播扩散和周期性版本比较的方式将其快速、可靠地发布到网络中的各个节点。广播扩散服务又可以按照升级对象分为网络整体升级和网络局部升级,网络整体升级需要研发低功耗、收敛速度快、可靠性高的广播协议;而网络局部升级则需要研发高效的多播、路由协议。一般的广播协议难以保证全网络覆盖的可靠性(特别是移动节点),各节点还可以通过版本比较的方式保证可靠性:每个节点周期性和邻居节点交换模块版本索引,如邻居节点有新版本的模块则向其发送模块请求,邻居节点收到模块请求后发送模块的升级包,此方式也有助于升级模块的扩散。升级包接收与预处理节点接收到第一个升级包,并处理完包头信息后,先为整个升级模块的存放分配存储空间;在接收后续的升级包时,检查序列号的连贯性,并对丢失的包发送重传请求;直到新模块的所有升级包都被完整接收后,再根据升级类型还原出升级模块的完整代码。在存储空间分配时,可以根据升级模块的大小和节点MCU内部自由存储空间的余量选择合适的分配方案。如果内部存储空间足够放置升级模块,则应该使用内部空间分配的方式来避免对外接Flash的低速操作;然而当内部存储空间不足时,只能使用大容量的外接Flash来存放升级模块。丢包重传的设计可以借鉴TCPreno(TransmissionControlProtocol)算法的窗口方式,然而广播没有ACK确认帧,所以各接收节点使用接收窗口代替TCPreno的发送窗口。升级包预处理先把分段的升级包按顺序合并成完整的升级代码,并检查升级模式:对于增量升级方式,节点可以根据需要选择重组或融合两种升级算法。如图4所示,重组方式为新模块在内存中开辟等大小的自由空间,从旧模块中拷贝不变的代码段、并插入增量升级包中新的代码段,升级时只须通过改变模块注册表中的入口地址实现快速切换;在内存空间不足时可以选择融合方式,此方式不需要另外分配内存空间,可以直接在旧模块上进行内存移动与拷贝操作来注入增量代码,但这种方式要求新模块占用空间不能大于旧模块的空间,并且需要较长的模块升级锁定时间。升级过程管理升级过程控制负责模块升级前的预处理和升级时机的选择,并在升级时使用新模块替换旧模块,在升级后对新模块进行初始化、回收旧模块空间。对于不同的模块,升级的过程会有所不同:对中间件、应用程序模块,如前所述,管理器会先广播卸载通知,等待待卸载模块任务结束后,卸载旧模块并装载新模块;而对于底层镜像的更新则需要等待任务列表为空,MCU即将进入休眠之前进行。本发明涉及一种传感器网络节点代码升级管理中间件的升级方法。所述的中间件主要特点在于其通用性,能够广泛适用于多种不同的传感器网络节点当中,比如MSP430,CC2530,STM32F107等,提供了一种标准的代码升级管理中间件及实现方法。代码升级管理中间件内置于节点和网络管理服务节点内部;它将网络节点的代码分为三部分,分别为底层模块,应用模块,中间件模块。各个模块都可以通过节点代码升级管理中间件进行升级。整个中间件升级过程包括升级包构建管理,升级包网络传输,升级包接受与预处理,升级过程管理四部分。本发明屏蔽了底层传感器网络节点的硬件、驱动和操作系统的差异性,方便了节点的代码远程升级。由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明利用无线传输方式对传感器网络节点进行模块升级,极大地方便了网络设备的升级维护,提高了管理效率,节约了升级成本,尤其在节点多的情况下还能进行批量化升级。本发明利用中间件技术,使得升级管理中间件最大限度的应用于不同架构的硬件系统内,统一了升级接口,规范了升级步骤。附图说明图1为本发明提供的代码升级管理中间件;图2是本发明的代码升级管理中间件升级过程示意图;图中→表示依次升级过程,↓表示每个过程包含的技术特征;图3为存储区域存放三个区的起始和结束示意图。具体实施方式下面结合MSP430和CC2530单位机的具体实施案例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。本发明的实施方式涉及一种传感器网络节点代码升级管理中间件的升级方法:1)被升级的MSP430节点需要通过IAR开发环境的链接文件xcl对FLASH区进行划分,划分为3个区域:应用程序区,升级中间件管理协议栈区,底层驱动区。在xcl链接文件类似如下分割FLASH区:-Z(CODE)CSTART,ISR_CODE,CODE_ID,APPCODE=8000-AFFF-Z(CODE)UPCODE=B000-DFFF如果是CC2530节点,同样类似的需要IAR开发环境的链接文件xcl对FLASH进行划分,划分成3个区域:应用区,升级中间件管理协议栈区,底层驱动区。2)在MSP430和CC2530的在汇编代码中添加如下的预编译指令,以便给出各个区域的地址信息:ASEG0x0000;DW0x8000ASEG0x0002;DW0xAFFFASEG0x0004;DW0xB000ASEG0x0006;DW0xDFFFASEG0x0008;DW0xE000ASEG0x000A;DW0xFF9F2)将底层驱动与升级工程生成的d43文件(MSP430的输出文件)或d51文件(CC2530的输出文件)同时通过IAR和JTAG下载器下载到MSP430或CC2530单片机额中。3)应用程序经IAR开发环境编译成intelhex或者其他文件,该intelhex或者txt文件包含了二进制的可执行代码。4)升级管理服务设备运行着升级管理中间件,它在网络内拥有升级管理功能,该节点能负责提供升级服务,这个管理节点可以和PC机通过TCP网络或者串口等方式相连,因为一般来说升级模块文件来自PC机。连接好网络管理节点后,可以通过网络管理节点对指定的某个普通节点的某个特定模块进行无线升级。指定的模块在接收到切换命令后,将从应用程序运行状态切换至升级管理运行状态,也就是进入了代码管理中间件的运行当中。2)进入代码管理中间件运行后,管理节点会首先执行升级包的构建管理,它通过版本管理、升级模式判断和传输准备等服务,将需要部署的新模块转换成适合网络传输的升级包,具体过程可以是从升级文件中分段获取升级包。其中,版本管理服务建立了中间件与应用模块之间的版本依赖关系列表,并维护着传感网模块更新历史记录表。当新模块所调用的其它模块的版本高于传感网节点上运行的模块版本时,版本管理服务就会先启动对这些低版本模块的升级任务。升级模式判断服务先对新旧模块进行比较,再根据模块本身和增量内容的大小,通过一定的算法分别计算出增量升级和整体升级的能耗,然后选择出最佳的升级模式。如果新模块仅改变了少量的代码而模块本身又很大,则应该选择增量升级模式,通过传输代码的差异部分而非整个模块来减少不必要的带宽开销;然而当模块修改幅度过大、或者传感器节点上并无旧模块时,则应使用整体升级模式,免去节点做增量更新时耗时的内存操作。传输准备服务首先会判断模块是否能够装载在目标节点上,如果目标节点容量已经无法容纳新模块,则升级直接宣告失败,而如果可以容纳,那么将继续升级过程。接下来,将升级代码分段打包封装,加上包头。3)升级包经过构建管理环节封装好之后,还需要通过网络传输环节将其快速、可靠地发布到网络中的各个节点。广播扩散服务又可以按照升级对象分为网络整体升级和网络局部升级,网络整体升级需要配合低功耗、收敛速度快、可靠性高的广播协议;而网络局部升级则需要研发高效的多播、路由协议。具体要系统底层可以提供此类不同服务即可,因此中间件支持不同的协议模式。4)节点接收到第一个升级包,并处理完包头信息后,先为整个升级模块的存放分配存储空间;在接收后续的升级包时,检查序列号的连贯性,并对丢失的包发送重传请求;直到新模块的所有升级包都被完整接收后,再根据升级类型还原出升级模块的完整代码。在存储空间分配时,可以根据升级模块的大小和节点MCU内部自由存储空间的余量选择合适的分配方案。如果内部存储空间足够放置升级模块,则应该使用内部空间分配的方式来避免对外接Flash的低速操作;然而当内部存储空间不足时,只能使用大容量的外接Flash来存放升级模块。5)升级过程管理负责模块升级前的预处理和升级时机的选择,并在升级时使用新模块替换旧模块,在升级后对新模块进行初始化、回收旧模块空间。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1