CN112346770A - 一种嵌入式程序在线更新方法 - Google Patents

一种嵌入式程序在线更新方法 Download PDF

Info

Publication number
CN112346770A
CN112346770A CN202011245613.3A CN202011245613A CN112346770A CN 112346770 A CN112346770 A CN 112346770A CN 202011245613 A CN202011245613 A CN 202011245613A CN 112346770 A CN112346770 A CN 112346770A
Authority
CN
China
Prior art keywords
program
area
address
running
bootstrap
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
Application number
CN202011245613.3A
Other languages
English (en)
Inventor
孙磊
王进军
朵慧智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
Tianjin Jinhang Computing Technology Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Jinhang Computing Technology Research Institute filed Critical Tianjin Jinhang Computing Technology Research Institute
Priority to CN202011245613.3A priority Critical patent/CN112346770A/zh
Publication of CN112346770A publication Critical patent/CN112346770A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种嵌入式程序在线更新系统,其包括FLASH程序存储区和RAM运行程序区,FLASH程序存储区分为A区和B区两个区域,其中一个区域作为引导程序区域,另一个区域作为改写程序区域,引导程序区域负责将程序BOOT到RAM运行程序区中运行,在RAM运行程序区中运行的程序将更新的代码写入改写程序区域。本发明采用FLASH分区存储和引导的程序加载方式,即使更新过程被打断,也能保护程序不被破坏,下一次启动时程序仍然能够执行在线更新操作,全面提升了设备的安全性和可靠性。

Description

