CN112346770A - 一种嵌入式程序在线更新方法 - Google Patents
一种嵌入式程序在线更新方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates 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区。
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)
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)
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的方法 |
-
2020
- 2020-11-10 CN CN202011245613.3A patent/CN112346770A/zh active Pending
Patent Citations (6)
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)
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 |