CN101355592A - 一种传感器节点功能自维护方法 - Google Patents
一种传感器节点功能自维护方法 Download PDFInfo
- Publication number
- CN101355592A CN101355592A CNA2008102220354A CN200810222035A CN101355592A CN 101355592 A CN101355592 A CN 101355592A CN A2008102220354 A CNA2008102220354 A CN A2008102220354A CN 200810222035 A CN200810222035 A CN 200810222035A CN 101355592 A CN101355592 A CN 101355592A
- Authority
- CN
- China
- Prior art keywords
- node
- function
- code
- sensor
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
一种传感器节点功能自维护方法,通过传感器网络,采用逐跳的机制将功能更新代码发送至网络中的每个节点,保证了功能更新代码分发的可靠性。通过将传感器节点的程序存储器分为微内核区和用户程序区的分层结构,使得传感器节点自身的功能更新有了更大的灵活性,并且更加可靠。其步骤如下(1)传感器节点采用分层结构,程序存储器分为微内核区和用户程序区,微内核区为固定区,用户程序区为不可更新区。(2)传感器网络中sink节点将功能更新代码映像装入数据包并注入网络,在微内核区的控制下,数据包以逐跳的方式在整个网络中扩散,传送至网络中的每个节点。(3)传感器节点利用分层结构来实现自身的功能更新,完成节点的功能自维护。本发明提出的分层结构为传感器节点的功能自维护提供了更大的灵活性,并能保证其自维护过程中的可靠性。
Description
技术领域
本发明涉及一种传感器节点功能自维护方法,属于无线传感器网络技术和嵌入式技术领域。具体的说,是在无线传感器网络中,使传感器节点能够动态更新自身节点代码实现其功能自维护的方法。
背景技术
无线传感器网络由大量体型较小、能量受限并且配置有计算能力和无线通信能力的传感器节点组成。传感器网络的高度自主性特点使其广泛应用于军事、环境检测等危险或人力无法干预的地方。在实际应用中,无线传感器网络必须长时间自主运行。这个需要提出了两个问题,首先,随着时间和环境的变化,预测传感器节点可能需要完成的整个动作集是不可能的。其次,对某个特定的传感器网络,需求可能会发生变化,节点不可避免的要对已有的应用程序做出修改或变更。另外,对于开发人员来说,在节点程序开发过程中,需要不断地对节点上的代码进行测试、修改和调整。这些需求都要求传感器网络具有动态的代码更新功能,能根据需要有效、可靠地更新自己所运行的代码,实现自身功能的更新。同时,随着传感器节点功能的多样化和复杂化,节点的功能的自维护能力成为传感器网络的一个重要功能。
无线传感器节点功能的自维护是指网络节点代码更新的过程,是指由sink节点发起的,通过无线收发装置,向网络中的传感器节点注入程序代码,节点用新代码替换旧代码并运行新代码的过程。代码更新的过程主要由三部分组成:代码分发、代码替换和节点重启。代码分发是指sink节点将程序代码装入数据包发送到网络中,数据包以单跳或多跳的方式在网络中传播,传感器节点收到代码包后将其存放在外部程序存储器。代码替换和节点重启是指用新代码替代旧代码并运行新代码。
传感器网络的代码更新是和节点的软硬件紧密结合的,在更新过程中,必须保证代码更新的可靠性。目前针对无线传感器网络代码更新技术的研究主要集中在代码分发协议上,常见的代码分发协议如Xnp协议、MOAP协议、MNP协议等,这些协议主要关注如何将功能更新代码映像可靠地发送到网络中的每个节点。代码分发是代码更新的前提,只有代码被可靠、完整地传输到传感器节点,更新过程才是有意义的。现有的研究都是从网络协议方面去考虑节点功能自维护,这些方法在实现上缺乏灵活性,在传感器节点需要功能更新的时候,开发人员不仅需要关注所要更新的功能本身,还需要对节点上旧的代码有一定的了解,无法将节点功能自维护和实现节点功能的用户程序两部分功能独立开来。
发明内容
本发明的目的是提出一种传感器节点功能自维护方法,通过将传感器节点的程序存储器分层的结构,将节点功能自维护和实现节点功能的用户程序两部分功能独立开来,为传感器节点自身功能自维护提供了更大的灵活性,并能保证其自维护过程中的可靠性。
为完成本发明的目的,本发明采用的技术方案是:传感器节点功能自维护方法,包括以下步骤:
(1)传感器节点采用分层结构,所述的分层结构是将传感器节点程序存储器分为微内核区和用户程序区,其中微内核区完成传感器节点硬件的初始化工作和对整个节点功能自维护过程的控制,微内核区的代码不可更新,为固定区,在传感器节点生产出来时以标准化的形式烧入节点;
用户程序区为可更新区,中传感器节点实现功能自维护的载体,在该区实现传感器节点更新的功能;
(2)传感器网络中sink节点将功能更新代码映像装入数据包并注入传感器网络,在微内核区的控制下,数据包以逐跳的方式在整个网络中扩散,将功能更新代码映像传送至传感器网络中的每个节点;
(3)传感器网络中的节点收到功能更新代码映像后,利用传感器节点的分层结构实现自身的功能更新,完成节点的功能自维护。
所述步骤(2)中,功能更新代码映像在网络中以逐跳方式传播,所有的代码发送和接收都在一跳范围内完成,其步骤为:首先,由sink节点发起节点功能更新的过程,以sink节点为源节点,源节点向自己一跳范围内的节点广播所要更新的功能代码映像的版本号,其一跳范围内的节点将自身的版本号同收到的版本号进行比较,如果自身版本号小于收到的源节点广播的版本号,则需要功能更新,立即向源节点发送更新请求消息;如果节点自身的版本号大于或者等于源节点广播的版本号,表明不需要更新,则不用向源节点回复消息。源节点在收到更新请求消息后,以单播的形式,以请求节点的节点ID号为优先级发送新版本代码映像的数据包,节点在收到代码映像数据包后,需要检查是否有丢失,如果有丢失,则回复NACK消息给源节点,请求重传,直至接收到完整的功能更新代码映像;当sink节点一跳范围内的节点接收新版本的代码映像完成后,新版本的功能更新代码映像存放在节点外部存储器中,这些节点可以立即作为源节点,来更新自己一跳范围内的节点,如此循环,直到整个网络中的所有节点都收到功能更新代码映像。
所述步骤(3)中:在微内核区的控制下,保证接收到的功能更新代码映像正确后,首先擦除用户程序码数据,然后将外部存储器的功能更新代码映像写入程序存储器用户程序区,保证写入准确无误后,将控制权交给用户程序区,运行更新后的代码,从而完成节点功能自维护的过程。
本发明与现有技术相比的有益效果是:
(1)本发明将传感器节点的程序存储器分为微内核区和用户程序区,这种分层的机制为传感器节点功能自维护提供了更好的灵活性,既简化了传感器节点的生产,同时也方便了开发人员的开发调试。传感器生产厂家只需要向节点内核区注入标准化的微内核程序,而不用根据节点的不同而注入不同的程序,从而简化了节点的生产。对于开发人员,则不用去关心代码更新的过程和方式,只用关心所要更新的功能本身。
(2)本发明的微内核区和用户程序区的分开的机制保证了节点的健壮性,避免了代码更新过程中,由于代码替换出现问题而导致的节点永久性失效,并能保证其自维护过程中的可靠性。
(3)节点代码更新采用逐跳的方式,即所有的更新都在一跳范围内完成,这样进一步保证了代码更新的可靠性,节点不用维护其它节点的状态信息。节省了网络的能量,同时使网络代码更新过程中网络负载趋于均衡。
附图说明
图1为本发明的方法实现流程图;
图2为本发明的基于分层结构的传感器节点功能更新的流程图;
图3为本发明的一跳范围内传感器节点功能更新处理过程;
图4为本发明的一跳范围内网络节点功能更新源节点广播更新版本号示意图;
图5为本发明的一跳范围内需要功能更新的节点向源节点发送更新请求示意图;
图6为本发明的一跳范围内源节点以单播形式向要更新节点发送新版本代码映像示意图。
具体实施方式
如图1所示,本发明具体可划分为三个步骤:(1)传感器节点采用分层结构,程序存储器分为微内核区和用户程序区,微内核区为固定区,用户代码区为不可更新区。(2)传感器网络中sink节点将功能更新代码映像装入数据包并注入网络,在微内核区的控制下,数据包以逐跳的方式在整个网络中扩散,传送至网络中的每个节点。(3)传感器节点利用分层结构来实现自身的功能更新,完成节点的功能自维护。以下对这三个方面分别进行说明。
(1)传感器节点硬件组织
本发明的重要特点是提出一种适用于传感器网络节点功能更新的分层结构,将传感器节点的程序存储器分为微内核区和用户程序区,这样做的目的主要是使代码更新和用户程序独立开来。在实现上,将程序存储器分为两块,一块作为微内核区,另一块作为用户程序区,两个区的分界为一特定地址。微内核区为节点的固定部分,独立于用户程序区,微内核区主要完成传感器节点上硬件的初始化和节点代码更新控制的功能。由于微内核运行的程序比较固定,可以将其标准化,所以微内核部分的程序在传感器节点生产出来的时候由厂家烧入。程序存储器用户程序区主要作为传感器网络所要更新代码的载体,即存储完成传感器网络节点本身功能的代码。它是节点的可变部分,独立于微内核区。传感器节点生产完成之后,用户存储区为空,用户程序版本号标识为0。在传感器网络需要代码更新的时候,节点接收到需要更新的代码映像后,首先存入外部存储器,在确认代码映像接收无误,即在外部存储器接收到了完整的代码映像后,将外部存储器中映像写入用户程序区,然后进入用户程序区运行。
(2)功能更新代码在网络中的传送。
整个网络的功能更新涉及到传感器网络中所有的节点,在更新的时候要保证整个网络中每个节点上的代码都被更新。本部分的实现采用逐跳的方式。
首先如图2所示,在源节点上,所要更新的代码映像以数据包的形式来组织,代码映像可以分为若干数据包。通过无线收发装置发送至要更新的节点。
每个传感器节点都保存着自己结点上的代码的版本号,整个网络的更新步骤如下:
2.1)更新首先从sink节点开始,sink节点广播要更新的代码的版本号,所有节点进入待更新状态,然后以sink节点为源节点,采用数据包的形式将新版本的代码映像广播给自己一跳范围的节点,源节点一跳范围的节点收到版本号之后,首先比较收到的版本号与自己版本号的大小,判断是否需要更新。如图3所示,源节点A将所要更新的版本号广播给自己周围一跳范围内的节点B、C、D、E。
2.2)节点B、C、D、E收到源节点A的要更新的节点版本号之后,同自身代码版本号比较,从说明书附图2看出,节点C、D、E需要更新,如说明书附图3,节点C、D、E向节点A发送回复消息,而B则不用向A发送回复。
2.3)节点A收到回复消息后,以单播的形式将新版本的代码映像以单播方式分别发送给C、D、E。发送优先级按照节点的ID号排序,如说明书图5所示,优先发给C节点,然后发给D节点,最后为E节点。
2.4)节点在收到代码映像后,需要检查是否有数据包丢失,如果有丢失,则回复NACK给源节点,请求重传,直至接收到完整的代码映像。
2.5)当网络中某个节点接收完完整的代码映像后,它可以立即作为源节点,向自己一跳范围内的节点广播自己的版本号,回到步骤3.1,如此循环,直至全网更新完毕。
通过以上5步实现了整个网络的代码更新,所有的更新都在一跳范围内完成。从更新机制上保证了更新的可靠性。
(3)传感器节点功能自维护。
采用将节点程序存储器分区的机制后,保证了传感器节点本身代码更新过程中代码替换的可靠性,避免了由于代码替换出现问题而导致的传感器节点永久性失效。
如图2所示,传感器节点在加电启动后,首先进入微内核区运行,其步骤描述如下:
3.1)初始化。完成传感器节点硬件初始化工作。
3.2)判断版本号,决定是否需要更新。Version代表传感器节点上当前代码版本号,Cur_ver代表传感器节点上将要更新的代码的版本号。首先判断这两个版本号的大小,如果Version<Cur_ver代表当前节点上的代码需要更新,进入步骤3.3),否则代表当前传感器节点代码不需要更新,进入步骤3.4)。
3.3)当前传感器节点代码需要更新,首先判断Version是否为0,为0代表节点用户程序区为空,则传感器节点立即进入休眠状态,等待更新消息。如果收到更新消息,则唤醒节点,接收要更新的代码,同时将代码存储到外部存储器中,同时更新版本号。如果Version不为0,代表节点已经接收到更新的消息,则需要将下面接收到的数据作为要更新的代码存储到外部存储器,同时更新版本号。
3.4)传感器节点代码不需要更新,则首先擦除用户程序区数据,然后将外部存储区的数据移动到用户程序区。数据移动完成后,则进入用户应用程序区运行。
3.5)运行应用程序代码,完成传感器网络本身的任务。如果接收到需要代码更新的消息,则将Cur_ver设置为所要更新的版本号,然后重新启动节点。
通过以上5步,完成了传感器节点本身的功能更新过程,主要是通过外部存储器作为中转,每次将要更新的代码首先存入外部存储器,保证正确后将其写入用户区,然后进入用户区运行更新后的代码。
本发明未详细阐述的部分属于本领域技术人员的公知技术。
以上所述仅是本发明的默认实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1、一种传感器节点功能自维护方法,其特征在于包括以下步骤:
(1)传感器节点采用分层结构,所述的分层结构是将传感器节点程序存储器分为微内核区和用户程序区,其中微内核区完成传感器节点硬件的初始化工作和对整个节点功能自维护过程的控制,微内核区的代码不可更新,为固定区,在传感器节点生产出来时以标准化的形式烧入节点;
用户程序区为可更新区,中传感器节点实现功能自维护的载体,在该区实现传感器节点更新的功能;
(2)传感器网络中sink节点将功能更新代码映像装入数据包并注入传感器网络,在微内核区的控制下,数据包以逐跳的方式在整个网络中扩散,将功能更新代码映像传送至传感器网络中的每个节点;
(3)传感器网络中的节点收到功能更新代码映像后,利用传感器节点的分层结构实现自身的功能更新,完成节点的功能自维护。
2、根据权利要求1所述的传感器节点功能自维护方法,其特征在于:所述步骤(2)中,功能更新代码映像在网络中以逐跳方式传播,所有的代码发送和接收都在一跳范围内完成,其步骤为:首先,由sink节点发起节点功能更新的过程,以sink节点为源节点,源节点向自己一跳范围内的节点广播所要更新的功能代码映像的版本号,其一跳范围内的节点将自身的版本号同收到的版本号进行比较,如果自身版本号小于收到的源节点广播的版本号,则需要功能更新,立即向源节点发送更新请求消息;如果节点自身的版本号大于或者等于源节点广播的版本号,表明不需要更新,则不用向源节点回复消息;源节点在收到更新请求消息后,以单播的形式,以请求节点的节点ID号为优先级发送新版本代码映像的数据包,节点在收到代码映像数据包后,需要检查是否有丢失,如果有丢失,则回复NACK消息给源节点,请求重传,直至接收到完整的功能更新代码映像;当sink节点一跳范围内的节点接收新版本的代码映像完成后,新版本的功能更新代码映像存放在节点外部存储器中,这些节点可以立即作为源节点,来更新自己一跳范围内的节点,如此循环,直到整个网络中的所有节点都收到功能更新代码映像。
3、根据权利要求1所述的传感器节点功能自维护方法,其特征在于:所述步骤(3)中:在微内核区的控制下,保证接收到的功能更新代码映像正确后,首先擦除用户程序区数据,然后将外部存储器的功能更新代码映像写入程序存储器用户程序区,保证写入准确无误后,将控制权交给用户程序区,运行更新后的代码,从而完成节点功能自维护的过程。
4、根据权利要求3所述的传感器节点功能自维护方法,其特征在于:所述的具体实现过程为:
在微内核区:
a.初始化:完成传感器节点硬件初始化工作;
b.判断版本号,决定是否需要更新:Version代表传感器节点上当前代码版本号,Cur_ver代表传感器节点上将要更新的代码的版本号,首先判断这两个版本号的大小,如果Version<Cur_ver代表当前节点上的代码需要更新,进入步骤c,否则代表当前传感器节点代码不需要更新,进入步骤d;
c.当前传感器节点代码需要更新,首先判断Version是否为0,为0代表节点用户程序区为空,则传感器节点立即进入休眠状态,等待更新消息;如果收到更新消息,则唤醒节点,接收要更新的代码,同时将代码存储到外部存储器中,同时更新版本号;如果Version不为0,代表节点已经接收到更新的消息,则需要将下面接收到的数据作为要更新的代码存储到外部存储器,同时更新版本号;
d.传感器节点代码不需要更新,则首先擦除用户程序区数据,然后将外部存储区的数据移动到用户程序区,数据移动完成后,则进入用户程序区运行;
在用户程序区:
e.运行用户程序代码,完成传感器网络本身的任务:如果接收到需要代码更新的消息,则将Cur_ver设置为所要更新的版本号,然后重新启动节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102220354A CN101355592A (zh) | 2008-09-08 | 2008-09-08 | 一种传感器节点功能自维护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102220354A CN101355592A (zh) | 2008-09-08 | 2008-09-08 | 一种传感器节点功能自维护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101355592A true CN101355592A (zh) | 2009-01-28 |
Family
ID=40308180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102220354A Pending CN101355592A (zh) | 2008-09-08 | 2008-09-08 | 一种传感器节点功能自维护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101355592A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848111A (zh) * | 2009-03-23 | 2010-09-29 | 华为技术有限公司 | 一种软件更新方法、装置和系统 |
CN102355675A (zh) * | 2011-08-04 | 2012-02-15 | 无锡儒安科技有限公司 | 一种代码分发协议中减少干扰冲突的方法 |
CN102469575A (zh) * | 2010-11-11 | 2012-05-23 | 正文科技股份有限公司 | 无线通信系统及其无线通信装置 |
CN103532922A (zh) * | 2012-09-29 | 2014-01-22 | 深圳市友讯达科技发展有限公司 | 一种软件版本升级方法、装置及系统 |
CN105871571A (zh) * | 2015-01-20 | 2016-08-17 | 中国科学院上海高等研究院 | 一种传感器网络管理方法及系统 |
-
2008
- 2008-09-08 CN CNA2008102220354A patent/CN101355592A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848111A (zh) * | 2009-03-23 | 2010-09-29 | 华为技术有限公司 | 一种软件更新方法、装置和系统 |
CN102469575A (zh) * | 2010-11-11 | 2012-05-23 | 正文科技股份有限公司 | 无线通信系统及其无线通信装置 |
CN102355675A (zh) * | 2011-08-04 | 2012-02-15 | 无锡儒安科技有限公司 | 一种代码分发协议中减少干扰冲突的方法 |
CN103532922A (zh) * | 2012-09-29 | 2014-01-22 | 深圳市友讯达科技发展有限公司 | 一种软件版本升级方法、装置及系统 |
CN103532922B (zh) * | 2012-09-29 | 2016-12-21 | 深圳友讯达科技股份有限公司 | 一种软件版本升级方法、装置及系统 |
CN105871571A (zh) * | 2015-01-20 | 2016-08-17 | 中国科学院上海高等研究院 | 一种传感器网络管理方法及系统 |
CN105871571B (zh) * | 2015-01-20 | 2019-02-22 | 中国科学院上海高等研究院 | 一种传感器网络管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dong et al. | Elon: enabling efficient and long-term reprogramming for wireless sensor networks | |
CN101963915B (zh) | 一种编译的构建方法及系统 | |
CN101355592A (zh) | 一种传感器节点功能自维护方法 | |
CN105607922B (zh) | 一种时钟免维护固件易升级的智能电能表及其升级方法 | |
US9710288B2 (en) | Method and device for loading application program | |
CN102855152A (zh) | 升级应用程序中资源文件的方法及系统 | |
CN102624762B (zh) | 基于云计算提升机器人软件功能的方法和云计算服务器 | |
CN110417871A (zh) | 一种智能设备升级方法 | |
CN106020875A (zh) | 嵌入式终端的固件更新管理方法和装置 | |
Porter et al. | Type-safe updating for modular WSN software | |
Marrón et al. | Management and configuration issues for sensor networks | |
CN108958777A (zh) | 一种无线充电设备及控制方法 | |
Dong et al. | Optimizing relocatable code for efficient software update in networked embedded systems | |
CN105094973A (zh) | 基于敏感指令替换的ada程序分区运行支持系统 | |
Aiello et al. | Java-based mobile agent platforms for wireless sensor networks | |
CN102158434A (zh) | 一种在智能网关上实现应用程序管理的方法及智能网关 | |
CN102065411B (zh) | 无线传感器网络的动态更新方法 | |
Chang et al. | Dynamic software update model for remote entity management of machine‐to‐machine service capability | |
Yao et al. | Design and implementation of IOT gateway based on embedded μTenux operating system | |
CN101699436A (zh) | 资源管理的方法、装置和系统 | |
Tu et al. | EcoCast: Interactive, object-oriented macroprogramming for networks of ultra-compact wireless sensor nodes | |
KR20070096316A (ko) | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 | |
CN101719920B (zh) | 路由协议软件中基于构件的组件生成方法 | |
CN102045389A (zh) | 一种基于osgi的分布式数据存储方法 | |
Gracioli et al. | An operating system infrastructure for remote code update in deeply embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090128 |