《嵌入式系统中一种在线升级程序的方法.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统中一种在线升级程序的方法.pdf(6页珍藏版)》请在专利查询网上搜索。
1、10申请公布号43申请公布日21申请号201410648243622申请日20141117G06F9/445200601G06F11/1620060171申请人张毓地址100086北京市海淀区三义庙北里12号楼3门401室申请人弭强72发明人张毓弭强54发明名称嵌入式系统中一种在线升级程序的方法57摘要嵌入式系统中常常有在线升级程序的需求。如果升级过程中发生意外导致升级失败,有可能会造成严重后果。比如智能电网的电力线通信模块中的程序如果崩溃,会造成电力系统的严重故障。本文提出一种方法,对程序的关键部分采用对等备份、乒乓操作,可以使程序不至于因升级失败而崩溃,并缩短了升级的时间从而降低对系统的影。
2、响。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书2页附图2页10申请公布号CN104375863A43申请公布日20150225CN104375863A1/1页21嵌入式系统中一种在线升级程序的方法,其特征在于,在程序空间中分为两类区域APP区和ROOT区。前者采用常规更新方式升级;后者采用两块对等的ROOT区,每次需要更新ROOT区时仅更新其中一个,另一个不变,如果更新成功则使用新的ROOT区,否则使用原来的ROOT区,以待以后重新更新。2根据权利要求1所述的在线升级程序的方法,其特征是两块ROOT区是对等的,不分主从。3根据权利要求1所述的在线升级程序。
3、的方法,其特征是两块ROOT区在不升级的时候,一块中的程序在运行,另一块的程序不运行空闲;在升级的时候,空闲的那个将被升级。4根据权利要求1所述的在线升级程序的方法,其特征是对每块ROOT设置升级成功标识,程序开始运行上电或重启等的时候,可以由此确定哪个ROOT是最新且有效的,并跳转到该ROOT区继续运行。权利要求书CN104375863A1/2页3嵌入式系统中一种在线升级程序的方法技术领域0001本发明涉及嵌入式系统及电力线通信领域,尤其适用电力线通信模块的软件在线升级。背景技术0002在各种嵌入式系统中,常常用一块非易失性存储器常见的是FLASH作为程序或称软件的存储空间。由于版本升级修订。
4、错误、增加功能等,这部分程序难免要在线升级。程序一般可分成两部分应用功能区本文中简称APP区、系统启动及更新功能区简称ROOT区。0003升级过程中不可避免会遇到意外而中断,比如掉电、通信中断等。这种情况处理不当会导致系统功能缺失甚至崩溃,后果严重。比如,电力线通信模块会用在智能电网的监控网络中,一旦因升级失败而导致功能丧失,会导致电力系统故障乃至瘫痪。0004对于APP的升级,如果中途断掉,可以重新来过而不会有太大影响;对ROOT的升级,需要保证中途断掉的情况下系统依然能够运行。所以要保证ROOT的升级的健壮性,同时尽可能减少对ROOT的擦写时间。之所以要减少ROOT的擦写,是因为这段时间内。
5、系统不会对外界有响应,很可能错过一些重要的事件。这对运行中的系统,比如智能电网,是有风险的。0005常见的一种做法是,采用一个主ROOT区和一个备份ROOT区,每次升级要先后对二者都进行一次操作。本文的方法目的是保证健壮性的同时,进一步减少ROOT的操作。发明内容0006为了尽量减少ROOT升级过程中对系统的影响,本文提出一种方法采用两块对等的ROOT区,乒乓操作和使用。0007具体方法是0008程序空间划分为一个APP区,两个ROOT区。APP的升级采用常见方法即可。ROOT的升级使用采用乒乓方式。请参照图1,步骤是1原初程序使用第一个ROOT此处简称ROOT0,另一个简称ROOT1空闲;2。
6、第一次升级ROOT时,ROOT0不变,更新ROOT1直至成功;3系统使用ROOT1和APP运行;4第二次升级ROOT时,ROOT1不变,更新ROOT0直至成功;5系统使用ROOT0和APP运行;6此后如果再升级ROOT,类同25步,如此反复。0009由于ROOT区一般比较精简,而现在非易失性存储器比如NORFLASH一般容量比较大,所以多用一块ROOT区造成的空间占用比较小。而它所带来的有益效果是1始终保证至少有一块ROOT是可用的,保证了系统的健壮性。2每次升级ROOT只需对一个ROOT进行擦写,最大程度缩短了系统对外不响应的时间;而常见的办法是一个主区一个备份区,每次升级都要对二者进行擦写。
7、,相比之下时间较长,操作较复杂,出错的概率较大。0010这里的简称“ROOT区”泛指一般嵌入式系统中包含系统启动及更新的代码,系统上说明书CN104375863A2/2页4电时从这里启动。附图说明0011图1为每次升级ROOT时程序空间状态转换;0012图2为案例中程序正常运行时函数调用的中继过程;0013图3为案例中升级ROOT时的操作流程。具体实施方式0014前期准备由于是在两个ROOT中选择一个使用,那么需要保证在函数调用时能够正确命中目前所用的ROOT。这里函数调用分为三类APP之内、ROOT之内、APP与ROOT之间。前两种不需额外考虑,第三种可以在调用与返回之间使用中继函数,使程序。
8、的跳转地址可以正确命中所要用的ROOT。如图2的程序划分,系统上电后第一组跳转指令会从ROOT的两个基地址中选择有效的那个地址,依据此地址跳转到该ROOT。两个基地址ROOT0_BASE和ROOT1_BASE就存放于跳转指令的后半部分,而紧接其后的是调用的中继函数CALL_RELAY和返回的中继函数RET_RELAY。当运行程序在APP与某ROOT之间调用时,会经过这两个函数进行跳转地址的计算,计算中将依据ROOTX_BASE得到正确的跳转地址从而命中所用ROOT。图中箭头线表示的是从APP调用ROOT再返回的过程;从ROOT调用APP的过程可依此类推。0015更新某个ROOT的流程请参照图3。
9、。以运行ROOT0而更新ROOT1为例。正常运行中会遇到更新需求,于是启动对ROOT1的更新。如遇意外而重启,则虽然ROOT1更新不成功但仍可从ROOT0运行;以后远程会继续要求在线更新直至完成。ROOT1刷新后,会在上电跳转区的ROOT1_BASE中设置成功更新的标志,然后把ROOT0_BASE的标志置为无效。由于最后这一阶段是先置ROOT1_BASE有效再置ROOT0_BASE无效,那么即使这期间发生意外断电,二者至少会有一个是有效的,从而保证重启后仍能正常运行。0016以上实施方式及实施案例仅是对发明进行说明,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明思想范围之外的各种改进也视为本发明的保护范围。说明书CN104375863A1/2页5图1图2说明书附图CN104375863A2/2页6图3说明书附图CN104375863A。