一种嵌入式程序在线更新方法
技术领域
本发明属于嵌入式计算机技术领域,涉及一种安全可靠的嵌入式程序在线更新方法。
背景技术
嵌入式设备软件在线更新,需要通过外部接口接收新版本的程序,然后将新版本的程序写入FLASH,替换旧版本的程序。传统方法如图1所示,FLASH中存储的程序被引导到RAM,RAM加载完成后执行程序的代码段。程序收到在线更新请求时,会改写FLASH中存储的程序。首先将FLASH存储区中的旧程序擦除,然后将新版本的程序写入原先的存储区。改写FLASH的过程耗时较长,一旦出现设备断电或者FLASH改写失败的情况,旧版本程序被擦除的同时,新版本的程序也未能完全写入FLASH。这样一来,造成了下一次设备启动时,新版本不完整的程序被加载到RAM。不仅不能实现程序的应用功能,而且在线更新的功能也无法使用,只能通过被迫拆卸设备外壳的手段,手动连接编程器更新程序,造成时间上的损失以及操作繁琐的问题。
发明内容
(一)发明目的
针对嵌入式程序在线更新的需求,设计一种安全可靠的嵌入式程序在线更新方法。
(二)技术方案
为了解决上述技术问题,本发明提供一种安全可靠的嵌入式程序在线更新方法,嵌入式程序在线更新方法,更新过程为:对FLASH程序存储区进行A、B分区,实现FLASH中引导程序区域与改写程序区域的分离,引导程序区域负责将程序BOOT到RAM运行程序区中运行,在RAM运行程序区中运行的程序将更新的代码写入改写程序区域;在线更新成功后,通过交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
优选地,将FLASH存储程序A区作为引导程序区,FLASH存储程序B区作为改写程序区,默认引导地址为A区基地址,默认改写地址为B区基地址;程序更新的步骤为:
步骤一引导
设备启动后,在A区中存储的旧程序版本被系统的引导程序加载到RAM运行程序区;加载完成后,旧程序在RAM运行程序区中运行,执行应用功能并等待外部的在线更新命令;
步骤二改写
在RAM运行程序区中运行的旧程序收到在线更新命令后,接收外部传输的新程序版本;接收完成后,对FLASH存储程序B区进行擦除操作;擦除完成后,将新程序写入FLASH存储程序B区;
步骤三切换
将B区的基地址设置为引导地址,A区的基地址设置为改写地址;设备下一次启动时,重复执行步骤一、二、三。
(三)有益效果
上述技术方案所提供的安全可靠的嵌入式程序在线更新方法,采用FLASH分区存储和引导的程序加载方式,即使更新过程被打断,也能保护程序不被破坏,下一次启动时程序仍然能够执行在线更新操作,全面提升了设备的安全性和可靠性。
附图说明
图1是传统程序在线更新方式框图。
图2是存储A区程序更新存储B区程序的框图。
图3是存储B区程序更新存储A区程序的框图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
考虑到连接编程器更新程序需要事先拆卸产品外壳,操作不便且效率低下,嵌入式程序的更新方式一般为在线更新。在嵌入式程序在线更新的过程中,一旦断电或设备出现异常,FLASH中的程序会被破坏,影响程序自身功能的实现,而且下一次启动时程序便不能再次执行在线更新操作。本方法采用FLASH分区存储和引导的程序加载方式,即使更新过程被打断,也能保护程序不被破坏,下一次启动时程序仍然能够执行在线更新操作,全面提升了设备的安全性和可靠性。
参照图2和图3所示,首先,本发明提供一种嵌入式程序在线更新系统,包括FLASH程序存储区和RAM运行程序区,FLASH程序存储区分为A区和B区两个区域,其中一个区域作为引导程序区域,另一个区域作为改写程序区域,引导程序区域负责将程序BOOT到RAM运行程序区中运行,在RAM运行程序区中运行的程序将更新的代码写入改写程序区域。
其中,A区作为引导程序区域,B区作为改写程序区域时,引导地址为A区基地址,改写地址为B区基地址;程序在线更新成功后,交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
B区作为引导程序区域,A区作为改写程序区域时,引导地址为B区基地址,改写地址为A区基地址;程序在线更新成功后,交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
本发明通过对FLASH程序存储区进行A/B分区,实现FLASH中引导程序区域与改写程序区域的分离。引导程序区域负责将程序BOOT到RAM中运行,在RAM中运行的程序会将更新的代码写入改写程序区域。在更新过程中,断电或FLASH异常仅会影响改写程序区域。设备下一次启动后,引导程序仍然可以被加载到RAM中正常执行应用功能或者更新功能。在线更新成功后,通过交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。设备下一次启动时,会默认加载新版本的程序,从而完成嵌入式软件的版本升级。
在嵌入式设备中,FLASH是程序存储的载体,RAM的是程序运行的载体。如图2所示,将FLASH存储程序A区作为引导程序区,FLASH存储程序B区作为改写程序区。默认引导地址为A区基地址,默认改写地址为B区基地址。
具体实施步骤如下:
步骤一引导
设备启动后,在A区中存储的旧程序1.0版本会被系统的引导程序加载到RAM。加载完成后,旧程序在RAM中运行,执行应用功能并等待外部的在线更新命令。
步骤二改写
在RAM中运行的旧程序收到在线更新命令后,接收外部传输的新程序2.0版本。接收完成后,对FLASH存储程序B区进行擦除操作。擦除完成后,将新程序写入FLASH存储程序B区。在写入的过程中,一旦出现设备断电或者新程序写入FLASH失败。在设备下一次启动时,重复执行步骤一,旧程序会被加载,可以重新进行在线更新。
步骤三切换
如果在步骤二中新程序成功被写入了FLASH存储程序B区,则将B区的基地址设置为引导地址,A区的基地址设置为改写地址。如图3所示,设备下一次启动时,会重复执行步骤一、二、三。区别在于,由于A/B区引导地址与改写地址的切换,在线更新后存储在B区的2.0版本程序会被加载到RAM中运行,下一次的更新会擦除A区并将更新版本的3.0版本程序写入A区。
循环交替更新A/B区,保证了旧版本的程序在更新的过程中不被破坏,避免了因更新中途失败导致的拆卸设备的风险,提升了程序在线更新的安全性和可靠性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (10)

