CN114546455A - 一种双分区的mcu软件升级方法及装置 - Google Patents
一种双分区的mcu软件升级方法及装置 Download PDFInfo
- Publication number
- CN114546455A CN114546455A CN202210347289.9A CN202210347289A CN114546455A CN 114546455 A CN114546455 A CN 114546455A CN 202210347289 A CN202210347289 A CN 202210347289A CN 114546455 A CN114546455 A CN 114546455A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- software
- partition
- mcu
- mark
- 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
-
- 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/656—Updates while running
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
本申请提供了一种双分区的MCU软件升级方法及装置,涉及车载设备技术领域,具体为:当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志;接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;当接收到总帧数的数据包,将软件升级数据包缓存在APP区的第二分区,将升级状态标志更新为发起升级标志软件更新标志;在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至第一分区,并将升级状态标志更新为初始标志;控制MCU进入APP区的第一分区运行升级后的软件代码。本申请提高了MCU软件升级的可靠性,提升了用户体验感。
Description
技术领域
本申请涉及车载设备技术领域,尤其是涉及一种双分区的MCU软件升级方法及装置。
背景技术
传统MCU的软件升级都是单分区方案,FLASH区被划分为BOOT区和APP区。此方案的应用代码只存在一份,且发起升级后会被擦除,一旦在升级过程中出现断电等异常情况,MCU将无应用代码执行。在用户驾车行驶的过程中造成较差的体验。
发明内容
有鉴于此,本申请提供了一种双分区的MCU软件升级方法及装置,以解决上述技术问题。
第一方面,本申请提供了一种双分区的MCU软件升级方法,应用于MCU,包括:
当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
当接收到总帧数的数据包,将软件升级数据包缓存在APP区的第二分区,将升级状态标志更新为软件更新标志;
在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
控制MCU进入APP区的第一分区运行升级后的软件代码。
进一步的,所述方法还包括:将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。
进一步的,所述方法还包括:对接收到的SOC端发送的数据帧进行校验和帧序号检测。
进一步的,在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,所述方法还包括:
在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
进一步的,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,所述方法还包括:
在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
第二方面,本申请实施例提供了一种双分区的MCU软件升级装置,应用于MCU,包括:
发起升级启动单元,用于当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
数据包请求单元,用于接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
数据包缓存单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
数据包拷贝单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
升级运行单元,用于控制MCU进入APP区的第一分区运行升级后的软件代码。
进一步的,所述装置还包括:划分单元,用于将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。
进一步的,所述装置还包括:数据校验单元,用于对接收到的SOC端发送的数据帧进行校验和帧序号检测。
进一步的,在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,所述装置还包括:第一异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
进一步的,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,所述装置还包括:第二异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
本申请提高了MCU软件升级的可靠性,提升了用户体验感。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的现有MCU软件升级示意图;
图2为本申请实施例提供的双分区的MCU软件升级示意图。
图3为本申请实施例提供的双分区的MCU软件升级方法的流程图;
图4为本申请实施例提供的双分区的MCU软件升级装置的功能结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请实施例的设计思想进行简单介绍。
传统MCU的软件升级都是单分区方案,FLASH区被划分为BOOT区和APP区,如图1所示:①软件重启,APP区代码升级成功,程序跳转到APP运行;②发起升级流程,程序跳转至BOOT区起始地址运行;③升级结束,更新代码被写入APP区,软件重启;④升级失败,将无APP代码可用。此方案的应用代码只存在一份,且发起升级后会被擦除,一旦在升级过程中出现断电等异常情况,MCU将无应用代码执行。在用户驾车行驶的过程中造成较差的体验。
为解决上述技术问题,本申请提供了双分区的MCU软件升级方法,通过划分代码备份区和记录升级流程等方式,保证MCU的FLASH区始终存储一份完整应用代码。在升级过程中即使出现异常断电等情况,MCU仍有可运行软件版本,相关的应用功能不会缺失,降低了车机***的功能缺失风险,如图2所示:①软件重启,APP-B区无更新代码,程序跳转到APP-A运行;②发起升级流程,程序跳转至BOOT区起始地址运行;③升级结束,更新代码被写入APP-B区,软件重启;④APP-B区有更新代码,将其拷贝到APP-A区并跳转至APP-A起始地址运行。
本申请的实施例中,MCU的FLASH区域划分出代码备份区,用于缓存最新软件数据包;FLASH区中存储升级标志,用于记录当前升级状态;在升级过程中对数据帧进行校验和帧序号检测;在升级确认完成后将软件包拷贝写入运行区。由此在MCU的软件升级过程中对于各种异常能够及时处理,提高了MCU软件升级的可靠性,提升了用户体验感。
在介绍了本申请实施例的应用场景和设计思想之后,下面对本申请实施例提供的技术方案进行说明。
如图3所示,本申请实施例提供了一种双分区的MCU软件升级方法,应用于MCU,包括如下步骤:
步骤101:当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
首先,将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。其中,第一分区对应图2的APP-A,第二分区对应图2的APP-B。
当SOC端发现外设中(例如U盘)存储有软件升级数据包,向MCU发送相应的指令。
步骤102:接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
其中,SOC端首先获取到软件升级数据包的总帧数,将总帧数发送至MCU,MCU根据总帧数向SOC端进行数据包请求,并对接收到的SOC端发送的数据帧进行校验和帧序号检测。
在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,则重启MCU,在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
步骤103:当接收到总帧数的数据包,将软件升级数据包缓存在APP区的第二分区,将升级状态标志更新为软件更新标志;
步骤104:在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
其中,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,在检测到MCU上电重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
步骤105:控制MCU进入APP区的第一分区运行升级后的软件代码。
基于上述实施例,本申请实施例提供了一种双分区的MCU软件升级装置,应用于MCU,参阅图4所示,本申请实施例提供的双分区的MCU软件升级装置200至少包括:
发起升级启动单元201,用于当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
数据包请求单元202,用于接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
数据包缓存单元203,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
数据包拷贝单元204,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
升级运行单元205,用于控制MCU进入APP区的第一分区运行升级后的软件代码。
在本实施例中,所述装置还包括:划分单元,用于将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。
在本实施例中,所述装置还包括:数据校验单元,用于对接收到的SOC端发送的数据帧进行校验和帧序号检测。
在本实施例中,在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,所述装置还包括:第一异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
在本实施例中,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,所述装置还包括:第二异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种双分区的MCU软件升级方法,其特征在于,应用于MCU,包括:
当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
当接收到总帧数的数据包,将软件升级数据包缓存在APP区的第二分区,将升级状态标志更新为软件更新标志;
在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
控制MCU进入APP区的第一分区运行升级后的软件代码。
2.根据权利要求1所述的双分区的MCU软件升级方法,其特征在于,所述方法还包括:将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。
3.根据权利要求1所述的双分区的MCU软件升级方法,其特征在于,所述方法还包括:对接收到的SOC端发送的数据帧进行校验和帧序号检测。
4.根据权利要求3所述的双分区的MCU软件升级方法,其特征在于,在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,所述方法还包括:
在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
5.根据权利要求1所述的双分区的MCU软件升级方法,其特征在于,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,所述方法还包括:
在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
6.一种双分区的MCU软件升级装置,其特征在于,应用于MCU,包括:
发起升级启动单元,用于当接收到SOC端读取到软件升级数据包的指令时,将Flash区的升级状态标志更新为发起升级标志,在检测到MCU进入BOOT区且升级状态标志为发起升级标志,将升级状态标志更新为初始标志;
数据包请求单元,用于接收SOC端发送的软件升级数据包的总帧数,根据总帧数向SOC端进行数据包请求;
数据包缓存单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
数据包拷贝单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将APP区的第二分区的软件升级数据包拷贝至APP区的第一分区,并将升级状态标志更新为初始标志;
升级运行单元,用于控制MCU进入APP区的第一分区运行升级后的软件代码。
7.根据权利要求6所述的双分区的MCU软件升级装置,其特征在于,所述装置还包括:划分单元,用于将APP区划分为第一分区和第二分区,第一分区用于存储软件数据包,第二分区用于缓存软件升级数据包。
8.根据权利要求6所述的双分区的MCU软件升级装置,其特征在于,所述装置还包括:数据校验单元,用于对接收到的SOC端发送的数据帧进行校验和帧序号检测。
9.根据权利要求8所述的双分区的MCU软件升级装置,其特征在于,在根据总帧数对SOC端进行数据包请求时,若出现通信中断或异常断电,所述装置还包括:第一异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为初始标志,控制MCU运行第一分区的历史版本的软件代码,等待SOC端再次发起软件升级。
10.根据权利要求6所述的双分区的MCU软件升级装置,其特征在于,在将第二分区的软件升级数据包拷贝至第一分区的过程中,若出现断电,所述装置还包括:第二异常处理单元,用于在检测到MCU重启进入BOOT区且升级状态标志为软件更新标志,将第二分区的软件升级数据包拷贝至第一分区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210347289.9A CN114546455A (zh) | 2022-04-01 | 2022-04-01 | 一种双分区的mcu软件升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210347289.9A CN114546455A (zh) | 2022-04-01 | 2022-04-01 | 一种双分区的mcu软件升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546455A true CN114546455A (zh) | 2022-05-27 |
Family
ID=81665270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210347289.9A Pending CN114546455A (zh) | 2022-04-01 | 2022-04-01 | 一种双分区的mcu软件升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546455A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909609A (zh) * | 2023-09-12 | 2023-10-20 | 英纳法智联科技(北京)有限公司 | 车载智能设备的软件升级方法、装置及车载智能设备 |
-
2022
- 2022-04-01 CN CN202210347289.9A patent/CN114546455A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909609A (zh) * | 2023-09-12 | 2023-10-20 | 英纳法智联科技(北京)有限公司 | 车载智能设备的软件升级方法、装置及车载智能设备 |
CN116909609B (zh) * | 2023-09-12 | 2023-12-22 | 英纳法智联科技(北京)有限公司 | 车载智能设备的软件升级方法、装置及车载智能设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及*** | |
EP3879399B1 (en) | Method and apparatus for upgrading vehicle-mounted tbox, device, and storage medium | |
CN105677398A (zh) | 一种通用的嵌入式计算机软件在线升级方法 | |
WO2022188690A1 (zh) | 升级电子设备的方法及装置 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN112416411B (zh) | 升级方法及装置、设备端、服务器、计算机可读介质 | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN110597532A (zh) | 一种数据采集模块及其固件升级方法和存储介质 | |
CN112612498A (zh) | 一种嵌入式设备升级方法和嵌入式设备 | |
CN106933604B (zh) | 一种***升级方法及装置 | |
CN116382753A (zh) | 一种基于网络的设备固件高可靠性远程升级方法 | |
CN116795408A (zh) | Ecu的软件升级方法、***及车辆 | |
CN116301995A (zh) | 基于bootloader架构的固件升级方法 | |
CN115658152A (zh) | 固件升级方法、固件、电子设备和计算机可读存储介质 | |
CN117389578A (zh) | 云终端***升级方法、装置、云终端和存储介质 | |
CN112732301A (zh) | 一种车辆升级方法和装置 | |
CN107247642B (zh) | 用于***开机时确定可执行映像文件的方法及装置 | |
CN112527342A (zh) | 一种在应用可编程iap固件升级方法、装置和设备 | |
CN115437674B (zh) | 一种固件升级方法、装置、介质及电子设备 | |
EP2449463A1 (en) | A method, apparatus and computer program for loading files during a boot- up process | |
CN115857998B (zh) | 基于zynq和fpga架构的升级方法、装置和介质 | |
CN116909609B (zh) | 车载智能设备的软件升级方法、装置及车载智能设备 | |
CN115756529A (zh) | 设备的升级版本回滚方法、装置、计算机设备及存储介质 | |
CN114153481A (zh) | 一种驾驶***更新方法、装置及计算机设备 | |
CN113064608A (zh) | 一种ota升级方法、装置、设备和介质 |
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 |