[发明专利]嵌入式系统中一种在线升级程序的方法在审
| 申请号: | 201410648243.6 | 申请日: | 2014-11-17 |
| 公开(公告)号: | CN104375863A | 公开(公告)日: | 2015-02-25 |
| 发明(设计)人: | 张毓;弭强 | 申请(专利权)人: | 张毓;弭强 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F11/16 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 100086 北京市海*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 嵌入式 系统 一种 在线 升级 程序 方法 | ||
技术领域
本发明涉及嵌入式系统及电力线通信领域,尤其适用电力线通信模块的软件在线升级。
背景技术
在各种嵌入式系统中,常常用一块非易失性存储器(常见的是flash)作为程序(或称软件)的存储空间。由于版本升级(修订错误、增加功能等),这部分程序难免要在线升级。程序一般可分成两部分:应用功能区(本文中简称APP区)、系统启动及更新功能区(简称ROOT)区。
升级过程中不可避免会遇到意外而中断,比如掉电、通信中断等。这种情况处理不当会导致系统功能缺失甚至崩溃,后果严重。比如,电力线通信模块会用在智能电网的监控网络中,一旦因升级失败而导致功能丧失,会导致电力系统故障乃至瘫痪。
对于APP的升级,如果中途断掉,可以重新来过而不会有太大影响;对ROOT的升级,需要保证中途断掉的情况下系统依然能够运行。所以要保证ROOT的升级的健壮性,同时尽可能减少对ROOT的擦写时间。之所以要减少ROOT的擦写,是因为这段时间内系统不会对外界有响应,很可能错过一些重要的事件。这对运行中的系统,比如智能电网,是有风险的。
常见的一种做法是,采用一个主ROOT区和一个备份ROOT区,每次升级要先后对二者都进行一次操作。本文的方法目的是保证健壮性的同时,进一步减少ROOT的操作。
发明内容
为了尽量减少ROOT升级过程中对系统的影响,本文提出一种方法:采用两块对等的ROOT区,乒乓操作和使用。
具体方法是:
程序空间划分为一个APP区,两个ROOT区。APP的升级采用常见方法即可。ROOT的升级使用采用乒乓方式。请参照图1,步骤是:(1)原初程序使用第一个ROOT(此处简称ROOT0),另一个(简称ROOT1)空闲;(2)第一次升级ROOT时,ROOT0不变,更新ROOT1直至成功;(3)系统使用ROOT1和APP运行;(4)第二次升级ROOT时,ROOT1不变,更新ROOT0直至成功;(5)系统使用ROOT0和APP运行;(6)此后如果再升级ROOT,类同(2)~(5)步,如此反复。
由于ROOT区一般比较精简,而现在非易失性存储器(比如NOR flash)一般容量比较大,所以多用一块ROOT区造成的空间占用比较小。而它所带来的有益效果是:(1)始终保证至少有一块ROOT是可用的,保证了系统的健壮性。(2)每次升级ROOT只需对一个ROOT进行擦写,最大程度缩短了系统对外不响应的时间;而常见的办法是一个主区一个备份区,每次升级都要对二者进行擦写,相比之下时间较长,操作较复杂,出错的概率较大。
这里的简称“ROOT区”泛指一般嵌入式系统中包含系统启动及更新的代码,系统上电时从这里启动。
附图说明
图1为每次升级ROOT时程序空间状态转换;
图2为案例中程序正常运行时函数调用的中继过程;
图3为案例中升级ROOT时的操作流程。
具体实施方式
前期准备:由于是在两个ROOT中选择一个使用,那么需要保证在函数调用时能够正确命中目前所用的ROOT。这里函数调用分为三类——APP之内、ROOT之内、APP与ROOT之间。前两种不需额外考虑,第三种可以在调用与返回之间使用中继函数,使程序的跳转地址可以正确命中所要用的ROOT。如图2的程序划分,系统上电后第一组跳转指令会从ROOT的两个基地址中选择有效的那个地址,依据此地址跳转到该ROOT。两个基地址root0_base和root1_base就存放于跳转指令的后半部分,而紧接其后的是调用的中继函数call_relay()和返回的中继函数ret_relay()。当运行程序在APP与某ROOT之间调用时,会经过这两个函数进行跳转地址的计算,计算中将依据rootX_base得到正确的跳转地址从而命中所用ROOT。图中箭头线表示的是从APP调用ROOT再返回的过程;从ROOT调用APP的过程可依此类推。
更新某个ROOT的流程请参照图3。以运行ROOT0而更新ROOT1为例。正常运行中会遇到更新需求,于是启动对ROOT1的更新。如遇意外而重启,则虽然ROOT1更新不成功但仍可从ROOT0运行;以后远程会继续要求在线更新直至完成。ROOT1刷新后,会在上电跳转区的root1_base中设置成功更新的标志,然后把root0_base的标志置为无效。由于最后这一阶段是先置root1_base有效再置root0_base无效,那么即使这期间发生意外断电,二者至少会有一个是有效的,从而保证重启后仍能正常运行。
以上实施方式及实施案例仅是对发明进行说明,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明思想范围之外的各种改进也视为本发明的保护范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于张毓;弭强,未经张毓;弭强许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410648243.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:LED芯片及其制备方法
- 下一篇:一种船舶锅炉水位控制系统





