CN110633091A - 一种电子模块及其软件无线升级方法 - Google Patents
一种电子模块及其软件无线升级方法 Download PDFInfo
- Publication number
- CN110633091A CN110633091A CN201910802517.5A CN201910802517A CN110633091A CN 110633091 A CN110633091 A CN 110633091A CN 201910802517 A CN201910802517 A CN 201910802517A CN 110633091 A CN110633091 A CN 110633091A
- Authority
- CN
- China
- Prior art keywords
- program
- area
- partition
- upgrading
- bootloader
- 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
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000005192 partition Methods 0.000 claims abstract description 40
- 101150053844 APP1 gene Proteins 0.000 claims description 33
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 claims description 33
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 claims description 33
- 230000009191 jumping Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
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存储空间中有至少两个APP分区,分别用于单独存储和运行不同版本的用户程序;Bootloader程序引导程序更新的过程包括:将接收的待更新程序存储在APP区当前空闲的一个分区,在DATA区写入程序升级标志后软件复位,再通过检测当前的程序升级标志选择加载APP区中相应分区的程序运行;若当前运行分区的程序遇到故障,则设定的某一空闲分区在DATA区中对应的标志位切换为唯一有效,执行该分区存储的程序,同时向上位机发送此前分区程序故障的信号。
Description
技术领域
本发明涉及一种电子模块及其软件无线升级方法。
背景技术
在监测/控制类的电子模块开发完成后,后续可能会进行软件上的升级。但此时产品的电路板已经层层密封在外壳中,要想现场去逐个修改电子模块中的软件则需要耗费大量的人力、物力和财力。因此有必要实现电子模块软件的无线升级。
以光伏电站功率优化器为例:优化器安装在太阳能电池板上,用于监测太阳能电池板的电压、电流等情况,通过无线模块(用于300M以内)将监测到的信息以无线通信的方式及时地发送给采集器,采集器通过网口传输协议将统计到的数据反馈给上位机。系统组成如图1所示。在光伏电站运行过程中,根据实际需要会调整监测过程参数,因此电子模块作为从机,将获取来自主机传送过来的待升级的从机程序。
目前,已经有能够实现软件无线升级的方法,系统由一个主机(例如图1中所示采集器)和若干个从机(例如图1中所示优化器)组成。为了简便起见,这里仅以一个从机来说明其工作原理,如图2所示,主机与从机之间通过无线方式进行通信。从机芯片上的FLASH划分为三部分区域,分别为bootloader区、APP区(用户程序存放区)和DATA区,如下图3所示。具体如下:
bootloader区:bootloader代码放在FLASH空间的起始位置,这段程序主要负责接收由主机传送过来的待升级的从机程序,从机通过无线通信接口将待升级的程序接收后写入FLASH内部的APP区,然后设置DATA区的程序更新标志位,来跳转执行升级后的程序。
APP区:用户程序的存储和运行区,每次升级新的程序时,原来的程序就会被擦除,以便接收新的程序。
DATA区:接收到用户程序后就存储一个软件升级标志位,bootloader区会根据此标志位进行跳转执行新写入的程序。
该升级方案存在以下缺点:
1)不能够实现用户程序的多次升级。如果用户在现有的硬件基础上,还想进行二、三次或者多次升级,现有的无线升级技术将无法实现;
2)不能保证系统的稳定性。如果当前正在运行的APP程序出现运行故障,无法正常运行时,系统将无法退回到上一个未更新前版本的程序,系统将一直处于故障状态。
发明内容
本发明提出一种电子模块及其软件无线升级方法,旨在解决现有技术无法稳定、可靠适用于多次软件无线升级的问题。
本发明考虑电子模块软件的在线多次更新功能,提出以下设计目标:
产品开发人员将软件要实现的新功能开发完毕后生成新的程序,新程序通过采集器以无线方式下发到每一个电子模块,电子模块下载该新程序后自动运行新的程序,如果需要多次升级,就重复以上的步骤,电子模块依据自身的程序去实现多次升级。
如果电子模块中正在执行的当前版本程序出现故障,系统将自动回退至上一个版本或用户指定版本的程序继续运行,同时向上位机发送该故障信息。
为此,本发明给出以下解决方案:
一种电子模块,包括处理器和FLASH,其中FLASH的存储空间分为Bootloader区、APP区和DATA区;
所述APP区的存储空间划分为至少两个分区,分别用于单独存储和运行不同版本的用户程序;
所述DATA区存储的信息包括程序升级标志和程序版本号,程序升级标志中设定与APP区各个分区一一对应的标志位,其中当前运行的分区对应的标志位唯一有效;
所述Bootloader区,用于存放Bootloader程序,该Bootloader程序引导程序更新的过程包括:将接收的待更新程序存储在APP区当前空闲的一个分区,在DATA区写入程序升级标志后软件复位,再通过检测当前的程序升级标志选择加载APP区中相应分区的程序运行;若当前运行分区的程序遇到故障,则设定的某一空闲分区在DATA区中对应的标志位切换为唯一有效,Bootloader程序重新检测DATA区的程序升级标志及程序版本号,Bootloader运行指针跳转到有效标志位对应的分区,执行该分区存储的程序,同时向上位机发送此前分区程序故障的信号。
优选地,所述设定的某一空闲分区为存储前一版本程序的分区,相当于在出现故障时,选择前一版本程序运行。当然,上述APP区的分区若有三个以上,则用户还可以根据预先的设定选择另一稳定版本的程序运行。
优选地,所述APP区的存储空间划分为两个区域,记为APP0区和APP1区;多次程序更新的过程中,APP0区与APP1区分别依次交替作为写入新程序的分区和当前运行分区。
优选地,所述DATA区存储的信息还包括程序的大小,可供软件开发参考。
基于上述电子模块实现软件无线升级的方法,包括以下步骤:
1)下载基础版本:运行Bootloader程序,当检测到基础版本下载的命令后,接收基础版本的程序并将其写入APP1区域,并在DATA区写入对应于APP1区的标志位(即置对应的标志位为唯一有效)和程序版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,将指针跳转到APP1区域,去执行基础版本的程序;
2)第一次升级:当前运行的是基础版本的程序;当接收到软件升级的命令时,接收待升级程序并将其完整写入APP0区,并在DATA区写入对应于APP0区的标志位和待升级程序的版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,此时APP0区对应的标志位有效,Bootloader运行指针跳转到APP0区,执行第一次升级后的程序;
3)第二次升级:当前运行的是APP0程序;当接收到软件升级的命令时,接收待升级程序并将其完整写入APP1区,并在DATA区写入对应于APP1区的标志位和待升级程序的版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,此时APP1区对应的标志位有效,Bootloader运行指针跳转到APP1区,执行第二次升级后的程序;
4)参照步骤2)、步骤3),APP0区与APP1区分别依次交替作为写入新程序的分区和当前运行分区,实现多次无线升级。
本发明具有以下优点:
1、可简便、有效实现电子模块软件的多次无线升级。
2、能够确保电子模块软件运行的稳定性和健壮性。
3、还可便于维护人员知晓各个电子模块的软件运行版本情况,实现电子模块的可控管理。
附图说明
图1为光伏电站功率优化器涉及的系统组成示意图。
图2为主机与从机之间的无线通信连接示意图。
图3为现有软件升级方案的从机芯片内部FLASH的空间划分情况。
图4为本发明电子模块中的芯片内部FLASH的空间划分情况。
图5为Bootloader区域运行的流程图。
图6为第一次升级流程图。
图7为第二次升级流程图。
具体实施方式
以下结合附图和实施例对本发明作进一步详述:
如图4所示,本发明中将电子模块芯片内部的FLASH划分为四部分:
1)Bootloader区,用来存放Bootloader程序,即负责更新程序的拷贝和跳转到更新后的程序;其工作流程如图5所示,主要是:接收待更新的程序并把它存储在FLASH的特定位置,然后加载新的程序运行。芯片每次上电都会先读取软件升级标志,根据此软件升级标志来决定是运行最新的APP程序还是来运行上一个版本(或其他版本)的程序。
2)APP0区,用户程序的存储和运行区;
3)APP1区,用户程序的存储和运行区;
这里,将原本的APP区划分为APP0和APP1两个区域,分别用于存放更新后的程序和更新前的程序。如果APP1正在运行当前程序,此时收到程序更新指令,APP1里面的程序会将待更新的程序接收存放到APP0区域,反之亦然。为描述方便,图中将正在运行程序的APP区称为运行区,将存放更新程序的APP区称为升级区。
4)DATA区,用来存放程序升级标志位和其它一些关键信息,如程序的大小、版本号等信息。
在下载基础版本之前,FLASH内部只有Bootloader程序。
一、基于上述FLASH实现多次升级:
1)下载基础版本:当前正在运行的是Bootloader程序,当检测到基础版本下载的命令后,就会接收基础版本的程序并将其写入APP1区域,并在DATA区写入基础版本的标志位、程序大小、程序版本号;然后Bootloader程序通过检测DATA区的软件升级标志位,将指针跳转到APP1区域,去执行基础版本。
2)第一次升级:当前正在运行的是基础版本,当其接收到软件升级的命令后,就会接收待升级程序,并将待升级程序完整地写入APP0区域,并在DATA区写入第一次升级程序的标志位、程序大小、程序的版本号;然后通过Bootloader程序来读取DATA区的程序升级标志位,此时APP0区域的程序升级标志位有效,然后Bootloader将指针跳转到APP0区域,去执行升级后的程序。整个过程如图6所示。
3)第二次升级:当前正在运行的是APP0程序,当检测到要升级的命令后,就会接收待升级程序并将其完整地写入APP1区域,并在DATA区写入待升级程序的标志位、程序大小、程序的版本号;然后通过Bootloader程序来读取DATA区的程序升级标志位,此时APP1区域的程序升级标志位有效,去执行APP1的程序。如图7所示。
以此类推,就可以实现优化器的多次无线升级。
二、软件升级后的容错运行
遇故障时,运行上一个版本的程序并报错,具体的容错运行过程如下:
当优化器进行过一次程序升级后,FLASH中现有Bootloader程序,APP0程序和APP1程序。举例如下情况:目前正在运行APP0区域的程序,该程序是第一次升级后的程序,APP1区域存放的是基础版本程序。
当正在运行的APP0程序遇到故障无法正常运行时,Bootloader运行指针就会指回Bootloader区域,Bootloader程序开始重新去检测Data区域的标志位及版本号,此时APP1区域的标志位切换为有效;Bootloader将指针将跳转到APP1区域,去执行APP1的程序,同时向上位机发送APP0区域程序故障的信号。这样不仅保证了优化器系统的稳定性,还便于维护人员对优化器的可视化管理。
Claims (5)
1.一种电子模块,包括处理器和FLASH,其中FLASH的存储空间分为Bootloader区、APP区和DATA区,其特征在于:
所述APP区的存储空间划分为至少两个分区,分别用于单独存储和运行不同版本的用户程序;
所述DATA区存储的信息包括程序升级标志和程序版本号,程序升级标志中设定与APP区各个分区一一对应的标志位,其中当前运行的分区对应的标志位唯一有效;
所述Bootloader区,用于存放Bootloader程序,该Bootloader程序引导程序更新的过程包括:将接收的待更新程序存储在APP区当前空闲的一个分区,在DATA区写入程序升级标志后软件复位,再通过检测当前的程序升级标志选择加载APP区中相应分区的程序运行;若当前运行分区的程序遇到故障,则设定的某一空闲分区在DATA区中对应的标志位切换为唯一有效,Bootloader程序重新检测DATA区的程序升级标志及程序版本号,Bootloader运行指针跳转到有效标志位对应的分区,执行该分区存储的程序,同时向上位机发送此前分区程序故障的信号。
2.根据权利要求1所述的电子模块,其特征在于:所述设定的某一空闲分区为存储前一版本程序的分区。
3.根据权利要求1所述的电子模块,其特征在于:所述APP区的存储空间划分为两个区域,记为APP0区和APP1区;多次程序更新的过程中,APP0区与APP1区分别依次交替作为写入新程序的分区和当前运行分区。
4.根据权利要求1所述的电子模块,其特征在于:所述DATA区存储的信息还包括程序的大小。
5.基于权利要求3所述电子模块实现软件无线升级的方法,包括以下步骤:
1)下载基础版本:运行Bootloader程序,当检测到基础版本下载的命令后,接收基础版本的程序并将其写入APP1区域,并在DATA区写入对应于APP1区的标志位和程序版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,将指针跳转到APP1区域,去执行基础版本的程序;
2)第一次升级:当前运行的是基础版本的程序;当接收到软件升级的命令时,接收待升级程序并将其完整写入APP0区,并在DATA区写入对应于APP0区的标志位和待升级程序的版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,此时APP0区对应的标志位有效,Bootloader运行指针跳转到APP0区,执行第一次升级后的程序;
3)第二次升级:当前运行的是APP0程序;当接收到软件升级的命令时,接收待升级程序并将其完整写入APP1区,并在DATA区写入对应于APP1区的标志位和待升级程序的版本号;然后软件复位,Bootloader程序读取DATA区的程序升级标志,此时APP1区对应的标志位有效,Bootloader运行指针跳转到APP1区,执行第二次升级后的程序;
4)参照步骤2)、步骤3),APP0区与APP1区分别依次交替作为写入新程序的分区和当前运行分区,实现多次无线升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910802517.5A CN110633091A (zh) | 2019-08-28 | 2019-08-28 | 一种电子模块及其软件无线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910802517.5A CN110633091A (zh) | 2019-08-28 | 2019-08-28 | 一种电子模块及其软件无线升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110633091A true CN110633091A (zh) | 2019-12-31 |
Family
ID=68969371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910802517.5A Pending CN110633091A (zh) | 2019-08-28 | 2019-08-28 | 一种电子模块及其软件无线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633091A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240723A (zh) * | 2020-03-13 | 2020-06-05 | 乐普医学电子仪器股份有限公司 | 一种嵌入式程序升级的方法 |
CN111780342A (zh) * | 2020-06-08 | 2020-10-16 | 海信(山东)空调有限公司 | 一种空调器 |
CN112230967A (zh) * | 2020-11-19 | 2021-01-15 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN112346770A (zh) * | 2020-11-10 | 2021-02-09 | 天津津航计算技术研究所 | 一种嵌入式程序在线更新方法 |
CN113360175A (zh) * | 2021-08-11 | 2021-09-07 | 新石器慧通(北京)科技有限公司 | 车辆控制器的应用更新方法及车辆控制器 |
CN113434166A (zh) * | 2021-06-11 | 2021-09-24 | 重庆长安汽车股份有限公司 | 一种含固定刷写区且可回滚的双备份方法 |
CN113741944A (zh) * | 2021-08-16 | 2021-12-03 | 南京苏美达智能技术有限公司 | 一种具备升级功能的机器程序系统及升级方法与应用 |
CN113824620A (zh) * | 2021-08-20 | 2021-12-21 | 中国第一汽车股份有限公司 | 一种分区切换方法、装置、车辆和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240154A1 (en) * | 2005-09-29 | 2007-10-11 | Eric Gerzymisch | System and method for software integration and factory deployment |
CN101557583A (zh) * | 2009-03-19 | 2009-10-14 | 珠海银邮光电技术发展股份有限公司 | 直放站设备嵌入式软件的远程升级与版本切换方法 |
WO2009156615A1 (fr) * | 2008-06-02 | 2009-12-30 | Awox | Procede et dispositif de mise a jour d'application informatique |
CN102314369A (zh) * | 2011-10-09 | 2012-01-11 | 杭州先锋电子技术股份有限公司 | 一种远程在线监控系统中设备自升级方法 |
CN106293857A (zh) * | 2016-08-31 | 2017-01-04 | 成都国蓉科技有限公司 | 一种无线方式进行软件升级的方法 |
CN110096294A (zh) * | 2019-05-07 | 2019-08-06 | 柏科智能(厦门)科技有限公司 | 一种可任意断点无线升级mcu应用程序的方法 |
-
2019
- 2019-08-28 CN CN201910802517.5A patent/CN110633091A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070240154A1 (en) * | 2005-09-29 | 2007-10-11 | Eric Gerzymisch | System and method for software integration and factory deployment |
WO2009156615A1 (fr) * | 2008-06-02 | 2009-12-30 | Awox | Procede et dispositif de mise a jour d'application informatique |
CN101557583A (zh) * | 2009-03-19 | 2009-10-14 | 珠海银邮光电技术发展股份有限公司 | 直放站设备嵌入式软件的远程升级与版本切换方法 |
CN102314369A (zh) * | 2011-10-09 | 2012-01-11 | 杭州先锋电子技术股份有限公司 | 一种远程在线监控系统中设备自升级方法 |
CN106293857A (zh) * | 2016-08-31 | 2017-01-04 | 成都国蓉科技有限公司 | 一种无线方式进行软件升级的方法 |
CN110096294A (zh) * | 2019-05-07 | 2019-08-06 | 柏科智能(厦门)科技有限公司 | 一种可任意断点无线升级mcu应用程序的方法 |
Non-Patent Citations (2)
Title |
---|
JOHN, K ET AL.: "An out-of-core sparse Cholesky solver", 《ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE》 * |
周江平 等: "嵌入式小基站版本升级与回退机制的设计与实现", 《移动通信》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240723A (zh) * | 2020-03-13 | 2020-06-05 | 乐普医学电子仪器股份有限公司 | 一种嵌入式程序升级的方法 |
CN111780342A (zh) * | 2020-06-08 | 2020-10-16 | 海信(山东)空调有限公司 | 一种空调器 |
CN112346770A (zh) * | 2020-11-10 | 2021-02-09 | 天津津航计算技术研究所 | 一种嵌入式程序在线更新方法 |
CN112230967A (zh) * | 2020-11-19 | 2021-01-15 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN112230967B (zh) * | 2020-11-19 | 2024-03-29 | 成都新易盛通信技术股份有限公司 | 一种基于传统分区的光模块固件可回退在线升级方法 |
CN113434166A (zh) * | 2021-06-11 | 2021-09-24 | 重庆长安汽车股份有限公司 | 一种含固定刷写区且可回滚的双备份方法 |
CN113434166B (zh) * | 2021-06-11 | 2022-10-11 | 重庆长安汽车股份有限公司 | 一种含固定刷写区且可回滚的双备份方法 |
CN113360175A (zh) * | 2021-08-11 | 2021-09-07 | 新石器慧通(北京)科技有限公司 | 车辆控制器的应用更新方法及车辆控制器 |
CN113741944A (zh) * | 2021-08-16 | 2021-12-03 | 南京苏美达智能技术有限公司 | 一种具备升级功能的机器程序系统及升级方法与应用 |
CN113824620A (zh) * | 2021-08-20 | 2021-12-21 | 中国第一汽车股份有限公司 | 一种分区切换方法、装置、车辆和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110633091A (zh) | 一种电子模块及其软件无线升级方法 | |
US9110843B2 (en) | Rack and method thereof for simultaneously updating basic input output systems | |
CN109933348B (zh) | 一种电子控制单元中Bootloader的更新方法和装置 | |
WO2021115477A1 (zh) | 程序升级方法、装置、电子设备及存储介质 | |
CN102622298B (zh) | 一种软件测试系统及方法 | |
US7991988B2 (en) | Communication device and firmware update method thereof | |
US6904457B2 (en) | Automatic firmware update of processor nodes | |
CN101815988A (zh) | 固件映像更新和管理 | |
CN105930236A (zh) | 一种基于BMS Bootloader升级的应用程序版本回退方法 | |
CN103092647A (zh) | 嵌入式系统的在线升级方法 | |
CN103106083B (zh) | 一种固件的加载方法及装置 | |
CN103136015A (zh) | 控制Uboot进入下载操作模式的方法及系统 | |
WO2012071852A1 (zh) | 引导程序的升级方法和装置 | |
CN104360952A (zh) | 一种软件测试系统及方法 | |
CN111782246A (zh) | 基于总线的多节点设备嵌入式程序升级方法 | |
CN108920171A (zh) | 固件更新方法及装置、电子设备 | |
EP4237937A1 (en) | Pushing a firmware update patch to a computing device via an out-of-band path | |
CN112527365B (zh) | 应用程序更新方法、非易失存储器、存储介质及家用电器 | |
CN111736882B (zh) | 一种dsp程序的远程升级方法 | |
CN116028084A (zh) | 一种基于OpenStack云平台跨版本热升级的方法、系统及终端 | |
CN110209531A (zh) | 一种基于rs422接口的远程arm在线升级系统及方法 | |
CN115878145B (zh) | 电子设备及其系统升级方法、计算机可读存储介质 | |
CN116594661B (zh) | 一种编译阶段确保固件与工程匹配的单片机升级方法 | |
CN116028100B (zh) | 软件版本升级方法和电子设备 | |
CN115827023A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191231 |