1.本公开涉及车辆控制领域,具体地,涉及一种固件的烧写方法、系统、车辆控制系统。
背景技术:
2.随着汽车行业的快速发展,越来越多的车辆上配置了各种类型的车辆控制系统,例如:aeb(英文:autonomous emergency braking,中文:自动制动系统)、ecu(英文:electronic control unit,中文:电子控制单元)、esp(英文:electronic stability program,中文:车身电子稳定系统)等。因此,车辆控制系统中固件烧写的有效性和可靠性变得越来越重要。通常情况下,车辆控制系统中的固件是通过以太网进行烧写,车辆控制系统从指定的服务器获取待烧写的固件,在烧写过程中可能会出现各种异常,导致车辆控制系统无法正常运行的问题,固件烧写的有效性和可靠性比较低。
技术实现要素:
3.本公开的目的是提供一种固件的烧写方法、系统、车辆控制系统,用以解决车辆控制系统中固件烧写的有效性和可靠性低的问题。
4.根据本公开实施例的第一方面,提供一种固件的烧写方法,应用于车辆控制系统,所述车辆控制系统包括:微控制单元mcu和微处理单元mpu,所述方法包括:
5.所述mcu接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令;
6.所述mpu响应于所述第一重启指令,执行重启,并将所述mpu内存储的linux最小系统加载为根文件系统;
7.所述mpu通过以太网向所述上位机发送烧写请求,以使所述上位机响应于所述烧写请求,将待烧写文件包通过以太网发送至所述mpu;
8.所述mpu对所述待烧写文件包进行校验,并在校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配的情况下,将所述待烧写文件包中包括的目标固件写入所述mpu;
9.所述mpu执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件。
10.可选地,所述待烧写文件包中还包括启动参数;
11.所述将所述待烧写文件包中包括的目标固件写入所述mpu,包括:
12.确定所述启动参数中指定的目标区域;
13.按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域;
14.所述将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件,包括:
15.将所述引导加载程序加载为根文件系统,以使所述引导加载程序将所述目标固件
从所述目标区域拷贝至所述mpu的内存;
16.执行所述目标固件。
17.可选地,在所述确定所述启动参数中指定的目标区域之后,所述将所述待烧写文件包中包括的目标固件写入所述mpu,还包括:
18.确定所述目标区域的状态;
19.若所述目标区域的状态为异常,向所述mcu发送第一异常信息,以使所述mcu将所述第一异常信息通过总线发送至所述上位机;
20.所述按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域,包括:
21.若所述目标区域的状态为正常,按照所述启动参数,将所述目标固件写入所述目标区域。
22.可选地,在所述确定所述目标区域的状态之后,所述将所述待烧写文件包中包括的目标固件写入所述mpu,还包括:
23.若所述目标区域的状态为异常,更新所述启动参数,并确定更新后的所述启动参数中指定的替换区域,所述替换区域与所述目标区域不同;
24.所述按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域,包括:
25.按照更新后的所述启动参数,将所述目标固件写入所述替换区域。
26.可选地,在所述将所述待烧写文件包中包括的目标固件写入所述mpu之后,所述方法还包括:
27.所述mpu向所述mcu发送第一提示信息,以使所述mcu将所述第一提示信息通过总线发送至所述上位机;
28.所述mcu向所述mpu发送第二重启指令;
29.所述mpu执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件,包括:
30.所述mpu响应于所述第二重启指令,执行重启,并将所述引导加载程序加载为根文件系统,以执行所述目标固件。
31.可选地,在所述mcu接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令之前,所述方法还包括:
32.所述mcu接收所述上位机通过总线发送的认证请求,并根据所述认证请求对所述上位机进行认证;
33.所述mcu在认证结果指示所述上位机通过认证的情况下,通过总线向所述上位机发送认证信息,以使所述上位机响应于所述认证信息,通过总线向所述mcu发送所述烧写报文。
34.可选地,所述待烧写文件包中还包括第一校验码和第一版本信息;所述mpu对所述待烧写文件包进行校验,包括:
35.根据所述待烧写文件包生成第二校验码;
36.若所述第一校验码与所述第二校验码匹配,且所述第一版本信息与所述车辆控制系统的第二版本信息匹配,确定所述校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配。
37.根据本公开实施例的第二方面,提供一种车辆控制系统,所述车辆控制系统包括:
mcu和mpu;
38.所述mcu,用于接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令;
39.所述mpu,用于响应于所述第一重启指令,执行重启,并将所述mpu内存储的linux最小系统加载为根文件系统;
40.所述mpu,还用于通过以太网向所述上位机发送烧写请求,以使所述上位机响应于所述烧写请求,将待烧写文件包通过以太网发送至所述mpu;
41.所述mpu,还用于对所述待烧写文件包进行校验,并在校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配的情况下,将所述待烧写文件包写入所述mpu;
42.所述mpu,还用于执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述待烧写文件包中包括的目标固件。
43.可选地,所述待烧写文件包中还包括启动参数;所述mpu还用于:
44.确定所述启动参数中指定的目标区域;
45.按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域;
46.将所述引导加载程序加载为根文件系统,以使所述引导加载程序将所述目标固件从所述目标区域拷贝至所述mpu的内存;
47.执行所述目标固件。
48.可选地,在所述确定所述启动参数中指定的目标区域之后,所述mpu还用于:
49.确定所述目标区域的状态;
50.若所述目标区域的状态为异常,向所述mcu发送第一异常信息,以使所述mcu将所述第一异常信息通过总线发送至所述上位机;
51.若所述目标区域的状态为正常,按照所述启动参数,将所述目标固件写入所述目标区域。
52.可选地,在所述确定所述目标区域的状态之后,所述mpu还用于:
53.若所述目标区域的状态为异常,更新所述启动参数,并确定更新后的所述启动参数中指定的替换区域,所述替换区域与所述目标区域不同;
54.按照更新后的所述启动参数,将所述目标固件写入所述替换区域。
55.可选地,在所述将所述待烧写文件包中包括的目标固件写入所述mpu之后,所述mpu还用于向所述mcu发送第一提示信息,以使所述mcu将所述第一提示信息通过总线发送至所述上位机;
56.所述mcu还用于向所述mpu发送第二重启指令;
57.所述mpu还用于响应于所述第二重启指令,执行重启,并将所述引导加载程序加载为根文件系统,以执行所述目标固件。
58.可选地,在所述mcu接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令之前,所述mcu还用于:
59.接收所述上位机通过总线发送的认证请求,并根据所述认证请求对所述上位机进行认证;
60.在认证结果指示所述上位机通过认证的情况下,通过总线向所述上位机发送认证信息,以使所述上位机响应于所述认证信息,通过总线向所述mcu发送所述烧写报文。
61.可选地,所述待烧写文件包中还包括第一校验码和第一版本信息;所述mpu还用于:
62.根据所述待烧写文件包生成第二校验码;
63.若所述第一校验码与所述第二校验码匹配,且所述第一版本信息与所述车辆控制系统的第二版本信息匹配,确定所述校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配。
64.根据本公开实施例的第三方面,提供一种固件的烧写系统,所述固件的烧写系统包括:车辆控制系统和上位机,所述车辆控制系统包括mcu和mpu;
65.所述车辆控制系统用于执行本公开实施例第一方面中任一项所述的方法。
66.通过上述技术方案,本公开中上位机通过总线向车辆控制系统中的mcu发送烧写报文,mcu根据收到的烧写报文向mpu发送第一重启指令,mpu收到第一重启指令之后执行重启,并将mpu内存储的linux最小系统加载为根文件系统,然后通过以太网向上位机发送烧写请求,上位机收到烧写请求之后,将待烧写文件包通过以太网发送至mpu,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu,最后,mpu执行重启,并将mpu内存储的引导加载程序加载为根文件系统,以执行目标固件。本公开的车辆控制系统中,mcu通过总线与上位机进行通信,从而使mcu控制mpu将linux最小系统加载为根文件系统,之后mpu通过以太网与上位机进行通信,接收上位机发送的待烧写文件包,并且mpu会先对待烧写文件包进行校验,再将待烧写文件包中的目标固件写入mpu,提高了固件烧写的有效性和可靠性。
67.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
68.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
69.图1是根据一示例性实施例示出的一种固件的烧写方法的流程图;
70.图2是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
71.图3是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
72.图4是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
73.图5是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
74.图6是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
75.图7是根据一示例性实施例示出的另一种固件的烧写方法的流程图;
76.图8是根据一示例性实施例示出的一种车辆控制系统的框图;
77.图9是根据一示例性实施例示出的一种固件的烧写系统的框图。
具体实施方式
78.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
79.图1是根据一示例性实施例示出的一种固件的烧写方法的流程图,如图1所示,该方法应用于车辆控制系统,该车辆控制系统包括:mcu(英文:micro controller unit,中文:微控制单元)和mpu(英文:micro processor unit,中文:微处理单元),该方法可以包括以下步骤:
80.步骤101,mcu接收上位机通过总线发送的烧写报文,并根据烧写报文向mpu发送第一重启指令。
81.步骤102,mpu响应于第一重启指令,执行重启,并将mpu内存储的linux最小系统加载为根文件系统。
82.举例来说,一个车辆控制系统中包括mcu和mpu,mcu可以通过总线与上位机进行数据交互,mpu可以通过以太网与上位机进行数据交互。进一步的,mcu和mpu可以通过硬线来进行数据交互,同时mcu还可以通过总线与控制mpu的电源管理芯片进行数据交互,从而控制mpu的上电和下电操作。其中,mcu与上位机之间的总线和mcu与电源管理芯片之间的总线可以相同,也可以不同。
83.其中,车辆控制系统可以是aeb、ecu、esp等,本公开对此不作具体限定。mpu中可以包括多个不同类型的存储器,存储器例如可以是norflash、emmc(英文:embedded multi media card)、ddr3等。norflash可以用来存储linux最小系统和引导加载程序,emmc可以用来存储系统程序(例如固件)和用户数据(例如配置文件)。上位机例如可以是终端设备,也可以是服务器,终端设备可以是pc(英文:personal computer,中文:个人计算机)等固定终端,也可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等的移动终端。具体的,上位机中可以包括canoe(英文:can open environment)模块和tcp/ip(英文:transmission control protocol/internet protocol,中文:传输控制协议/网际协议)模块,其中,上位机中的canoe模块可以通过can总线与车辆控制系统的mcu进行数据交互,上位机中的tcp/ip模块可以通过以太网与车辆控制系统的mpu进行数据交互。总线例如可以是can(英文:controller area network,中文:控制器局域网络)总线、i2c(英文:inter-integrated circuit)总线、smbus(英文:system management bus,中文:系统管理总线)、spi(英文:serial peripheral interface,中文:串行外设接口)总线等。其中,mcu与上位机之间的总线例如可以是can总线,mcu与电源管理芯片之间的总线例如可以是i2c总线。
84.在向车辆控制系统安装固件,或者升级车辆控制系统内的固件的场景中,上位机通过总线向车辆控制系统的mcu发送烧写报文,mcu在接收到烧写报文之后,可以通过硬线向mpu发送第一重启指令,从而控制mpu进行重启并进入以太网烧写模式,其中,第一重启指令可以为高电平信号。mpu在接收到mcu发送来的第一重启指令之后,可以重启内部程序,并将内部存储的linux最小系统加载为根文件系统。
85.具体的,以车辆控制系统为aeb、上位机为包含canoe模块的pc、总线为can总线的系统为例来举例说明。将pc通过pcan与aeb连接,pcan的一端插接在pc机的usb(英文:universal serial bus,中文:通用串行总线)接口上,另一端插接在aeb暴露出来的线束中的can总线接口上。首先,canoe模块通过can总线向aeb的mcu发送烧写报文,mcu在接收到烧写报文之后,可以通过硬线向mpu发送第一重启指令,mpu接收到第一重启指令后,重启并进
入以太网烧写模式,即将linux最小系统加载为根文件系统。
86.步骤103,mpu通过以太网向上位机发送烧写请求,以使上位机响应于烧写请求,将待烧写文件包通过以太网发送至mpu。
87.示例的,mpu在将linux最小系统成功加载为根文件系统之后,进入以太网烧写模式,linux最小系统可以控制mpu向mcu发送通知信息,通知mcu根文件系统已经加载成功,mcu在接收到通知信息之后,可以通过总线向上位机发送准备烧写报文,使上位机准备接收mpu之后发送的烧写请求。进一步的,mpu可以通过以太网向上位机发送socket长连接建立请求,使上位机根据socket长连接建立请求,建立与mpu之间的socket长连接。mpu可以通过socket长连接向上位机发送烧写请求,上位机接收到mpu发送的烧写请求之后,可以按照tftp(英文:trivial file transfer protocol,中文:简单文件传输协议)协议通过socket长连接将待烧写文件包发送至mpu。其中,待烧写文件包中可以包括目标固件和启动参数,目标固件可以理解为将要烧写进车辆控制系统的系统程序,启动参数可以理解为用于指示目标固件属性的参数,例如可以包括目标固件待写入的区域(即后文提及的目标区域)的名称、地址,还可以包括目标固件的校验值和版本信息等。
88.步骤104,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu。
89.步骤105,mpu执行重启,并将mpu内存储的引导加载程序加载为根文件系统,以执行目标固件。
90.示例的,mpu在接收到待烧写文件包之后,首先对待烧写文件包进行完整性和可依赖性的校验,在校验完成之后,mpu向mcu反馈校验结果,mcu在接收到校验结果之后,通过总线将校验结果发送给上位机。
91.如果校验结果为正常,即mpu确定待烧写文件包完整并且待烧写文件包与车辆控制系统匹配,那么mpu将待烧写文件包中的目标固件写入mpu。上位机在接收到正常的校验结果之后,可以继续执行预设步骤。具体的,待烧写文件包与车辆控制系统匹配,可以理解为待烧写文件包的版本信息与车辆控制系统的版本信息匹配。
92.如果校验结果为异常,即待烧写文件包不完整,和/或待烧写文件包与车辆控制系统不匹配,那么mpu退出以太网烧写模式,等待mcu重新发送第一重启指令。上位机在接收到异常的校验结果之后,可以修改待烧写文件包,也可以将校验结果展示给操作人员,例如可以在屏幕上弹出对话框显示“校验结果异常”。
93.进一步的,mpu在将待烧写文件包中包括的目标固件写入mpu之后,可以执行重启,并将mpu内存储的引导加载程序加载为根文件系统,引导加载程序可以执行目标固件,从而使车辆控制系统正常运行。其中,引导加载程序例如可以是bootloader。
94.综上所述,本公开中上位机通过总线向车辆控制系统中的mcu发送烧写报文,mcu根据收到的烧写报文向mpu发送第一重启指令,mpu收到第一重启指令之后执行重启,并将mpu内存储的linux最小系统加载为根文件系统,然后通过以太网向上位机发送烧写请求,上位机收到烧写请求之后,将待烧写文件包通过以太网发送至mpu,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu,最后,mpu执行重启,并将mpu内存储的引导加载程序加载为根文件系统,以执行目标固件。本公开的车辆控制系统中,mcu通过总线与上位机进行
通信,从而使mcu控制mpu将linux最小系统加载为根文件系统,之后mpu通过以太网与上位机进行通信,接收上位机发送的待烧写文件包,并且mpu会先对待烧写文件包进行校验,再将待烧写文件包中的目标固件写入mpu,提高了固件烧写的有效性和可靠性。
95.图2是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图2所示,待烧写文件包中还包括启动参数,步骤104可以通过以下步骤来实现:
96.步骤1041,确定启动参数中指定的目标区域。
97.步骤1042,按照启动参数,将目标固件写入mpu内的目标区域。
98.步骤105可以通过以下步骤来实现:
99.步骤1051,将引导加载程序加载为根文件系统,以使引导加载程序将目标固件从目标区域拷贝至mpu的内存。
100.步骤1052,执行目标固件。
101.示例的,mpu在对待烧写文件包进行校验,并且校验结果指示待烧写文件包完整且与车辆控制系统匹配的情况下,可以读取待烧写文件包中包括的启动参数,启动参数内可以包含目标区域的名称和目标区域的地址,从而根据目标区域的名称和目标区域的地址确定目标区域,之后mpu将待烧写文件包中的目标固件写入mpu内的目标区域。
102.进一步的,mpu可以将内部存储的启动参数的值更新为待烧写文件包中包括的启动参数的值,并将引导加载程序加载为根文件系统,这样引导加载程序可以根据mpu内部存储的,更新之后的启动参数中包含的目标区域的名称和目标区域的地址,将目标固件从目标区域拷贝至mpu的内存中,以执行目标固件。
103.具体的,以mpu中包含norflash和emmc来举例说明,norflash可以用来存储linux最小系统和引导加载程序bootloader,emmc可以包括a分区和b分区,用来存储目标固件。如果linux最小系统读取到待烧写文件包中启动参数所指定的目标区域的名称为a,那么可以根据启动参数中a分区的地址将待烧写文件包中的目标固件写入emmc中的a分区。进一步的,mpu可以将内部存储的启动参数中的目标区域的名称更新为a,将目标区域的地址更新为a分区的地址,然后将bootloader加载为根文件系统,bootloader可以根据a分区的地址,将目标固件从a分区拷贝至mpu的内存中,以执行目标固件。
104.图3是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图3所示,在步骤1041之后,步骤104还可以包括以下步骤:
105.步骤1043,确定目标区域的状态。
106.步骤1044,若目标区域的状态为异常,向mcu发送第一异常信息,以使mcu将第一异常信息通过总线发送至上位机。
107.相应的,步骤1042的实现方式可以为:
108.若目标区域的状态为正常,按照启动参数,将目标固件写入目标区域。
109.示例的,mpu在确定目标区域之后,可以先确定目标区域的状态。如果目标区域的状态为异常,那么mpu可以向mcu发送第一异常信息,mcu在接收到第一异常信息之后,可以通过总线将第一异常信息发送给上位机。如果目标区域的状态为正常,那么mpu可以根据目标区域的名称和目标区域的地址,将待烧写文件包中的目标固件写入mpu内的目标区域。
110.具体的,以mpu中包含emmc来举例说明,emmc可以包括a分区和b分区,用来存储目标固件。例如linux最小系统读取到待烧写文件包中启动参数内包含的目标区域名称为a,
可以先确定a分区的状态。如果a分区的状态为异常,那么mpu可以向mcu发送第一异常信息,mcu在接收到第一异常信息之后,可以通过总线将第一异常信息发送给上位机。
111.图4是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图4所示,在步骤1043之后,步骤104还可以包括以下步骤:
112.步骤1047,若目标区域的状态为异常,更新启动参数,并确定更新后的启动参数中指定的替换区域,替换区域与目标区域不同。
113.相应的,步骤1042的另一种实现方式可以为:
114.按照更新后的启动参数,将目标固件写入替换区域。
115.示例的,在mpu在确定目标区域之后,可以先确定目标区域的状态。如果目标区域的状态为异常,那么mpu可以更新启动参数,具体的,可以修改启动参数中包含的目标区域的名称、目标区域的地址和其他与目标区域相关的参数。进一步的,mpu可以确定更新后的启动参数中指定的替换区域,其中替换区域与目标区域不同。之后,mpu可以按照修改后的启动参数中包含的替换区域的名称、替换区域的地址和其他与替换区域相关的参数,将目标固件写入替换区域。
116.具体的,以mpu中包含emmc来举例说明,emmc可以包括a分区和b分区,用来存储目标固件。例如linux最小系统读取到待烧写文件包中启动参数中包含的目标区域名称为a,可以先确定a分区的状态。如果a分区的状态为异常,那么mpu可以将启动参数中包含的目标区域的名称a修改为b(即替换区域的名称),将目标区域的地址修改为b分区的地址(即替换区域的地址),并且mpu可以确定替换区域的名称b和b分区的地址。之后mpu可以根据修改后的启动参数内包含的b分区的地址,将目标固件写入b分区。
117.通过这种方式,在目标区域损坏的情况下,无需重新启动烧写程序,mpu可以自动更新目标区域,并将目标固件写入更新后的替换区域,提高了固件烧写的效率和可靠性。
118.图5是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图5所示,在步骤104之后,该方法还可以包括以下步骤:
119.步骤106,mpu向mcu发送第一提示信息,以使mcu将第一提示信息通过总线发送至上位机。
120.步骤107,mcu向mpu发送第二重启指令。
121.相应的,步骤105的实现方式可以为:
122.mpu响应于第二重启指令,执行重启,并将引导加载程序加载为根文件系统,以执行目标固件。
123.示例的,mpu在将目标固件写入目标区域之后,可以向mcu发送第一提示信息,mcu在接收到第一提示信息之后,可以通过总线向上位机发送第一提示信息,并通过硬线向mpu发送第二重启指令。mpu在接收到第二重启指令之后,可以执行重启,并将引导加载程序加载为根文件系统,引导加载程序可以将目标固件从目标区域拷贝至mpu的内存中,以执行目标固件。上位机在接收到第一提示信息之后,可以将提示信息展示给操作人员,例如可以在屏幕上弹出对话框显示“烧写成功”。
124.图6是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图6所示,在步骤101之前,该方法还可以包括以下步骤:
125.步骤108,mcu接收上位机通过总线发送的认证请求,并根据认证请求对上位机进
行认证。
126.步骤109,mcu在认证结果指示上位机通过认证的情况下,通过总线向上位机发送认证信息,以使上位机响应于认证信息,通过总线向mcu发送烧写报文。
127.示例的,上位机在向mcu发送烧写报文之前,可以先与mcu进行认证。首先,上位机通过总线向mcu发送认证请求,mcu在接收到认证请求之后,可以根据认证请求对上位机进行认证。认证方式例如可以为利用安全访问服务(英文:security access)机制进行认证。在认证结果指示上位机通过认证的情况下,mcu可以通过总线向上位机发送认证信息,上位机在收到认证信息之后,可以通过总线向mcu发送烧写报文。
128.具体的,mcu在接收到上位机发送的认证请求之后,可以根据认证请求生成一个随机种子,并通过总线将随机种子发送至上位机,上位机在接收到随机种子之后,可以根据随机种子生成第一密钥,并将第一密钥通过总线发送至mcu。mcu也可以根据生成的随机种子生成第二密钥,并将第一密钥与第二密钥进行比对。如果上位机是经过mcu认证的,那么上位机根据随机种子生成第一密钥的算法,应当和mcu根据随机种子生成第二密钥的算法相匹配,那么第一密钥和第二密钥也应当匹配。因此,如果第一密钥和第二密钥匹配,那么mpu可以确定认证结果指示上位机通过认证,如果第一密钥和第二密钥不匹配,那么mpu可以确定认证结果指示上位机未通过认证。
129.需要说明的是,第一密钥和第二密钥匹配可以为理解第一密钥和第二密钥相同。如果上位机和车辆mcu中包含相同的密钥生成算法,那么根据相同的随机种子按照相同的密钥生成算法,就可以生成相同的密钥,第一密钥和第二密钥相同时,可以确定上位机通过认证。
130.图7是根据一示例性实施例示出的另一种固件的烧写方法的流程图,如图7所示,待烧写文件包中还包括第一校验码和第一版本信息。步骤104还可以通过以下步骤来实现:
131.步骤1045,根据待烧写文件包生成第二校验码。
132.步骤1046,若第一校验码与第二校验码匹配,且第一版本信息与车辆控制系统的第二版本信息匹配,确定校验结果指示待烧写文件包完整,且与车辆控制系统匹配。
133.示例的,mpu在接收到待烧写文件包之后,可以先根据待烧写文件包生成第二校验码,如果待烧写文件包中的第一校验码和mcu生成的第二校验码匹配,并且待烧写文件包中的第一版本信息与车辆控制系统中的第二版本信息匹配,那么可以确定校验结果指示待烧写文件包完整,且与车辆控制系统匹配。其中,mcu可以使用crc(英文:cyclic redundancy check,中文:循环冗余校验)32校验工具,根据待烧写文件包对应的数据帧生成第二校验码,如果待烧写文件包中的第一校验码和mcu生成的第二校验码相同,那么可以认为第一校验码与第二校验码匹配。
134.需要说明的是,第二版本信息可以包括mcu的版本信息和mpu的版本信息,待烧写文件包中的第一版本信息与车辆控制系统中的第二版本信息匹配,可以理解为第一版本信息和第二版本信息中的年份匹配,年份信息匹配例如可以是第一版本信息中的年份与第二版本信息中的年份相同,也可以是第二版本信息中的年份在第一版本信息中的年份之前。例如,第一版本信息中包含的年份为2018,mcu和mpu的版本信息中包含的年份也为2018,那么可以认为第一版本信息和第二版本信息匹配。或者第一版本信息中的年份为2020,第二版本信息中的mcu的版本信息中的年份为2019,且mpu的版本信息中的年份也为2019,那么
可以认为第一版本信息和第二版本信息匹配。待烧写文件包中的第一版本信息与车辆控制系统中的第二版本信息匹配的情况还可以是第一版本信息和第二版本信息中的生产商信息匹配等,本公开对此不作具体限定。
135.综上所述,本公开中上位机通过总线向车辆控制系统中的mcu发送烧写报文,mcu根据收到的烧写报文向mpu发送第一重启指令,mpu收到第一重启指令之后执行重启,并将mpu内存储的linux最小系统加载为根文件系统,然后通过以太网向上位机发送烧写请求,上位机收到烧写请求之后,将待烧写文件包通过以太网发送至mpu,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu,最后,mpu执行重启,并将mpu内存储的引导加载程序加载为根文件系统,以执行目标固件。本公开的车辆控制系统中,mcu通过总线与上位机进行通信,从而使mcu控制mpu将linux最小系统加载为根文件系统,之后mpu通过以太网与上位机进行通信,接收上位机发送的待烧写文件包,并且mpu会先对待烧写文件包进行校验,再将待烧写文件包中的目标固件写入mpu,提高了固件烧写的有效性和可靠性。
136.需要说明的是,上述实施例中上位机的所执行的步骤可以为:
137.步骤1)通过总线向车辆控制系统的mcu发送烧写报文,以使mcu根据烧写报文向车辆控制系统的mpu发送第一重启指令,mpu用于执行重启,并将mpu内存储的linux最小系统加载为根文件系统。
138.举例来说,在向车辆控制系统安装固件,或者升级车辆控制系统内的固件的场景中,上位机通过总线向车辆控制系统的mcu发送烧写报文,mcu在接收到烧写报文之后,可以通过硬线向mpu发送第一重启指令,其中,第一重启指令可以为高电平信号。mpu在接收到mcu发送来的第一重启指令之后,可以执行重启,并进入以太网烧写模式,即将linux最小系统加载为根文件系统。
139.步骤2)通过以太网接收mpu发送的烧写请求。响应于烧写请求,通过以太网将待烧写文件包发送至mpu,以使mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu。
140.示例的,mpu可以通过以太网向上位机发送socket长连接建立请求,上位机在接收到socket长连接建立请求之后,建立与mpu之间的socket长连接。mpu可以通过socket长连接向上位机发送烧写请求,上位机在接收到mpu的烧写请求之后,可以按照tftp协议通过socket长连接将待烧写文件包发送至mpu。其中,待烧写文件包中可以包括目标固件和启动参数,目标固件可以理解为将要烧写进车辆控制系统的系统程序,启动参数可以理解为用于指示目标固件属性的参数,例如可以包括目标固件待写入的区域(即后文提及的目标区域)的名称、地址,还可以包括目标固件的校验值和版本信息等。
141.mpu在接收到待烧写文件包之后,首先对待烧写文件包进行完整性和可依赖性的校验,在校验完成之后,mpu向mcu反馈校验结果,mcu在接收到校验结果之后,通过总线将校验结果发送给上位机。
142.如果校验结果为正常,即mpu确定待烧写文件包完整并且待烧写文件包与车辆控制系统匹配,那么mpu将待烧写文件包中的目标固件写入mpu。上位机在接收到正常的校验结果之后,可以继续执行预设步骤。具体的,待烧写文件包与车辆控制系统匹配,可以理解为待烧写文件包的版本信息与车辆控制系统的版本信息匹配。
143.如果校验结果为异常,即待烧写文件包不完整,和/或待烧写文件包与车辆控制系统不匹配,那么mpu退出以太网烧写模式,等待mcu重新发送第一重启指令。上位机在接收到异常的校验结果之后,可以修改待烧写文件包,也可以将校验结果展示给操作人员,例如可以在屏幕上弹出对话框显示“校验结果异常”。待烧写文件包修改完成后,上位机可以再次向mcu发送烧写报文,重新执行上述烧写程序。
144.进一步的,上位机还可以执行以下步骤:
145.步骤3)通过总线接收mcu发送的第一异常信息,第一异常信息为mpu根据启动参数确定目标区域之后,确定目标区域的状态为异常的情况下,发送至mcu的,目标区域用于指示目标固件写入mpu的区域。
146.步骤4)根据第一异常信息,更新待烧写文件包中的启动参数。
147.步骤5)再次执行通过总线向车辆控制系统的mcu发送烧写报文,至响应于烧写请求,通过以太网将待烧写文件包发送至mpu的步骤。
148.示例的,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,可以读取待烧写文件包中包括的启动参数,启动参数内可以包含目标区域的名称和目标区域的地址,从而根据目标区域名称和目标区域的地址确定目标区域的状态。如果目标区域的状态为异常,那么mpu可以向mcu发送第一异常信息,mcu在接收到第一异常信息之后,可以通过总线将第一异常信息发送给上位机。上位机在接收到第一异常信息之后,可以修改待烧写文件包中启动参数内包含的目标区域的名称和目标区域的地址,也可以将第一异常信息展示给操作人员,例如可以在屏幕上弹出对话框显示“写入分区状态异常”。修改完成后,上位机可以再次向mcu发送烧写报文,重新执行上述烧写程序。其中,目标区域的状态为异常例如可以是目标区域损坏。
149.具体的,以mpu中包含emmc来举例说明,emmc可以包括a分区和b分区,用来存储目标固件。例如linux最小系统读取到待烧写文件包中启动参数内包含的目标区域名称为a,可以先确定a分区的状态。如果a分区的状态为异常,那么mpu可以向mcu发送第一异常信息,mcu在接收到第一异常信息之后,可以通过总线将第一异常信息发送给上位机。上位机在接收到第一异常信息之后,可以将待烧写文件包中启动参数内包含的目标区域的名称修改为b,将目标区域的地址修改为b分区的地址,也可以将第一异常信息展示给操作人员,例如可以在屏幕上弹出对话框显示“写入分区状态异常”。修改完成后,上位机可以再次向mcu发送烧写报文,重新执行上述烧写程序,使mpu根据修改后的启动参数将目标固件写入b分区。
150.图8是根据一示例性实施例示出的一种车辆控制系统的框图,如图8所示,提供一种车辆控制系统300,该车辆控制系统300包括:mcu301和mpu302。
151.mcu301,用于接收上位机通过总线发送的烧写报文,并根据烧写报文向mpu302发送第一重启指令。
152.mpu302,用于响应于第一重启指令,执行重启,并将mpu302内存储的linux最小系统加载为根文件系统。
153.mpu302,还用于通过以太网向上位机发送烧写请求,以使上位机响应于烧写请求,将待烧写文件包通过以太网发送至mpu302。
154.mpu302,还用于对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统300匹配的情况下,将待烧写文件包写入mpu302。
155.mpu302,还用于执行重启,并将mpu302内存储的引导加载程序加载为根文件系统,以执行待烧写文件包中包括的目标固件。
156.待烧写文件包中还包括启动参数。在一种应用场景中,mpu302还用于:
157.确定启动参数中指定的目标区域。
158.按照启动参数,将目标固件写入mpu302内的目标区域。
159.将引导加载程序加载为根文件系统,以使引导加载程序将目标固件从目标区域拷贝至mpu302的内存。
160.执行目标固件。
161.在另一种应用场景中,在确定启动参数中指定的目标区域之后,mpu302还用于:
162.确定目标区域的状态。
163.若目标区域的状态为异常,向mcu301发送第一异常信息,以使mcu301将第一异常信息通过总线发送至上位机。
164.若目标区域的状态为正常,按照启动参数,将目标固件写入目标区域。
165.在另一种应用场景中,在确定目标区域的状态之后,mpu302还用于:
166.若目标区域的状态为异常,更新启动参数,并确定更新后的启动参数中指定的替换区域,替换区域与目标区域不同。
167.按照更新后的启动参数,将目标固件写入替换区域。
168.在另一种应用场景中,在将待烧写文件包中包括的目标固件写入mpu302之后,mpu302还用于向mcu301发送第一提示信息,以使mcu301将第一提示信息通过总线发送至上位机。
169.mcu301还用于向mpu302发送第二重启指令。
170.mpu302还用于响应于第二重启指令,执行重启,并将引导加载程序加载为根文件系统,以执行目标固件。
171.在另一种应用场景中,在mcu301接收上位机通过总线发送的烧写报文,并根据烧写报文向mpu302发送第一重启指令之前,mcu301还用于:
172.接收上位机通过总线发送的认证请求,并根据认证请求对上位机进行认证。
173.在认证结果指示上位机通过认证的情况下,通过总线向上位机发送认证信息,以使上位机响应于认证信息,通过总线向mcu301发送烧写报文。
174.在另一种应用场景中,所述待烧写文件包中还包括第一校验码和第一版本信息;mpu302还用于:
175.根据待烧写文件包生成第二校验码。
176.若第一校验码与第二校验码匹配,且第一版本信息与车辆控制系统300的第二版本信息匹配,确定校验结果指示待烧写文件包完整,且与车辆控制系统300匹配。
177.图9是根据一示例性实施例示出的一种固件的烧写系统的框图,如图9所示,固件的烧写系统包括:车辆控制系统300和上位机400,车辆控制系统300包括mcu301和mpu302。
178.车辆控制系统300可以用于执行上述应用于车辆控制系统300的方法的步骤。
179.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
180.综上所述,本公开中上位机通过总线向车辆控制系统中的mcu发送烧写报文,mcu
根据收到的烧写报文向mpu发送第一重启指令,mpu收到第一重启指令之后执行重启,并将mpu内存储的linux最小系统加载为根文件系统,然后通过以太网向上位机发送烧写请求,上位机收到烧写请求之后,将待烧写文件包通过以太网发送至mpu,mpu对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入mpu,最后,mpu执行重启,并将mpu内存储的引导加载程序加载为根文件系统,以执行目标固件。本公开的车辆控制系统中,mcu通过总线与上位机进行通信,从而使mcu控制mpu将linux最小系统加载为根文件系统,之后mpu通过以太网与上位机进行通信,接收上位机发送的待烧写文件包,并且mpu会先对待烧写文件包进行校验,再将待烧写文件包中的目标固件写入mpu,提高了固件烧写的有效性和可靠性。
181.以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
182.另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
183.此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
技术特征:
1.一种固件的烧写方法,其特征在于,应用于车辆控制系统,所述车辆控制系统包括:微控制单元mcu和微处理单元mpu,所述方法包括:所述mcu接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令;所述mpu响应于所述第一重启指令,执行重启,并将所述mpu内存储的linux最小系统加载为根文件系统;所述mpu通过以太网向所述上位机发送烧写请求,以使所述上位机响应于所述烧写请求,将待烧写文件包通过以太网发送至所述mpu;所述mpu对所述待烧写文件包进行校验,并在校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配的情况下,将所述待烧写文件包中包括的目标固件写入所述mpu;所述mpu执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件。2.根据权利要求1所述的方法,其特征在于,所述待烧写文件包中还包括启动参数;所述将所述待烧写文件包中包括的目标固件写入所述mpu,包括:确定所述启动参数中指定的目标区域;按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域;所述将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件,包括:将所述引导加载程序加载为根文件系统,以使所述引导加载程序将所述目标固件从所述目标区域拷贝至所述mpu的内存;执行所述目标固件。3.根据权利要求2所述的方法,其特征在于,在所述确定所述启动参数中指定的目标区域之后,所述将所述待烧写文件包中包括的目标固件写入所述mpu,还包括:确定所述目标区域的状态;若所述目标区域的状态为异常,向所述mcu发送第一异常信息,以使所述mcu将所述第一异常信息通过总线发送至所述上位机;所述按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域,包括:若所述目标区域的状态为正常,按照所述启动参数,将所述目标固件写入所述目标区域。4.根据权利要求3所述的方法,其特征在于,在所述确定所述目标区域的状态之后,所述将所述待烧写文件包中包括的目标固件写入所述mpu,还包括:若所述目标区域的状态为异常,更新所述启动参数,并确定更新后的所述启动参数中指定的替换区域,所述替换区域与所述目标区域不同;所述按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域,包括:按照更新后的所述启动参数,将所述目标固件写入所述替换区域。5.根据权利要求1所述的方法,其特征在于,在所述将所述待烧写文件包中包括的目标固件写入所述mpu之后,所述方法还包括:所述mpu向所述mcu发送第一提示信息,以使所述mcu将所述第一提示信息通过总线发送至所述上位机;
所述mcu向所述mpu发送第二重启指令;所述mpu执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述目标固件,包括:所述mpu响应于所述第二重启指令,执行重启,并将所述引导加载程序加载为根文件系统,以执行所述目标固件。6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述mcu接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令之前,所述方法还包括:所述mcu接收所述上位机通过总线发送的认证请求,并根据所述认证请求对所述上位机进行认证;所述mcu在认证结果指示所述上位机通过认证的情况下,通过总线向所述上位机发送认证信息,以使所述上位机响应于所述认证信息,通过总线向所述mcu发送所述烧写报文。7.根据权利要求1-5中任一项所述的方法,其特征在于,所述待烧写文件包中还包括第一校验码和第一版本信息;所述mpu对所述待烧写文件包进行校验,包括:根据所述待烧写文件包生成第二校验码;若所述第一校验码与所述第二校验码匹配,且所述第一版本信息与所述车辆控制系统的第二版本信息匹配,确定所述校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配。8.一种车辆控制系统,其特征在于,所述车辆控制系统包括:mcu和mpu;所述mcu,用于接收上位机通过总线发送的烧写报文,并根据所述烧写报文向所述mpu发送第一重启指令;所述mpu,用于响应于所述第一重启指令,执行重启,并将所述mpu内存储的linux最小系统加载为根文件系统;所述mpu,还用于通过以太网向所述上位机发送烧写请求,以使所述上位机响应于所述烧写请求,将待烧写文件包通过以太网发送至所述mpu;所述mpu,还用于对所述待烧写文件包进行校验,并在校验结果指示所述待烧写文件包完整,且与所述车辆控制系统匹配的情况下,将所述待烧写文件包写入所述mpu;所述mpu,还用于执行重启,并将所述mpu内存储的引导加载程序加载为根文件系统,以执行所述待烧写文件包中包括的目标固件。9.根据权利要求8所述的车辆控制系统,其特征在于,所述待烧写文件包中还包括启动参数;所述mpu还用于:确定所述启动参数中指定的目标区域;按照所述启动参数,将所述目标固件写入所述mpu内的所述目标区域;将所述引导加载程序加载为根文件系统,以使所述引导加载程序将所述目标固件从所述目标区域拷贝至所述mpu的内存;执行所述目标固件。10.一种固件的烧写系统,其特征在于,所述固件的烧写系统包括:车辆控制系统和上位机,所述车辆控制系统包括mcu和mpu;所述车辆控制系统用于执行权利要求1-7中任一项所述的方法。
技术总结
本公开涉及一种固件的烧写方法、系统、车辆控制系统,涉及车辆控制领域,该方法应用于车辆控制系统,包括:MCU接收上位机通过总线发送的烧写报文,并根据烧写报文向MPU发送第一重启指令,MPU响应于第一重启指令,执行重启,并将MPU内存储的Linux最小系统加载为根文件系统,MPU通过以太网向上位机发送烧写请求,以使上位机响应于烧写请求,将待烧写文件包通过以太网发送至MPU,MPU对待烧写文件包进行校验,并在校验结果指示待烧写文件包完整,且与车辆控制系统匹配的情况下,将待烧写文件包中包括的目标固件写入MPU,MPU执行重启,并将MPU内存储的引导加载程序加载为根文件系统,以执行目标固件。行目标固件。行目标固件。
技术研发人员:邵明亮 史慧罡 李佳 汪晗旸 谭福生 孙占文 王彦琴 姚卫青
受保护的技术使用者:北汽福田汽车股份有限公司
技术研发日:2020.11.23
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-14885.html