1.一种嵌入式程序在线更新系统,其特征在于,包括FLASH程序存储区和RAM运行程序区,FLASH程序存储区分为A区和B区两个区域,其中一个区域作为引导程序区域,另一个区域作为改写程序区域,引导程序区域负责将程序BOOT到RAM运行程序区中运行,在RAM运行程序区中运行的程序将更新的代码写入改写程序区域。
2.如权利要求1所述的嵌入式程序在线更新系统,其特征在于,所述A区作为引导程序区域,B区作为改写程序区域时,引导地址为A区基地址,改写地址为B区基地址;程序在线更新成功后,交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
3.如权利要求1所述的嵌入式程序在线更新系统,其特征在于,所述B区作为引导程序区域,A区作为改写程序区域时,引导地址为B区基地址,改写地址为A区基地址;程序在线更新成功后,交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
4.一种嵌入式程序在线更新方法,其特征在于,更新过程为:对FLASH程序存储区进行A、B分区,实现FLASH中引导程序区域与改写程序区域的分离,引导程序区域负责将程序BOOT到RAM运行程序区中运行,在RAM运行程序区中运行的程序将更新的代码写入改写程序区域;在线更新成功后,通过交换引导程序区域基地址与改写程序区域基地址,实现FLASH中引导程序区域与改写程序区域的交换。
5.如权利要求4所述的嵌入式程序在线更新方法,其特征在于,将FLASH存储程序A区作为引导程序区,FLASH存储程序B区作为改写程序区,默认引导地址为A区基地址,默认改写地址为B区基地址;程序更新的步骤为:
步骤一 引导
设备启动后,在A区中存储的旧程序版本被系统的引导程序加载到RAM运行程序区;加载完成后,旧程序在RAM运行程序区中运行,执行应用功能并等待外部的在线更新命令;
步骤二 改写
在RAM运行程序区中运行的旧程序收到在线更新命令后,接收外部传输的新程序版本;接收完成后,对FLASH存储程序B区进行擦除操作;擦除完成后,将新程序写入FLASH存储程序B区;
步骤三 切换
将B区的基地址设置为引导地址,A区的基地址设置为改写地址;设备下一次启动时,重复执行步骤一、二、三。
6.如权利要求5所述的嵌入式程序在线更新方法,其特征在于,所述步骤二中,在程序写入过程中,出现设备断电或者新程序写入FLASH失败,则在设备下一次启动时,重复执行步骤一,旧程序被加载,重新进行在线更新。
7.如权利要求6所述的嵌入式程序在线更新方法,其特征在于,所述步骤三中,A区、B区引导地址与改写地址切换,在线更新后存储在B区的新版本程序被加载到RAM运行程序区中运行,下一次更新时,擦除A区并将更新版本的程序写入A区。
8.如权利要求4所述的嵌入式程序在线更新方法,其特征在于,将FLASH存储程序B区作为引导程序区,FLASH存储程序A区作为改写程序区,默认引导地址为B区基地址,默认改写地址为A区基地址;程序更新的步骤为:
步骤一 引导
设备启动后,在B区中存储的旧程序版本被系统的引导程序加载到RAM运行程序区;加载完成后,旧程序在RAM运行程序区中运行,执行应用功能并等待外部的在线更新命令;
步骤二 改写
在RAM运行程序区中运行的旧程序收到在线更新命令后,接收外部传输的新程序版本;接收完成后,对FLASH存储程序A区进行擦除操作;擦除完成后,将新程序写入FLASH存储程序A区;
步骤三 切换
将A区的基地址设置为引导地址,B区的基地址设置为改写地址;设备下一次启动时,重复执行步骤一、二、三。
9.如权利要求8所述的嵌入式程序在线更新方法,其特征在于,所述步骤二中,在程序写入过程中,出现设备断电或者新程序写入FLASH失败,则在设备下一次启动时,重复执行步骤一,旧程序被加载,重新进行在线更新。
10.如权利要求9所述的嵌入式程序在线更新方法,其特征在于,所述步骤三中,B区、A区引导地址与改写地址切换,在线更新后存储在A区的新版本程序被加载到RAM运行程序区中运行,下一次更新时,擦除B区并将更新版本的程序写入B区。
CN202011245613.3A 2020-11-10 2020-11-10 一种嵌入式程序在线更新方法 Pending CN112346770A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011245613.3A CN112346770A (zh) 2020-11-10 2020-11-10 一种嵌入式程序在线更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011245613.3A CN112346770A (zh) 2020-11-10 2020-11-10 一种嵌入式程序在线更新方法

Publications (1)

Publication Number Publication Date
CN112346770A true CN112346770A (zh) 2021-02-09

Family

ID=74363138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011245613.3A Pending CN112346770A (zh) 2020-11-10 2020-11-10 一种嵌入式程序在线更新方法

Country Status (1)

