CN108491224B - 一种车载软件更新方法及系统 - Google Patents
一种车载软件更新方法及系统 Download PDFInfo
- Publication number
- CN108491224B CN108491224B CN201810746224.5A CN201810746224A CN108491224B CN 108491224 B CN108491224 B CN 108491224B CN 201810746224 A CN201810746224 A CN 201810746224A CN 108491224 B CN108491224 B CN 108491224B
- Authority
- CN
- China
- Prior art keywords
- data
- current data
- address
- vehicle
- 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.)
- Active
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
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
本发明实施例提供了一种车载软件更新方法及系统,基于UART接口实现了车载软件的更新。实施例方法包括:获取待更新的源文件,源文件为HEX格式文件;获取源文件指定的刷写地址;依次读取源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于刷写地址时,将当前数据进行数据格式转换生成MCU格式的目标数据,并根据当前数据对应的行地址将目标数据写入到缓存区域形成目标文件;采用通用异步收发传输UART接口将目标文件发送至协议转换器进行数据格式转换,协议转换器用于将UART协议数据转换为CAN总线协议数据;控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件。
Description
技术领域
本发明涉及车载软件技术领域,尤其涉及一种车载软件更新方法及系统。
背景技术
Bootloader驱动是运行于ECU的固定地址的一段启动代码,该段代码主要包含UDS诊断服务和FLASH编程等功能,并且可以通过UDS诊断服务与上位机完成应用程序代码更新的工作。
车载ECU更新Bootloader(启动加载)程序时,一般需要拆卸设备外壳才能使用烧写器重新烧写Bootloader程序。一般情况下,单片机更新应用程序,需要通过烧写器直接烧写来完成,这种方法在使用中很不方便,当汽车已经销售给客户后,一旦后期发现Bootloader有BUG,或者功能方面的更新,需要将汽车召回后,只能将汽车中需要更新Bootloader的ECU拆卸下来,然后重新烧写Bootloader程序。在拆卸设备过程中可能会导致其他不良故障,影响安全性能。
有鉴于此,有必要提出一种新的车载软件更新方法。
发明内容
本发明实施例提供了一种车载软件更新方法及系统,基于UART接口实现了车载软件的更新。
本发明实施例第一方面提供了一种车载软件更新方法,其特征在于,运用于包括:
获取待更新的源文件,所述源文件为HEX格式文件;
获取所述源文件指定的刷写地址;
依次读取所述源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于所述刷写地址时,将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,所述目标文件为MCU格式文件;
采用通用异步收发传输UART接口将所述目标文件发送至协议转换器进行数据格式转换,所述协议转换器用于将UART协议数据转换为CAN总线协议数据;
控制所述协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据所述目标文件更新对应的车载软件。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新方法中,所述将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,包括:
读取当前数据中的数据类型标识;
若所述当前数据中的数据类型标识为十六进位制数据0x04,则读取所述当前数据的高位地址,并读取下一行数据;
若所述当前数据中的数据类型标识为0x00,则计算所述当前数据的行地址;
若所述当前数据的行地址对应的行地址不小于所述刷写地址时,则计算所述当前数据的行地址与上一行数据的行地址之间的差值;
若所述当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,则在所述当前数据与所述当前数据上一行数据之间的空白数据位中填充0x00;
若所述当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,则根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新方法中,在所述将所述目标文件发送给车机之前,所述方法还包括:
向车机发送解锁请求;
接收所述车机返回的秘钥协商参数;
根据所述秘钥协商参数及所述车机对应的密钥算法计算所述车机对应的解密密钥,并将所述解密密钥发送给所述车机进行验证,若验证通过,则进行数据传输。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新方法还包括:
根据UDS帧传输规则,控制所述协议转换器将所述目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。
本发明实施例第二方面提供了一种车载软件更新系统,其特征在于,包括:
第一获取模块,用于获取待更新的源文件,所述源文件为HEX格式文件;
第二获取模块,用于获取所述源文件指定的刷写地址;
解析模块,用于依次读取所述源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于所述刷写地址时,将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,所述目标文件为MCU格式文件;
第一发送模块,用于采用通用异步收发传输器UART将所述目标文件发送至协议转换器进行数据格式转换;
协议转换器,用于将UART协议数据转换为CAN总线协议数据;
控制模块,用于控制所述协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据所述目标文件更新对应的车载软件。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新系统中的所述解析模块包括:
第一读取单元,用于读取所述当前数据中的数据类型标识;
第二读取单元,若所述当前数据中的数据类型标识为04,用于读取所述当前数据的高位地址,并读取下一行数据;
第一计算单元,若所述当前数据中的数据类型标识为00,则计算所述当前数据的行地址;
第二计算单元,若所述当前数据的行地址对应的行地址不小于所述刷写地址时,则计算所述当前数据的行地址与上一行数据的行地址之间的差值;
数据填充单元,若所述当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,用于在所述当前数据与所述当前数据上一行数据之间的空白数据位中填充零;
写入单元,若所述当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,用于根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新系统还包括:
第二发送模块,用于向车机发送解锁请求;
接收模块,用于接收所述车机返回的秘钥协商参数;
计算模块,用于根据所述秘钥协商参数及所述车机对应的密钥算法计算所述车机对应的解密密钥,并将所述解密密钥发送给所述车机进行验证,若验证通过,则进行数据传输。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新系统中的所述控制模块包括:
控制单元,用于根据UDS帧传输规则,控制所述协议转换器将所述目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,车载软件更新系统可以将获取到的HEX格式的源文件进行格式转换生成MCU格式的目标文件,并基于协议转换器将UART协议数据转换为CAN总线协议数据,最后控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件,基于UART接口实现了车载软件的更新,节约了成本。
附图说明
图1为本发明实施例中一种车载软件更新方法的一个实施例示意图;
图2为本发明实施例中HEX格式文件数据结构示意图;
图3为本发明实施例中对HEX格式文件进行格式转换的一个实施例示意图;
图4为本发明实施例中HEX格式文件进行格式转换前后对照示意图;
图5为本发明实施例中一种车载软件更新方法的另一个实施例示意图;
图6为本发明实施例中一种车载软件更新系统的一个实施例示意图;
图7为本发明实施例中一种车载软件更新系统中的解析模块的功能细化示意图;
图8为本发明实施例中一种车载软件更新系统的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种车载软件更新方法及系统,基于UART接口实现了车载软件的更新。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着汽车网络的逐渐复杂,CAN总线的广泛使用,对车载网络的诊断就显得尤为重要,基于ISO15765的车载网络诊断协议不仅可以读取故障码,还能实现车载网络ECU(Electronic Control Unit)的在线升级功能,通过在线升级功能,整车厂可以在4S店刷新控制软件,从而减少软件缺陷照成的召回成本。目前针对UDS(Unified DiagnosticServices)网络诊断测试国内在此方面的技术研究相对薄弱,诊断工具依赖外国的高成本设备,ECU中的UDS等软件的在线升级成为了亟待解决的问题。
本发明实施例中,基于车载软件更新系统实现UDS等ECU软件的在线升级功能,其中车载软件更新系统包含基于QT图形界面开发平台,开发的QT程序以及可以将UART串口数据转换为CAN总线数据的协议转换器。具体的,QT程序通过QT串口控制CAN总线波特率、发送模式、CAN路选择等参数的硬件配置,PC发送的串口数据,通过一定的格式进行解析转换为CAN总线数据来实现总线数据的发送,通过协议转换器将基于UART串口数据转换为CAN总线数据,实现UDS等ECU软件的在线升级功能。
为了便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中一种车载软件更新方法的一个实施例可包括:
100、获取待更新的源文件;
在车载软件开发过程中一般会生成可执行的源文件,该源文件一般为HEX格式文件。请参阅图2,HEX格式文件数据结构示意图,hex格式文件数据以十六进制进行记录,其中,hex格式文件的每一行的前两位16进制数据为该行的数据长度标识,第三至第六位为数据地址标识,第七至第八位为数据类型标识,最后两位为数据验证标识,在数据验证标识与数据类型标识之间的为该行存储的数据,即HEX格式文件的每一行的格式为:“:数据长度+地址+类型(TT)+数据+校验”。TT=00表示该行存储的是程序数据;TT=01表示文件结束;TT=02表示扩展段地址;TT=03表示开始段地址;TT=04表示扩展线性地址。
本发明实施例中的车载软件更新系统在对车机ECU中的软件进行更新之前,可以主动或被动的获取待更新的源文件,具体的获取方式此处不做限定。
200、获取源文件指定的刷写地址;
待更新的源文件(hex文件)中往往是由一个或多个功能块组成,软件更新的过程中并不一定需要从文件的起始地址开始刷写,本发明实施例中为了提高程序使用的灵活性,还可以根据实际需求选取源文件中的需要更新的功能块对应的程序数据进行ECU软件的更新,具体可以根据实际软件功能工程师指定的刷写地址为准,从指定的刷写地址处开始刷写待更新的源文件。本发明实施例中的车载软件更新系统在对车机ECU中的软件进行更新之前,需要获取源文件指定的刷写地址。
300、依次读取源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于刷写地址时,将当前数据进行数据格式转换生成MCU格式的目标数据,并根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件;
由于获取到的源文件为HEX格式,而车机ECU中的可执行文件一般为MCU格式文件,因而,本发明实施例中的车载软件更新系统在对车机ECU中的软件进行更新之前,需要对源文件进行格式转换。
具体的,本发明实施例中的车载软件更新系统依次读取源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于刷写地址时,将当前数据进行数据格式转换生成MCU格式的目标数据,具体的格式转换算法此处不做限定,最后根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件。
可选的,作为一种可能的实施例方式,请参阅图3,本发明实施例中,上述步骤300中,将当前数据进行数据格式转换生成MCU格式的目标数据,并根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件,具体包括:
301、读取一行数据,并读取当前数据中的数据类型标识;
本发明实施例中的车载软件更新系统依次读取源文件中的每一行数据,在读取到一行数据之后,可以读取当前数据中的数据类型标识,具体请参阅图2,数据类型标识为第七至第八位为数据类型标识。
302、判断当前数据中的数据类型标识是否为十六进位制数据0x04;
HEX文件中的行地址包含高地址及低地址,在进行数据格式转换之前需要计算每一行的行地址。在读取当前数据中的数据类型标识之后,可以判断当前数据中的数据类型标识是否为十六进位制数据0x04,若当前数据中的数据类型标识为十六进位制数据0x04,则表示该行的数据类型为高地址,进而执行步骤303,可以读取该行的数据作为高地址,若当前数据中的数据类型标识不为0x04,则可以执行步骤304。
具体的请参阅图2,图2中的第一行数据“020000040800F2”中第七至第八位“04”表示该行的数据“0800”为下面各行数据的高地址,第二行的行地址可以表示为“0800 0000”,第三行的行地址为“0800 0010”,第四行的行地址为“0800 0020”,依次类推。
303、读取当前数据的高位地址,并读取下一行数据;
304、判断当前数据中的数据类型标识是否为0x00;
在读取当前数据中的数据类型标识,还可以判断数据类型标识为是否为0x00,若数据类型标识为0x00,则可以确定该行保存的数据为程序数据,则执行步骤305,根据高地址及该行的数据地址标识计算当前数据的行地址。若数据类型标识不为0x00,则可以执行其他步骤,具体可以根据实际需求进行设置,例如,0x01表示文件结束,则可以根据程序的功能结束刷写。
305、计算当前数据的行地址;
将该行的数据地址标识作为低地址,结合高地址即可计算当前数据的行地址。
306、判断当前数据的行地址对应的行地址是否大于刷写地址;
待更新的源文件(hex文件)中往往是由一个或多个功能块组成,软件更新的过程中并不一定需要从文件的起始地址开始刷写,本发明实施例中为了提高程序使用的灵活性,还可以根据实际需求选取源文件中的需要更新的功能块对应的程序数据进行ECU软件的更新,具体可以根据实际软件功能工程师指定的刷写地址为准,从指定的刷写地址处开始刷写待更新的源文件。本发明实施例中的车载软件更新系统在对车机ECU中的软件进行更新之前,需要判断当前数据的行地址对应的行地址是否大于刷写地址,若小于,则可以返回步骤301,读取下一行数据进行处理,若当前数据的行地址对应的行地址大于刷写地址,则执行步骤307。
307、判断当前数据的行地址与上一行数据的行地址之间的差值是否等于上一行数据长度;
HEX格式的文件与MCU格式的文件中的数据均采用十六进制进行计数,两者的区别在于,HEX格式的文件中对于数据位是不做填充处理的,而MCU格式的文件中的空数据为需要以0x00填充。因而,本发明实施例中将HEX文件转换为MCU格式的文件,需要将读取HEX格式文件中的数据,并将空数据位填充0x00生成每一行对应的目标数据。
若当前数据的行地址对应的行地址不小于刷写地址时,则系统可以计算当前数据的行地址与上一行数据的行地址之间的差值,可以判断当前数据的行地址与上一行数据的行地址之间的差值是否等于上一行数据长度。若当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,则执行步骤308。若当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,则执行步骤309,直接根据当前数据对应的行地址将当前数据写入到缓存区域的对应位置。
308、在当前数据与当前数据上一行数据之间的空白数据位中填充0x00;
若当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,则在当前数据与当前数据上一行数据之间的空白数据位中填充0x00,以完成中间空地址位的填充,填充之后,可以根据当前数据对应的行地址将当前数据写入到缓存区域的对应位置。
具体的,请参阅图4,图4为HEX格式文件进行格式转换前后对照示意图,图中左边为HEX文件数据示意图,右边为格式转换之后的MCU格式文件的部分示意图,其中HEX文件中第91行的地址为0x0620至0x0629,92行的地址为0x062C。将HEX文件中第91行至92行的数据“50 00 23EF 01 004C 1A 7F 00”“01”刷写到MCU格式文件对应的位置(97行),其中,0x062A至0x062B为空,以0x00填充。HEX文件中第93行的地址为0x0800,相对于第92行最后一个数据的地址0x062C,0x0800与0x062C之间的空地址位(0x0630至0x07F0之间),需要以0x00填充。
309、根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件。
若当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,则根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置,当源文件读取完成之后,各行对应的目标数据形成目标文件,完成对源文件格式的转换。
可以理解的是,图3所示的对HEX格式文件进行格式转换的一个实施例,仅仅是对车机MCU中的UDS诊断软件进行更新时的格式转换方法,对MCU中不同的软件进行更新时,格式转换的方法可能不同,例如,有的软件更新在进行格式转换过程中,对空数据位可能需要以0xFF填充,具体的只需保证格式转换之后的数据可以直接刷写至MCU的代码区,可以被MCU执行即可,具体的格式转换的方法,可以根据实际需求进行合理的调整,此处不做限定。
400、采用通用异步收发传输UART接口将目标文件发送至协议转换器进行数据格式转换,协议转换器用于将UART协议数据转换为CAN总线协议数据;
本发明实施例中的车载软件更新系统包含基于QT图形界面开发平台,开发的QT程序以及可以将UART串口数据转换为CAN总线数据的协议转换器。具体的,QT程序通过QT串口控制CAN总线波特率、发送模式、CAN路选择等参数的硬件配置,PC发送的串口数据,通过一定的格式进行解析转换为CAN总线数据来实现总线数据的发送通过协议转换器将基于UART串口数据转换为CAN总线数据。示例性的,本发明实施例中的协议转换器具体可以STM32F105作为主控芯片,结合现有的串口电路及CAN总线电路即可完成发送过程中的数据格式的转换,具体的UART-CAN协议转换器为现有技术,此处不做限定。
500、控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件。
车机通过CAN总线可以接收到经过PC端进行格式转换之后的目标文件,由于目标文件为MCU格式兼容文件,车机上的MCU接收后直接烧录到代码区,完成软件的更新。
本发明实施例中,车载软件更新系统可以将获取到的HEX格式的源文件进行格式转换生成MCU格式的目标文件,并基于协议转换器将UART协议数据转换为CAN总线协议数据,最后控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件,基于UART接口实现了车载软件的更新。
在上述图1所示的实施例的基础上,为了提高数据传输的安全性,在发送目标文件之前,车机需要对文件发送者的身份进行验证,请参阅图5,本发明实施例中一种车载软件更新方法的另一个实施例可包括:
600、向车机发送解锁请求;
一般情况下,车机的MCU是出于锁定状态的,在对车机MCU中的软件进行更新之前,需要对车机的MCU进行解锁。车载软件更新系统可以基于协议转换器向车机发送解锁请求。
700、接收车机返回的秘钥协商参数;
车机MCU在接收到解锁请求之后,会根据预设的指令向车载软件更新系统返回秘钥协商参数,密钥协商参数是与车机预置的密钥算法是一一对应的,不同的车机可能采用不同的密钥算法,具体此处不做限定。本发明实施例中的车载软件更新系统可以接收车机返回的秘钥协商参数。
800、根据秘钥协商参数及车机对应的密钥算法计算车机对应的解密密钥,并将解密密钥发送给车机进行验证;
本发明实施例中的车载软件更新系统可以根据秘钥协商参数及车机对应的密钥算法计算车机对应的解密密钥,并将解密密钥发送给车机进行验证,若验证通过,则进行数据传输。
100、获取待更新的源文件;
200、获取源文件指定的刷写地址;
300、依次读取源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于刷写地址时,将当前数据进行数据格式转换生成MCU格式的目标数据,并根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件;
400、采用通用异步收发传输UART接口将目标文件发送至协议转换器进行数据格式转换,协议转换器用于将UART协议数据转换为CAN总线协议数据;
本实施中的步骤100至400中所描述的内容与上述图1所示的实施例中的步骤100至400中所描述的内容类似,具体请参阅图1所示的实施例,此处不做赘述。
500、控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件。
车机通过CAN总线可以接收到经过PC端进行格式转换之后的目标文件,由于目标文件为MCU格式兼容文件,车机上的MCU接收后直接烧录到代码区,完成软件的更新。
可选的,作为一种可能的实施方式,本发明实施例中,当对车机MCU中的UDS诊断软件进行更新时,为了提高数据传输效率,优选的,车载软件更新系统可以根据UDS帧传输规则,控制协议转换器将目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。具体的UDS帧传输规则为现有技术,此处不做赘述。
可以理解的是,在本发明的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上述实施例对本发明实施例中的车载软件更新方法进行了描述,请参阅图6,本发明实施例中的一种车载软件更新系统的一个实施例可包括:
第一获取模块601,用于获取待更新的源文件,源文件为HEX格式文件;
第二获取模块602,用于获取源文件指定的刷写地址;
解析模块603,用于依次读取源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于刷写地址时,将当前数据进行数据格式转换生成MCU格式的目标数据,并根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件,目标文件为MCU格式文件;
第一发送模块604,用于采用通用异步收发传输器UART将目标文件发送至协议转换器进行数据格式转换;
协议转换器605,用于将UART协议数据转换为CAN总线协议数据;
控制模块606,用于控制协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据目标文件更新对应的车载软件。
可选的,请参阅图7,作为一种可能的实施方式,本发明实施例中的解析模块603还可以进一步包括:
第一读取单元6031,用于读取当前数据中的数据类型标识;
第二读取单元6032,若当前数据中的数据类型标识为04,用于读取当前数据的高位地址,并读取下一行数据;
第一计算单元6033,若当前数据中的数据类型标识为00,则计算当前数据的行地址;
第二计算单元6034,若当前数据的行地址对应的行地址不小于刷写地址时,则计算当前数据的行地址与上一行数据的行地址之间的差值;
数据填充单元6035,若当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,用于在当前数据与当前数据上一行数据之间的空白数据位中填充零;
写入单元6036,若当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,用于根据当前数据对应的行地址将目标数据写入到缓存区域的对应位置形成目标文件。
可选的,请参阅图8,作为一种可能的实施方式,本发明实施例中的车载软件更新系统还可以进一步包括:
第二发送模块607,用于向车机发送解锁请求;
接收模块608,用于接收车机返回的秘钥协商参数;
计算模块609,用于根据秘钥协商参数及车机对应的密钥算法计算车机对应的解密密钥,并将解密密钥发送给车机进行验证,若验证通过,则进行数据传输。
可选的,作为一种可能的实施方式,本发明实施例中的车载软件更新系统中的控制模块606还可以包括:
控制单元6061,用于根据UDS帧传输规则,控制协议转换器将目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种车载软件更新方法,其特征在于,运用于包括:
获取待更新的源文件,所述源文件为HEX格式文件;
获取所述源文件指定的刷写地址;
依次读取所述源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于所述刷写地址时,将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,所述目标文件为MCU格式文件;
采用通用异步收发传输UART接口将所述目标文件发送至协议转换器进行数据格式转换,所述协议转换器用于将UART协议数据转换为CAN总线协议数据;
控制所述协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据所述目标文件更新对应的车载软件;
在所述将经过数据格式转换之后的数据发送给车机之前,所述方法还包括:
向所述车机发送解锁请求;
接收所述车机返回的秘钥协商参数;
根据所述秘钥协商参数及所述车机对应的密钥算法计算所述车机对应的解密密钥,并将所述解密密钥发送给所述车机进行验证,若验证通过,则进行数据传输。
2.根据权利要求1所述的方法,其特征在于,所述将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,包括:
读取当前数据中的数据类型标识;
若所述当前数据中的数据类型标识为十六进位制数据0x04,则读取所述当前数据的高位地址,并读取下一行数据;
若所述当前数据中的数据类型标识为0x00,则计算所述当前数据的行地址;
若所述当前数据的行地址对应的行地址不小于所述刷写地址时,则计算所述当前数据的行地址与上一行数据的行地址之间的差值;
若所述当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,则在所述当前数据与所述当前数据上一行数据之间的空白数据位中填充0x00;
若所述当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,则根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件。
3.根据权利要求1所述的方法,其特征在于,还包括:
根据UDS帧传输规则,控制所述协议转换器将所述目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。
4.一种车载软件更新系统,其特征在于,包括:
第一获取模块,用于获取待更新的源文件,所述源文件为HEX格式文件;
第二获取模块,用于获取所述源文件指定的刷写地址;
解析模块,用于依次读取所述源文件中的每一行数据,在读取过程中,当读取的当前数据对应的行地址不小于所述刷写地址时,将所述当前数据进行数据格式转换生成MCU格式的目标数据,并根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件,所述目标文件为MCU格式文件;
第一发送模块,用于采用通用异步收发传输器UART将所述目标文件发送至协议转换器进行数据格式转换;
协议转换器,用于将UART协议数据转换为CAN总线协议数据;
控制模块,用于控制所述协议转换器,将经过数据格式转换之后的数据发送给车机,以使得车机根据所述目标文件更新对应的车载软件;
所述车载软件更新系统还包括:
第二发送模块,用于在将经过数据格式转换之后的数据发送给车机之前,向所述车机发送解锁请求;
接收模块,用于接收所述车机返回的秘钥协商参数;
计算模块,用于根据所述秘钥协商参数及所述车机对应的密钥算法计算所述车机对应的解密密钥,并将所述解密密钥发送给所述车机进行验证,若验证通过,则进行数据传输。
5.根据权利要求4所述的系统,其特征在于,所述解析模块包括:
第一读取单元,用于读取所述当前数据中的数据类型标识;
第二读取单元,若所述当前数据中的数据类型标识为04,用于读取所述当前数据的高位地址,并读取下一行数据;
第一计算单元,若所述当前数据中的数据类型标识为00,则计算所述当前数据的行地址;
第二计算单元,若所述当前数据的行地址对应的行地址不小于所述刷写地址时,则计算所述当前数据的行地址与上一行数据的行地址之间的差值;
数据填充单元,若所述当前数据的行地址与上一行数据的行地址之间的差值不等于上一行数据长度,用于在所述当前数据与所述当前数据上一行数据之间的空白数据位中填充零;
写入单元,若所述当前数据的行地址与上一行数据的行地址之间的差值等于上一行数据长度,用于根据所述当前数据对应的行地址将所述目标数据写入到缓存区域的对应位置形成目标文件。
6.根据权利要求4所述的系统,其特征在于,所述控制模块包括:
控制单元,用于根据UDS帧传输规则,控制所述协议转换器将所述目标文件中的数据分为单帧传输或多帧传输,当数据超过7个字节时采用多帧传输,否则采用单帧传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746224.5A CN108491224B (zh) | 2018-07-09 | 2018-07-09 | 一种车载软件更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746224.5A CN108491224B (zh) | 2018-07-09 | 2018-07-09 | 一种车载软件更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108491224A CN108491224A (zh) | 2018-09-04 |
CN108491224B true CN108491224B (zh) | 2022-02-11 |
Family
ID=63343483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810746224.5A Active CN108491224B (zh) | 2018-07-09 | 2018-07-09 | 一种车载软件更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491224B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109714203B (zh) * | 2018-12-26 | 2021-08-13 | 中南大学 | 一种通过车载网络实现感知设备代码更新的传播方法 |
CN111367543A (zh) * | 2018-12-26 | 2020-07-03 | 上海博泰悦臻电子设备制造有限公司 | 一种软件更新方法及系统 |
CN109828764B (zh) * | 2018-12-29 | 2022-06-24 | 惠州市蓝微电子有限公司 | 烧录文件的生成、烧录方法及其设备 |
CN109739808B (zh) * | 2019-01-25 | 2023-04-25 | 深圳市元征科技股份有限公司 | 一种汽车数据流录制文件格式转换方法、系统及相关设备 |
CN111901212B (zh) * | 2019-05-06 | 2022-05-17 | 上汽通用汽车有限公司 | 基于车载总线的多种不同通讯协议刷新电控模块的方法 |
CN111984281B (zh) * | 2019-05-24 | 2024-04-12 | 北京车和家信息技术有限公司 | 软件更新方法、车辆、终端及计算机可读存储介质 |
CN110597770A (zh) * | 2019-09-02 | 2019-12-20 | 陕西法士特齿轮有限责任公司 | 一种Hex文件填充方法、应用和计算机及存储介质 |
CN110727542B (zh) * | 2019-09-18 | 2023-02-28 | 陕西法士特齿轮有限责任公司 | 一种Hex文件处理方法及应用 |
CN111722858A (zh) * | 2020-05-27 | 2020-09-29 | 科华恒盛股份有限公司 | 在线升级方法及终端设备 |
CN112416409B (zh) * | 2020-12-07 | 2022-03-08 | 安徽江淮汽车集团股份有限公司 | 车载电脑软件升级方法、装置、设备及存储介质 |
CN114594752B (zh) * | 2022-03-04 | 2024-05-14 | 潍柴雷沃智慧农业科技股份有限公司 | 一种拖拉机控制单元软件刷写方法及存储介质 |
CN116340020A (zh) * | 2023-02-22 | 2023-06-27 | 重庆蓝鲸智联科技有限公司 | 一种处理智能座舱mcu数据请求的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324861A (zh) * | 2007-06-13 | 2008-12-17 | 华东师范大学 | Rom结构及写入intel hex文件的方法 |
CN103135996A (zh) * | 2011-11-23 | 2013-06-05 | 上海博泰悦臻网络技术服务有限公司 | 车载设备及其程序文件更新方法 |
CN103810131A (zh) * | 2014-02-24 | 2014-05-21 | 重庆邮电大学 | 一种车载系统用蓝牙与can的数据转换装置及方法 |
CN106534337A (zh) * | 2016-12-05 | 2017-03-22 | 常州市新科汽车电子有限公司 | 一种车载信息系统的调试系统及其调试方法 |
CN106990983A (zh) * | 2017-03-21 | 2017-07-28 | 北京新能源汽车股份有限公司 | 单片机烧写方法、装置、系统及单片机 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314363A (zh) * | 2011-07-27 | 2012-01-11 | 深圳市航盛电子股份有限公司 | 一种汽车控制器的引导启动方法以及汽车控制器 |
CN103412561B (zh) * | 2013-08-08 | 2016-12-28 | 奇瑞汽车股份有限公司 | 一种汽车控制器的刷新方法 |
-
2018
- 2018-07-09 CN CN201810746224.5A patent/CN108491224B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324861A (zh) * | 2007-06-13 | 2008-12-17 | 华东师范大学 | Rom结构及写入intel hex文件的方法 |
CN103135996A (zh) * | 2011-11-23 | 2013-06-05 | 上海博泰悦臻网络技术服务有限公司 | 车载设备及其程序文件更新方法 |
CN103810131A (zh) * | 2014-02-24 | 2014-05-21 | 重庆邮电大学 | 一种车载系统用蓝牙与can的数据转换装置及方法 |
CN106534337A (zh) * | 2016-12-05 | 2017-03-22 | 常州市新科汽车电子有限公司 | 一种车载信息系统的调试系统及其调试方法 |
CN106990983A (zh) * | 2017-03-21 | 2017-07-28 | 北京新能源汽车股份有限公司 | 单片机烧写方法、装置、系统及单片机 |
Non-Patent Citations (1)
Title |
---|
"基于CAN总线UDS服务BootLoader应用开发";汪春华 等;《电子测量技术》;20170228;第40卷(第2期);第166-170页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108491224A (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108491224B (zh) | 一种车载软件更新方法及系统 | |
CN108227675B (zh) | 车辆诊断方法、装置、终端和计算机可读存储介质 | |
CN105589719B (zh) | 一种远程升级整车车载控制器软件的系统及升级方法 | |
CN105302108B (zh) | 一种汽车控制器功能配置方法 | |
CN110460573A (zh) | 一种应用于汽车ecu安全升级管理系统及方法 | |
CN110474961A (zh) | 纯电乘用车基于can总线实现多路远程ota升级方法 | |
US8290660B2 (en) | Data access to electronic control units | |
CN102043680B (zh) | 一种ecu嵌入式软件刷新和下载编程的方法及系统 | |
US20120110296A1 (en) | Electronic apparatus | |
US20040148073A1 (en) | Method for programming flash EEPROMS in microprocessor-equipped vehicle control electronics | |
US20080270427A1 (en) | Method and Apparatus for Configuring a Control Device, and Corresponding Control Device | |
CN104494540A (zh) | 一种汽车总里程的记录方法 | |
CN111813076A (zh) | 车辆ecu刷写方法、设备、车辆ecu及存储介质 | |
CN110371022B (zh) | 一种电池匹配方法、装置及车载设备 | |
CN106990983B (zh) | 单片机烧写方法、装置、系统及单片机 | |
CN112000083A (zh) | Ecu数据刷写方法、刷写装置、刷写设备及存储介质 | |
CN112540778A (zh) | 车辆数据的刷写方法、诊断设备及刷写系统 | |
CN113608518B (zh) | 数据生成方法、装置、终端设备及介质 | |
CN111722864A (zh) | 一种ecu数据刷写方法及相关装置 | |
CN105824653A (zh) | 一种汽车can总线数据刷写方法及装置 | |
CN202110528U (zh) | 一种ecu嵌入式软件刷新和下载编程的系统 | |
CN106161509A (zh) | 一种车载多媒体系统通讯录同步方法 | |
CN105681038B (zh) | 一种基于移动终端的调试许可控制方法及系统 | |
CN111831479A (zh) | 一种车载电脑数据恢复方法及系统 | |
CN113632510B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A method and system for updating on-board software Effective date of registration: 20221129 Granted publication date: 20220211 Pledgee: Shenzhen hi tech investment small loan Co.,Ltd. Pledgor: SHENZHEN ROADROVER TECHNOLOGY Co.,Ltd. Registration number: Y2022980024001 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |