CN114840235A - 车辆控制器固件升级方法、系统、车辆控制器及存储介质 - Google Patents
车辆控制器固件升级方法、系统、车辆控制器及存储介质 Download PDFInfo
- Publication number
- CN114840235A CN114840235A CN202210506012.6A CN202210506012A CN114840235A CN 114840235 A CN114840235 A CN 114840235A CN 202210506012 A CN202210506012 A CN 202210506012A CN 114840235 A CN114840235 A CN 114840235A
- Authority
- CN
- China
- Prior art keywords
- firmware
- memory area
- vehicle controller
- updated
- firmware file
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
- Y02T90/10—Technologies relating to charging of electric vehicles
- Y02T90/16—Information or communication technologies improving the operation of electric vehicles
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开一种车辆控制器固件升级方法、系统、车辆控制器及存储介质,该方法包括:接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的至少两个内存区中的一个待更新内存区,至少两个内存区中除待更新内存区之外的其它内存区中的至少一个存储有车辆控制器的当前固件文件;接收SOC控制器发送的待升级固件文件并存储至待更新内存区进行固件升级;通过至少两个内存区存储着当前固件文件和待升级固件文件,待升级固件文件用于完成固件升级,当前固件文件用于在车辆控制器固件升级不成功时,保证车辆控制器可以基于当前固件文件来维持正常运行,提高固件升级的可靠性,降低产品报废率。
Description
技术领域
本申请涉及车载中控通信技术领域,尤其涉及一种车辆控制器固件升级方法、系统、车辆控制器及存储介质。
背景技术
电机控制器(Moter Control Unit,MCU)是车辆中比较常见的控制器之一,根据电动汽车整车控制器(Vehicle Control Unit,VCU)的指令,控制电机的旋转状态。随着汽车电气化的推行和固件功能的更新等,需要对MCU控制器进行定期固件升级。
车载空中下载(Over The Air,OTA)技术是指通过移动通信的空中接口对汽车的软件进行远程升级的过程。现有常见的通过OTA技术实现MCU控制器固件升级的方式包括:系统级芯片(System on Chip,SOC)通过OTA技术下载MCU控制器的待升级固件文件,向MCU控制器发送升级标识信号,在MCU控制器响应后,通过串行外设接口(Serial PeripheralInterface,SPI)将固件文件传输给MCU控制器,从而实现MCU控制器的固件升级。
在上述升级方式中,通过SOC控制器下载待升级固件文件,然后传输给MCU控制器进行升级虽然能够提高数据传输效率,但是,由于MCU控制器在接收待升级固件文件的同时将会进行升级覆盖刷写,一旦出现升级不成功,会使得MCU控制器无法正常运行,降低MCU控制器固件升级的可靠性。
发明内容
本发明实施例公开了一种车辆控制器固件升级方法、系统、车辆控制器及存储介质,用于提高固件升级的可靠性,降低产品报废率。
本发明实施例第一方面公开了一种车辆控制器固件升级方法,可包括:
接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的预设的至少两个内存区中的一个待更新内存区,所述至少两个内存区中除所述待更新内存区之外的其它内存区中的至少一个存储有所述车辆控制器的当前固件文件;
接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级。
作为一种可选的实施方式,在本发明实施例第一方面中,所述擦除车辆控制器包含的至少两个内存区中的一待更新内存区,包括:
读取所述车辆控制器的升级状态标志位,所述升级状态标志位用于指示存储所述当前固件文件的内存区;
从所述至少两个内存区中确定非所述升级状态标志位指示的一内存区作为待更新内存区,擦除所述待更新内存区存储的旧固件文件。
作为一种可选的实施方式,在本发明实施例第一方面中,所述接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级,包括:
接收所述SOC控制器发送的从所述待升级固件文件拆分得到的数据包,并存储至所述待更新内存区,直至接收完所述待升级固件文件拆分得到的最后一个数据包并存储至所述待更新内存区,所述待升级固件文件拆分得到的某一个数据包携带有待校验哈希值;
计算所述待更新内存区的所有数据包对应的目标哈希值;
判断所述待校验哈希值是否与所述目标哈希值匹配;
如果匹配,确定完成所述车辆控制器固件升级;
如果不匹配,退出当前固件升级。
作为一种可选的实施方式,在本发明实施例第一方面中,所述确定所述车辆控制器固件升级成功之后,所述方法还包括:
更新所述升级状态标志位,以使所述升级状态标志位指向所述待更新内存区。
作为一种可选的实施方式,在本发明实施例第一方面中,每一个所述数据包携带有待校验循环冗余校验码CRC,所述方法还包括:
在接收到所述SOC控制器发送的所述数据包后,计算所述数据包的目标CRC;
判断所述待校验CRC与所述目标CRC是否匹配;
如果匹配,执行将所述数据包存储至所述待更新内存区的步骤;
如果不匹配,退出当前固件升级。
本发明实施例第二方面公开了一种车辆控制器,可包括:
擦除模块,用于接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的预设的至少两个内存区中的一个待更新内存区,所述至少两个内存区中除所述待更新内存区之外的其它内存区中的至少一个存储有所述车辆控制器的当前固件文件;
通信模块,用于接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级。
作为一种可选的实施方式,在本发明实施例第二方面中,所述擦除模块包括:
读取子模块,用于读取所述车辆控制器的升级状态标志位,所述升级状态标志位用于指示存储所述当前固件文件的内存区;
擦除子模块,用于从所述至少两个内存区中确定非所述升级状态标志位指示的一个内存区作为待更新内存区,擦除所述待更新内存区存储的旧固件文件。
作为一种可选的实施方式,在本发明实施例第二方面中,所述通信模块包括:
收发子模块,用于接收所述SOC控制器发送的从所述待升级固件文件拆分得到的数据包,并存储至所述待更新内存区,直至接收完所述待升级固件文件拆分得到的最后一个数据包并存储至所述待更新内存区,所述待升级固件文件拆分得到的某一个数据包携带有待校验哈希值;
计算子模块,用于计算所述待更新内存区的所有数据包对应的目标哈希值;
判断子模块,用于判断所述待校验哈希值是否与所述目标哈希值匹配;
升级确定子模块,用于在所述判断子模块的判断结果为是时,确定完成所述车辆控制器固件升级;在所述判断子模块的判断结果为否时,退出当前固件升级。
本发明实施例第三方面公开了一种车辆控制器,可包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面公开的一种车辆控制器固件升级方法。
本发明实施例第四方面公开了一种车辆控制器固件升级系统,可包括:
SOC控制器及如本发明实施例第二方面或者本发明实施例第三方面公开的车辆控制器;
其中,所述SOC控制器用于向所述车辆控制器发送固件升级提醒消息,以及,向所述车辆控制器发送待升级固件文件。
本发明实施例第五方面公开一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例第一方面的任意一种方法的步骤。
本发明实施例第六方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
本发明实施例第七方面公开一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
在本发明实施例中,接收SOC控制器发送的固件升级提醒消息后,先擦除车辆控制器包含的至少两个内存区中的一待更新内存区,而至少两个内存区中的其它内存区中的至少一个存储有车辆控制器的当前固件文件,之后,接收到SOC控制器发送的待升级固件文件,将待升级固件文件存储至待更新内存区完成固件升级;可见,通过实施本发明实施例,在车辆控制器中设置至少两个内存区,一个用来刷新存储最新的待升级固件文件,其它内存区中的至少一个用来存储车辆控制器的当前固件文件,通过至少两个内存区能够同时存储着当前固件文件和待升级固件文件,待升级固件文件用于完成固件升级,当前固件文件用于在车辆控制器固件升级不成功时,也能保证车辆控制器可以继续基于当前固件文件来维持正常运行,提高固件升级的可靠性,降低产品报废率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的车辆控制器固件升级系统的结构示意图;
图2为本发明实施例公开的内存区的分区结构示意图;
图3为本发明实施例一公开的车辆控制器固件升级方法的流程示意图;
图4为本发明实施例二公开的车辆控制器固件升级方法的流程示意图;
图5为本发明实施例三公开的车辆控制器固件升级方法的信令交互示意图;
图6为本发明实施例一公开的车辆控制器的结构示意图;
图7为本发明实施例二公开的车辆控制器的结构示意图;
图8为本发明实施例三公开的车辆控制器的结构示意图;
图9为本发明实施例四公开的车辆控制器的结构示意图;
图10为本发明实施例公开的车辆控制器固件升级系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书中的术语“第一”、“第二”、“第三”及“第四”等是用于区别不同的对象,而不是用于描述特定顺序。本发明实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
其中,本发明实施例公开的车辆控制器可以是MCU控制器、整车控制器(VehicleController Unit,VCU)、电池管理系统(Battery Management System,BMS)、电子控制单元(Electronic Control Unit,ECU)等。
首先,请参阅图1,图1为本发明实施例公开的车辆控制器固件升级系统的结构示意图;在图1中,车辆控制器为MCU控制器,该系统中涉及中控屏幕、SOC控制器、MCU控制器、CAN收发器、多个控制器、全球闪存总线(global flash bus)等,以及随机存取存储器(random access memory,RAM)芯片等。
其中,中控屏幕主要功能:①设置有MCU的固件升级按钮,用户可以通过点击该屏幕上的固件升级按钮,触发MCU固件升级。
SOC控制器主要功能:①通过通用串行总线(Universal Serial Bus,USB)连接中控屏幕;②通过通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)串口与MCU控制器进行数据通信;③在用户点击中控屏幕上的固件升级按钮后,将待升级固件文件通过UART串口发送给MCU控制器;④SOC控制器作为主模块,完成与MCU控制器的数据传输协议。
MCU控制器主要功能:①设置双CPU,分别为CPU1和CPU2;②设置双代码运行区,分别为CodeFlash1和CodeFlash2,其中一个代码运行区存储当前固件文件(当前运行的固件代码),另一个准备用于存储待升级固件文件(需要升级的固件代码);③同时,还设置双数据存储区,分别为DataFlash1和DataFlash2,数据存储区可以用于存储升级状态标志位;④接收CAN总线上来自其他控制器的信号,或发送CAN信号控制(升级)其他控制器。
CAN收发器主要是发送/接收CAN总线上的信号。
进一步的,请参阅图2,图2为本发明实施例公开的内存区的分区结构示意图;图2描述的是上述图1中MCU控制器内部的存储区(flash)的分区结构,如图2所示,包括程序启动区(Bootloader)、代码运行区1(CodeFlash1)、代码运行区2(CodeFlash2)、数据存储区1(DataFlash1)和数据存储区2(DataFlash2),其中:
程序启动区(Bootloader):用于存储Bootloader代码,主要用于在MCU控制器上电后启动,运行Bootloader代码,读取数据存储区的升级状态标志位,判断哪个代码运行区存储着当前固件文件,则跳转到该代码运行区。
代码运行区:分为代码运行区1(CodeFlash1)和代码运行区2(CodeFlash2),一块用于存储当前固件文件,另一块还存储着旧固件文件(当前固件文件之前的版本固件文件)并准备刷新以用于存储待升级固件文件。
数据存储区:分为数据存储区1(DataFlash1)和数据存储区2(DataFlash2),主要用于存储刷新升级状态标志位等。
需要说明的是,可以在代码运行区1(CodeFlash1)或代码运行区2(CodeFlash2)中分出一部分空间设置为程序启动区(Bootloader),用于存储Bootloader代码,实现MCU控制器的上电启动,该程序启动区(Bootloader)所存储的Bootloader代码是固定的,不会被刷新。
进一步的,需要说明的是,上述升级状态标志位只存储在一个数据存储区中,如存储在数据存储区1(DataFlash1)中或数据存储区2(DataFlash2)中。
结合上述介绍,本发明实施例公开了一种车辆控制器固件升级方法、系统、车辆控制器及存储介质,用于提高固件升级的可靠性,降低产品报废率。下面将通过具体实施例,对本发明技术方案进行详细说明。
请参阅图3,图3为本发明实施例一公开的车辆控制器固件升级方法的流程示意图;如图3所示,该车辆控制器固件升级方法可包括:
301、接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的至少两个内存区中的一个待更新内存区,至少两个内存区中除待更新内存区之外的其它内存区中的至少一个存储有车辆控制器的当前固件文件。
本发明实施例的执行主体可以为车辆控制器,如为MCU控制器,如图1所示,MCU控制器通过UART串口与SOC控制器连接,SOC控制器利用OTA技术下载待升级固件文件到本地,用户可以通过中控屏幕上的固件升级按钮触发MCU固件升级,以使SOC控制器向MCU控制器发送固件升级提醒消息,在接收到固件升级提醒消息后,擦除待更新内存区。
其中,待更新内存区为本发明实施例公开的车辆控制器包含的至少两个内存区中的一个,该待更新内存区在未擦除之前存储的可以是旧固件文件,而除待更新内存区之外的其它内存区中,有至少一个内存区存储的是车辆控制器的当前固件文件,旧固件文件为当前固件文件之前的版本文件。
举例来说,车辆控制器包含两个内存区,示例性的,该内存区可以是图1和图2所示的代码运行区,分别为CodeFlash1和CodeFlash2,可以将CodeFlash1擦除,作为待更新内存区,而CodeFlash1在擦除前存储的可以是旧固件文件,那么擦除CodeFlash1就是擦除CodeFlash1中的旧固件文件,以准备用于存储即将接收到的待升级固件文件,而CodeFlash2存储的可以是当前固件文件,即车辆控制器当前运行的固件版本,且保持不刷新,从而能够在升级失败时,继续运行当前固件文件以保持车辆控制器的稳定运行。
另,举例来说,车辆控制器可以包含三个内存区,分别为内存区1、内存区2和内存区3,内存区1存储当前固件文件,擦除内存区2作为待更新内存区,此时,内存区3存储的可以是旧固件文件或者当前固件文件。
进一步需要说明的是,结合图2,待更新内存区可能设置有程序启动区,并在程序启动区存储Bootloader代码,在本发明实施例中,在擦除待更新内存区时,不管程序启动区设置于该待更新内存区中还是在其它内存区中,都不会擦除程序启动区的Bootloader代码,以确保车辆控制器正常启动。
可选的,步骤301中的擦除车辆控制器包含的至少两个内存区中的一待更新内存区可以包括:
读取车辆控制器的升级状态标志位,该升级状态标志位用于指示存储当前固件文件的内存区;
从SOC控制器包含的至少两个内存区中确定非升级状态标志位指示的一内存区作为待更新内存区,擦除待更新内存区存储的旧固件文件。
其中,在车辆控制器中设置升级状态标志位,通过升级状态标志位指示出存储当前固件文件的内存区。车辆控制器通过读取升级状态标志位,确定出升级状态标志位指示的内存区,然后将非升级状态标志位指示的其中一个内存区确定为待更新内存区,然后擦除待更新内存区保存的旧固件文件。示例性的,如图2所示,当升级状态标志位为1时,指示保存当前固件文件的是CodeFlash1,此时,擦除CodeFlash2作为待更新内存区,当升级状态标志位为0时,指示保存当前固件文件的是CodeFlash2,此时,擦除CodeFlash1作为待更新内存区。
可选的,车辆控制器在每次上电读取程序启动区的存储Bootloader代码进行启动,然后读取存储升级状态标志位,然后跳转至升级状态标志位指示的内存区,运行该升级状态标志位指示的内存区所存储的当前固件文件的代码,在接收到SOC控制器发送的固件升级提醒消息后,将其它内存区中的一个内存区确定为待更新内存区,跳转至该待更新内存区,擦除待更新内存区以准确接收待升级固件文件。
优选的,车辆控制器还设置有至少两个数据存储区,示例性的,如图1和图2所示的DataFlash1和DataFlash2,上述升级状态标志位可以存储于DataFlash1或DataFlash2中。通过设置升级状态标志位,可以简单清晰的指示出车辆控制器的升级状态,以在每次成功升级后,指示出用于存储当前固件文件的内存区(也就是存储最新版本的固件文件的内存区)。
302、接收SOC控制器发送的待升级固件文件并存储至待更新内存区进行固件升级。
在擦除待更新内存区后,将接收到的待升级固件文件存储至待更新内存区并进行固件升级(待更新内存区刷写)。
可选的,在步骤302,当车辆控制器包含两个内存区时,那么在待更新内存区存储进待升级固件文件并升级成功后,两个内存区保存的固件文件将会发生身份改变,待更新内存区中的待升级固件文件升级为当前固件文件,另一个内存区中的当前固件文件为旧固件文件。示例性的,内存区1存储固件文件2.0版本,为当前固件文件,内存区2擦除后作为待更新内存区存储进固件文件3.0版本并升级成功后,内存区2存储的固件文件3.0版本变为当前固件文件,内存区1存储的固件文件2.0版本变为旧固件文件。
另外,可选的,在步骤302,当车辆控制器包含三个或三个以上内存区时,如为三个时,示例性的,内存区1存储固件文件1.0版本,内存区2存储固件文件2.0版本,内存区3存储固件文件3.0版本,固件文件3.0版本为当前固件文件,选择内存区1擦除后作为待更新内存区,然后在内存区1中存储进固件文件4.0版本并升级成功,内存区1存储的固件文件4.0版本作为当前固件文件,内存区3存储的固件文件3.0版本变为旧固件文件。进一步的,可以保持内存区2存储固件文件2.0版本不变,或者,将复制固件文件4.0版本存储进内存区2,内存区2同时存储着当前固件文件,同时,若采用升级状态标志位指示当前固件文件的内存区,那么升级状态标志位将同时指向内存区3和内存区2,示例性的,升级状态标志位=3,2,3指向内存区3,2指向内存区2。需要说明的是,不管任何时候,确保至少一个内存区存储有当前固件文件和至少一个内存区存储当前固件文件的上一个版本对应的旧固件文件。
可选的,车辆控制器在擦除待更新内存区,做好接收待升级固件文件的准备后,可以向SOC控制器发送响应消息,指示已经做好接收准确。对于SOC控制器而言,在接收到车辆控制器发送的用于指示做好接收准确的响应消息后,将待升级固件文件发送给车辆控制器。
可见,通过实施本发明实施例,接收SOC控制器发送的固件升级提醒消息后,先擦除车辆控制器包含的至少两个内存区中的一待更新内存区,而至少两个内存区中的其它内存区中的至少一个存储有车辆控制器的当前固件文件,之后,接收到SOC控制器发送的待升级固件文件,将待升级固件文件存储至待更新内存区完成固件升级;可见,通过实施本发明实施例,在车辆控制器中设置至少两个内存区,一个用来刷新存储最新的待升级固件文件,其它内存区中的至少一个用来存储车辆控制器的当前固件文件,通过多内存区能够同时存储着当前固件文件和待升级固件文件,待升级固件文件用于完成固件升级,当前固件文件用于在车辆控制器固件升级不成功时,也能保证车辆控制器可以继续基于当前固件文件来维持正常运行,提高固件升级的可靠性,降低产品报废率。
请参阅图4,图4为本发明实施例二公开的车辆控制器固件升级方法的流程示意图;如图4所示,该车辆控制器固件升级方法可包括:
401、接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的至少两个内存区中的一待更新内存区。
其中,本发明实施例的执行主体可以为车辆控制器。
402、向SOC控制器发送指示做好接收准备的响应消息。
403、接收SOC控制器发送的从待升级固件文件拆分得到的数据包,并存储至待更新内存区,直至接收完待升级固件文件拆分得到的最后一个数据包并存储至待更新内存区,该待升级固件文件拆分得到的某一个数据包携带有待校验哈希值。
其中,对应于SOC控制器,在发送待升级固件文件之前,通过预设哈希算法计算出一组哈希值,即本发明实施例公开的待校验哈希值,储存至固件文件的末尾,然后再将待升级固件文件拆分成多个数据包,通常而言,第一个数据包为固件头信息(包括文件名字、文件大小等),而最后一个数据包携带上述待校验哈希值。
示例性的,预设哈希算法可以是md5算法,利用md5算法计算出一组16个字节大小的哈希值,作为待升级固件文件的待校验哈希值储存至待升级固件文件的文件末尾。
在本发明实施例中通过设置哈希值,能够提高待升级固件文件在传输过程中的保密性,防止文件被篡改。
另外,在SOC控制器与车辆控制器之间,基于UART串口,采用相应的数据传输协议完成数据传输,传输安全速度快。
作为一种可选的实施方式,SOC控制器在准备分包发送数据包时,针对每一个数据包,都将根据该数据包的内容计算待校验循环冗余校验码(Cyclic Redundancy Check,CRC),携带在数据包中进行发送;对于车辆控制器,在接收到每一个数据包后,计算出一个目标CRC,判断带校验CRC与目标CRC是否匹配,在待校验CRC与目标CRC匹配时,确定当前数据包是有效的,将其存储至待更新内存区,在待校验CRC与目标CRC不匹配时,说明当前数据包无效,退出升级;通过在每一个数据包中携带CRC,能够保证数据传输过程中的可靠性。
404、计算待更新内存区的所有数据包对应的目标哈希值。
对于车辆控制器,每接收到一个数据包并存储至待更新内存区进行升级,当接收完所有数据包后,针对所接收到的所有数据包,根据本地保存的预设哈希算法计算出一组哈希值,即本发明实施例中的目标哈希值。
车辆控制器所存储的预设哈希算法与SOC控制器所存储的预设哈希算法相同,示例性的,预设哈希算法为md5算法,那么车辆控制器利用md5算法计算出一组16个字节大小的哈希值,作为目标哈希值。
405、判断待校验哈希值是否与目标哈希值匹配;如果匹配,转向步骤406,如果不匹配,转向步骤407。
在步骤405中,在接收完待升级固件文件的所有数据包后,从最后一个数据包中获取待校验哈希值,然后对所有数据包计算目标哈希值,判断两者是否匹配,其中,如果匹配,说明待升级固件文件安全传输,未被篡改或不存在内容丢失,根据该待升级固件文件可以成功升级,如果不一致,说明待升级固件文件存在被篡改或内容丢失的风险,那么将退出当前更新。
406、确定完成车辆控制器固件升级。
可选的,在完成车辆控制器的固件升级后,更新升级状态标志位,以使升级状态标志位指向待更新内存区。
在上述实施方式中,在车辆控制器固件升级成功后,更新升级状态标志位,将升级状态标志位指向待更新内存区。此时可以理解,当前固件文件和旧固件文件也发生了更新,即待更新内存区所保存的待升级固件文件更新成为了车辆控制器的当前固件文件,而另一个内存区存储的原来的当前固件文件更新成为了车辆控制器的旧文件,确保升级状态标志位在任何时候都指示当前固件文件所在的内存区(也就是最新的固件文件所在的内存区),以便每次车辆控制器上电时跳转至当前固件文件所在的内存区运行相应代码。
407、退出当前固件升级。
在待校验哈希值与目标哈希值不匹配时,说明待升级固件文件存在被篡改或内容丢失的风险,将退出当前更新,当次升级失败,但是由于车辆控制器的另一个内存区的当前固件文件没有被破坏,可以继续运行另一个内存区的固件文件,以维持车辆控制器的正常运动,提高固件升级的稳定性。
可见,在本发明实施例中,通过在车辆控制器中设置两个内存区,一个用来存储车辆控制器的当前固件文件,一个用来刷新最新的待升级固件文件,通过双内存区存储着当前固件文件和待升级固件文件,待升级固件文件用于完成升级,当前固件文件用于在车辆控制器固件升级不成功时,也能保证车辆控制器基于原来的固件文件维持正常运行,提高固件升级的可靠性,降低产品报废率;另外,SOC控制器通过在待升级固件文件中携带哈希值,通过哈希值提高待升级固件文件的安全性。
请参阅图5,图5为本发明实施例三公开的车辆控制器固件升级方法的信令交互示意图;在图5所示的车辆控制器固件升级方法中以车辆控制器为MCU控制器和以两个代码运行区为例,该方法可包括:
501、SOC控制器向MCU控制器发送固件升级提醒消息。
502、MCU控制器擦除包含的两个代码运行区中的待更新内存区。
503、MCU控制器向SOC控制器发送固件请求。
504、SOC控制器响应于该固件请求,计算待校验哈希值设置于待升级固件文件的文件末尾,并对设置待校验哈希值后的待升级固件文件进行数据拆分,获得多个数据块,计算每一个数据块的CRC后进行打包,获得与数据块数量对应的数据包,每个数据包都携带着对应的CRC。
505、SOC控制器针对该固件请求,向MCU控制器发送OK响应消息,以告知MCU控制器固件文件已经准备好。
506、MCU控制器接收到OK响应消息后,向SOC控制器发送固件头请求消息。
其中,固件头信息至少包括文件名字,文件大小等。
507、SOC响应于该固件头请求消息,向MCU控制器发送包含固件头信息的第一个数据包。
508、MCU控制器在接收到该第一个数据包后,计算第一个数据包的目标CRC,根据目标CRC和第一个数据包携带的CRC判断第一个数据包的有效性,在有效时,向SOC发送OK响应,在无效时,退出当前固件升级。
509、MCU控制器向SOC控制器发送固件数据请求。
510、SOC控制器响应于该固件数据请求,准备第n个数据包(固件数据),向MCU控制器发送第n个数据包,n为大于或者等于1的正整数。
511、MCU控制器在接收到该第n个数据包后,计算第n个数据包的目标CRC,根据目标CRC和第n个数据包携带的CRC判断第n个数据包的有效性,在有效时,向SOC发送OK响应,在无效时,退出当前固件升级。
其中,重复执行步骤510和511,直至所有的固件文件的数据包收发完成。
512、当所有固件文件的数据包发送完成后,SOC控制器向MCU控制器发送携带完成传输标识符的数据包。
513、MCU控制器在接收到携带完成传输标识符的数据包后,判断该数据包有效后,向SOC控制器发送OK响应,若无效,退出当前固件升级。
其中,携带完成传输标识符的数据包同样携带有CRC,通过所携带的CRC判断其有效性。
514、MCU控制器向SOC控制器发送结束请求。
MCU控制器再次向SOC控制器确认待升级固件文件传输完毕,升级结束,可以减少SOC控制器误发完成传输标识符的情况。
515、SOC控制器响应于结束请求,结束本流程。
在本发明实施例中,通过信令交互清晰描述SOC控制器与MCU控制器之间的数据传输协议,通过该数据传输协议完成数据传输,可以提高MCU控制器固件升级的可靠性,同时能够对升级过程中出现的异常进行处理,即增加了异常处理机制,同时增加了对固件文件升级的保护机制,防止文件传输过程中被丢包或篡改。
请参阅图6,图6为本发明实施例一公开的车辆控制器的结构示意图;如图6所示,该车辆控制器可包括:
擦除模块610,用于接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的至少两个内存区中的一个待更新内存区,至少两个内存区中除待更新内存区之外的其它内存区中的至少一个存储有车辆控制器的当前固件文件;
通信模块620,用于接收SOC控制器发送的待升级固件文件并存储至待更新内存区进行固件升级。
进一步的,请参阅图7,图7为本发明实施例二公开的车辆控制器的结构示意图;图7所示的车辆控制器是在图6所示的车辆控制器的基础上进行优化得到的。可选的,图7所示的车辆控制器中的擦除模块610进一步包括:读取子模块710和擦除子模块720。
其中,读取子模块710,用于读取车辆控制器的升级状态标志位,该升级状态标志位用于指示存储当前固件文件的内存区;
擦除子模块720,用于从SOC控制器包含的至少两个内存区中确定非升级状态标志位指示的一内存区作为待更新内存区,擦除待更新内存区存储的旧固件文件。
可选的,在图7所示的车辆控制器中的通信模块620进一步包括:
收发子模块730,用于接收SOC控制器发送的从待升级固件文件拆分得到的数据包,并存储至待更新内存区,直至接收完待升级固件文件拆分得到的最后一个数据包并存储至待更新内存区,待升级固件文件拆分得到的某一个数据包携带有待校验哈希值;
计算子模块740,用于计算待更新内存区的所有数据包对应的目标哈希值;
判断子模块750,用于判断待校验哈希值是否与目标哈希值匹配;
升级确定子模块760,用于在判断子模块的判断结果为是时,确定完成车辆控制器固件升级;在判断子模块的判断结果为否时,退出当前固件升级。
请参阅图8,图8为本发明实施例三公开的车辆控制器的结构示意图;图8所示的车辆控制器是在图7所示的车辆控制器的基础上进行优化得到的,图8所示的车辆控制器还进一步包括:
更新模块810,用于在确定车辆控制器固件升级成功之后,更新升级状态标志位,以使升级状态标志位指向待更新内存区。
校验模块820,用于在收发子模块730接收到SOC控制器发送的数据包后,计算数据包的目标CRC;判断待校验CRC与目标CRC是否匹配;如果匹配,触发收发子模块730将数据包存储至待更新内存区;如果不匹配,触发退出当前固件升级。
请参阅图9,图9为本发明实施例四公开的车辆控制器的结构示意图;图9所示的车辆控制器可包括:
存储有可执行程序代码的存储器901;
与存储器901耦合的处理器902;
其中,处理器902调用存储器901中存储的可执行程序代码,执行图3至图5任意一种车辆控制器固件升级方法的部分步骤或者全部步骤。
请参阅图10,图10为本发明实施例公开的车辆控制器固件升级系统的结构示意图;如图10所示,该车辆控制器固件升级系统可包括:
SOC控制器1010及车辆控制器1020;车辆控制器1020为附图6至9所示的车辆控制器。
其中,上述SOC控制器1010用于向车辆控制器1020发送固件升级提醒消息,以及,向车辆控制器1020发送待升级固件文件。
具体的,SOC控制器1010和车辆控制器1020的更多功能实现请参阅上述方法实施例和装置实施例的介绍,在此不再赘述。
本发明实施例还公开一种计算机可读存储介质,其存储计算机程序,其中,计算机程序使得计算机执行图3至图5公开的一种车辆控制器固件升级方法。
本发明实施例还公开一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行图3至图5公开的任意一种方法的部分或全部步骤。
本发明实施例还公开一种应用发布平台,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行图3至图5公开的任意一种方法的部分或全部步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上对本发明实施例公开的一种车辆控制器固件升级方法、系统、车辆控制器及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种车辆控制器固件升级方法,其特征在于,包括:
接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的预设的至少两个内存区中的一个待更新内存区,所述至少两个内存区中除所述待更新内存区之外的其它内存区中的至少一个存储有所述车辆控制器的当前固件文件;
接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级。
2.根据权利要求1所述的方法,其特征在于,所述擦除车辆控制器包含的预设的至少两个内存区中的一个待更新内存区,包括:
读取所述车辆控制器的升级状态标志位,所述升级状态标志位用于指示存储所述当前固件文件的内存区;
从所述至少两个内存区中确定非所述升级状态标志位指示的一内存区作为待更新内存区,擦除所述待更新内存区存储的旧固件文件。
3.根据权利要求1所述的方法,其特征在于,所述接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级,包括:
接收所述SOC控制器发送的从所述待升级固件文件拆分得到的数据包,并存储至所述待更新内存区,直至接收完所述待升级固件文件拆分得到的最后一个数据包并存储至所述待更新内存区,所述待升级固件文件拆分得到的某一个数据包携带有待校验哈希值;
计算所述待更新内存区的所有数据包对应的目标哈希值;
判断所述待校验哈希值是否与所述目标哈希值匹配;
如果匹配,确定完成所述车辆控制器固件升级;
如果不匹配,退出当前固件升级。
4.根据权利要求3所述的方法,其特征在于,所述确定所述车辆控制器固件升级成功之后,所述方法还包括:
更新所述升级状态标志位,以使所述升级状态标志位指向所述待更新内存区。
5.根据权利要求3或4所述的方法,其特征在于,每一个所述数据包携带有待校验循环冗余校验码CRC,所述方法还包括:
在接收所述SOC控制器发送的所述数据包后,计算所述数据包的目标CRC;
判断所述待校验CRC与所述目标CRC是否匹配;
如果匹配,执行将所述数据包存储至所述待更新内存区的步骤;
如果不匹配,退出当前固件升级。
6.一种车辆控制器,其特征在于,包括:
擦除模块,用于接收SOC控制器发送的固件升级提醒消息后,擦除车辆控制器包含的预设的至少两个内存区中的一个待更新内存区,所述至少两个内存区中除所述待更新内存区之外的其它内存区中的至少一个存储有所述车辆控制器的当前固件文件;
通信模块,用于接收所述SOC控制器发送的待升级固件文件并存储至所述待更新内存区进行固件升级。
7.根据权利要求6所述的车辆控制器,其特征在于,所述擦除模块包括:
读取子模块,用于读取所述车辆控制器的升级状态标志位,所述升级状态标志位用于指示存储所述当前固件文件的内存区;
擦除子模块,用于从所述至少两个内存区中确定非所述升级状态标志位指示的一内存区作为待更新内存区,擦除所述待更新内存区存储的旧固件文件。
8.根据权利要求6所述的车辆控制器,其特征在于,所述通信模块包括:
收发子模块,用于接收所述SOC控制器发送的从所述待升级固件文件拆分得到的数据包,并存储至所述待更新内存区,直至接收完所述待升级固件文件拆分得到的最后一个数据包并存储至所述待更新内存区,所述待升级固件文件拆分得到的某一个数据包携带有待校验哈希值;
计算子模块,用于计算所述待更新内存区的所有数据包对应的目标哈希值;
判断子模块,用于判断所述待校验哈希值是否与所述目标哈希值匹配;
升级确定子模块,用于在所述判断子模块的判断结果为是时,确定完成所述车辆控制器固件升级;在所述判断子模块的判断结果为否时,退出当前固件升级。
9.一种车辆控制器,其特征在于,包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行权利要求1-5任一项所述的一种车辆控制器固件升级方法。
10.一种车辆控制器固件升级系统,其特征在于,包括:
SOC控制器及如权利要求6-8任一项所述的车辆控制器或者如权利要求9所述的车辆控制器;
其中,所述SOC控制器用于向所述车辆控制器发送固件升级提醒消息,以及,向所述车辆控制器发送待升级固件文件。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506012.6A CN114840235A (zh) | 2022-05-10 | 2022-05-10 | 车辆控制器固件升级方法、系统、车辆控制器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506012.6A CN114840235A (zh) | 2022-05-10 | 2022-05-10 | 车辆控制器固件升级方法、系统、车辆控制器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840235A true CN114840235A (zh) | 2022-08-02 |
Family
ID=82569444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210506012.6A Pending CN114840235A (zh) | 2022-05-10 | 2022-05-10 | 车辆控制器固件升级方法、系统、车辆控制器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840235A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909609A (zh) * | 2023-09-12 | 2023-10-20 | 英纳法智联科技(北京)有限公司 | 车载智能设备的软件升级方法、装置及车载智能设备 |
-
2022
- 2022-05-10 CN CN202210506012.6A patent/CN114840235A/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 |
---|---|---|
CN107729757B (zh) | 软件更新之前的软件认证 | |
CN108279916B (zh) | 电子控制单元程序更新方法和装置 | |
CN110178114B (zh) | 车辆控制装置以及程序更新系统 | |
US10162625B2 (en) | Vehicle control storage methods and systems | |
CN111796848A (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
US20240069906A1 (en) | Server, software update system, distribution method, and non-transitory storage medium | |
CN114840235A (zh) | 车辆控制器固件升级方法、系统、车辆控制器及存储介质 | |
EP3805918B1 (en) | Program update system, program transmission device, and program transmission method | |
CN113238774A (zh) | 车载迎宾动画更新方法、装置、车载终端及存储介质 | |
CN111190629A (zh) | 一种嵌入式终端升级软件包及其解析方法 | |
US20210011711A1 (en) | Control device, control method, and computer program | |
KR102610730B1 (ko) | 차량의 업데이트 제공 장치 및 컴퓨터 기록 매체 | |
JP7176488B2 (ja) | データ保存装置、及びデータ保存プログラム | |
US20220317994A1 (en) | Ota master, update control method, and non-transitory storage medium | |
US11995429B2 (en) | Software update device, update control method, non-transitory storage medium, and server | |
EP4036712A1 (en) | Ota master, update control method, non-transitory storage medium, and vehicle | |
CN112925546B (zh) | 一种防止车载ecu刷新出错的多级校验方法及系统 | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN113342385A (zh) | 软件升级方法及装置、空调控制面板 | |
CN116909609B (zh) | 车载智能设备的软件升级方法、装置及车载智能设备 | |
US20220405083A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
US20230051776A1 (en) | Vehicle software management system and method for recovering software thereof | |
CN114253567A (zh) | 程序更新方法、装置和设备 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN113835724A (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 |