Country Link
CN (1) CN112346770A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220319A (zh) * 2021-03-17 2021-08-06 广州橙行智动汽车科技有限公司 一种数据更新方法、装置及车辆
CN117573175A (zh) * 2024-01-16 2024-02-20 广东高斯宝电气技术有限公司 不复位控制芯片的固件实时更新方法、系统及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023876A (zh) * 2009-09-14 2011-04-20 漳州科能电器有限公司 一种可软件在线升级的嵌入式系统及在线升级方法
CN104360877A (zh) * 2014-10-24 2015-02-18 同济大学 基于Bootloader自更新的ECU固件更新方法
US20180101388A1 (en) * 2016-10-07 2018-04-12 Blackberry Limited Selecting a boot loader on an electronic device
CN110633091A (zh) * 2019-08-28 2019-12-31 西安超霸电气科技有限公司 一种电子模块及其软件无线升级方法
CN111240723A (zh) * 2020-03-13 2020-06-05 乐普医学电子仪器股份有限公司 一种嵌入式程序升级的方法
CN111309350A (zh) * 2019-12-31 2020-06-19 浙江零跑科技有限公司 一种更新bootload的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023876A (zh) * 2009-09-14 2011-04-20 漳州科能电器有限公司 一种可软件在线升级的嵌入式系统及在线升级方法
CN104360877A (zh) * 2014-10-24 2015-02-18 同济大学 基于Bootloader自更新的ECU固件更新方法
US20180101388A1 (en) * 2016-10-07 2018-04-12 Blackberry Limited Selecting a boot loader on an electronic device
CN110633091A (zh) * 2019-08-28 2019-12-31 西安超霸电气科技有限公司 一种电子模块及其软件无线升级方法
CN111309350A (zh) * 2019-12-31 2020-06-19 浙江零跑科技有限公司 一种更新bootload的方法
CN111240723A (zh) * 2020-03-13 2020-06-05 乐普医学电子仪器股份有限公司 一种嵌入式程序升级的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220319A (zh) * 2021-03-17 2021-08-06 广州橙行智动汽车科技有限公司 一种数据更新方法、装置及车辆
CN117573175A (zh) * 2024-01-16 2024-02-20 广东高斯宝电气技术有限公司 不复位控制芯片的固件实时更新方法、系统及存储介质

Similar Documents

Publication Publication Date Title
US9164756B2 (en) Software updating process for an embedded device
US6807630B2 (en) Method for fast reinitialization wherein a saved system image of an operating system is transferred into a primary memory from a secondary memory
EP3200077B1 (en) Vehicle control device, reprogramming system
CN102508686A (zh) 一种系统安全升级的实现方法及其系统
CN113377408B (zh) 一种高可靠sram型fpga在线升级方法及系统
CN112346770A (zh) 一种嵌入式程序在线更新方法
CN107566169B (zh) 一种基于openwrt的固件升级方法及路由器
CN105760165B (zh) 一种mcu自我备份加载刷新的方法
WO2021103745A1 (zh) 一种引导程序的保护设计方法
CN112947977A (zh) 一种软件在线升级方法及系统
JP3886539B2 (ja) オペレーティングシステムをロードする方法
CN115718610A (zh) 一种可靠的单片机应用程序更新的方法
CN111026417A (zh) 一种嵌入式设备的升级方法及嵌入式设备
CN116301973A (zh) 固件升级方法、装置、设备及可读存储介质
JP2002175193A (ja) プログラム書き換え装置及びプログラム書き換え方法
CN114996717A (zh) 一种防止误擦除的升级程序设计方法
CN112667444A (zh) 一种系统升级方法、存储介质及终端设备
JPH0855068A (ja) 通信端末装置
CN116560700B (zh) 芯片固件升级系统
JP2008305263A (ja) 不揮発性半導体記憶装置及びメモリ管理方法
CN116185461B (zh) 固件升级方法及系统
CN110096047B (zh) 一种机器人运动控制系统的升级方法及系统
CN111475179B (zh) 一种软件在线刷写方法、装置、电子控制单元及上位机
CN114760621A (zh) 终端刷机方法、装置、计算机设备及存储介质
CN113986261A (zh) 一种数据刷写的方法、相关装置、设备以及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination