CN117453238A - 数据刷写方法及装置 - Google Patents

数据刷写方法及装置 Download PDF

Info

Publication number
CN117453238A
CN117453238A CN202311433146.0A CN202311433146A CN117453238A CN 117453238 A CN117453238 A CN 117453238A CN 202311433146 A CN202311433146 A CN 202311433146A CN 117453238 A CN117453238 A CN 117453238A
Authority
CN
China
Prior art keywords
data
format
refreshing
file
ecu
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
Application number
CN202311433146.0A
Other languages
English (en)
Inventor
高坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingwei Hirain Tech Co Ltd
Original Assignee
Beijing Jingwei Hirain Tech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingwei Hirain Tech Co Ltd filed Critical Beijing Jingwei Hirain Tech Co Ltd
Priority to CN202311433146.0A priority Critical patent/CN117453238A/zh
Publication of CN117453238A publication Critical patent/CN117453238A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据刷写方法及装置,通过获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据;将刷写数据转换为第一预设格式,得到第一数据;将配置数据转换为第二预设格式,得到第二数据;通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件;基于目标刷写文件,通过预设软件对ECU进行刷写工作。本申请实施例能够提高数据刷写的效率。

Description

数据刷写方法及装置
技术领域
本申请涉及车辆技术领域,特别是涉及一种数据刷写方法及装置。
背景技术
对车辆的电子控制单元(Electronic Control Unit,ECU)进行刷写操作是为了更新或修改车辆的程序或固件,以提高ECU的性能、安全性和功能性。在现有技术中,常用基于CANoe软件对车辆进行ECU刷写操作,而刷写操作需要解析刷写文件中地址、目录、内存大小等信息,以及将文件数据拆分成刷写数据流。CANoe软件在每次刷写前均需要做解析文件的工作,该解析工作全部依赖于CANoe软件内部的解析算法,如果刷写文件内存较大,或者刷写文件格式有错误,则会导致刷写的工作效率较低。
发明内容
本申请提供的一种数据刷写方法及装置,能够提高数据刷写的效率。
第一方面,本申请实施例提供一种数据刷写方法,方法包括:
获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据;
将刷写数据转换为第一预设格式,得到第一数据;
将配置数据转换为第二预设格式,得到第二数据;
通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件,目标刷写文件包括第一数据的解析结果和第二数据的配置信息;
基于目标刷写文件,通过预设软件对ECU进行刷写工作。
第二方面,本申请提供一种数据刷写装置,该装置包括:
获取模块,用于获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据;
第一转换模块,用于将刷写数据转换为第一预设格式,得到第一数据;
第二转换模块,用于将配置数据转换为第二预设格式,得到第二数据;
解析模块,用于通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件,目标刷写文件包括第一数据的解析结果和第二数据的配置信息;
刷写模块,用于基于目标刷写文件,通过预设软件对ECU进行刷写工作。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现如第一方面中任意一个实施例中的数据刷写方法。
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面中任意一个实施例中的数据刷写方法。
第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备执行实现如上述第一方面中任意一个实施例中的数据刷写方法。
在本申请实施例提供的一种数据刷写方法及装置中,通过获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据;将刷写数据转换为第一预设格式,得到第一数据;将配置数据转换为第二预设格式,得到第二数据;通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件;基于目标刷写文件,通过预设软件对ECU进行刷写工作。通过上述方式,提前将刷写数据和配置数据分别转换为不同的预设格式,减少了每次刷写前预设软件的解析工作。这样,可以显著减少数据刷写操作的准备时间,提高了整个数据刷写过程的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的数据刷写方法的流程示意图;
图2是本申请实施例提供的一种数据刷写装置的结构示意图;
图3是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
针对目前行业上常见的车辆ECU刷写流程通常采用以下流程进行刷写:获取不同格式的刷写文件,如十六进制格式(Hexadecimal Format,Hex)、摩托罗拉S记录格式(Motorola S-record Format,S19)、二进制格式(Binary Format,BIN)格式,并按照规则对文件解析,目前行业上常见的解析方法为在每次刷写工作之前对刷写文件进行解析。将解析出的文件地址、目录、内存大小等信息进行整合后,开始进行刷写的相关指令。将文件数据拆分成刷写数据流,并按照相关协议(如统一诊断服务)的规定发送给ECU。目前行业上车辆ECU刷写的刷写流程一般分为两种,分别为Ⅰ类刷写流程和Ⅱ类刷写流程,Ⅰ类刷写流程一般应用于采用嵌入式系统的ECU,在该类流程中的ECU需要检查下载到存储器中数据的完整性,当一个逻辑块下载后,将使用校验算法验证当前逻辑块的所有数据流是否被正确传输和写入。而Ⅱ类刷写流程一般应用于具有软件操作系统(Operating System,OS)的ECU,刷写文件以文件方式传输到目标单元的指定目录下,多应用于功能较复杂的ECU,如车载终端盒(Telematics Box,TBOX)、硬件单元测试(Hardware Unit Testing,HUT),使用验证算法来验证当前刷写文件的完整和可靠性。最后完成整个刷写流程,使得ECU可以正常使用软件。
在现有技术中,行业上常用基于CANoe软件的车辆ECU刷写流程,解析刷写文件中地址、目录、内存大小等信息,以及将文件数据拆分成刷写数据流。每次刷写前需要做解析文件工作,全部依赖于CANoe软件内部的解析算法,如果刷写文件内存较大,或者刷写文件格式有错误,则可能影响到刷写工作效率,甚至可能会导致软件崩溃。而现有的校验算法,均需要根据刷写流程中的数据流进行计算,然后发送给ECU进行校验,从而确认刷写是否安全、文件是否完整、刷写的文件是否有对应权限,这样校验计算的时间会随着刷写文件内存增加而变长,以常见的MD5算法为例,输入数据每512比特为一个单位,每个单位要进行64次迭代运算,针对百兆内存的刷写文件,刷写时间会被严重拉长,这样加大对刷写上位机的负荷,同时也加大刷写开发人员和执行人员的操作难度。
为了解决现有技术问题,本申请实施例提供了一种数据刷写方法及装置。下面首先对本申请实施例所提供的数据刷写方法进行介绍。
图1示出了本申请一个实施例提供的数据刷写方法的流程示意图。如图1所示,该方法具体可以包括如下步骤:
S100,获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据。
可选地,在本申请实施例中,刷写数据是指在刷写过程中需要写入车辆的电子控制单元(ECU)的数据流。刷写数据可以包括更新或修改ECU的程序、固件或配置信息。刷写数据的内容取决于刷写操作的目的,它可以包括新的软件版本、驱动程序、参数设置等。刷写数据是影响ECU行为的关键部分。
可选地,在本申请实施例中,配置数据是指与刷写数据以外的信息,用于描述或配置刷写数据的元数据。配置数据可以括刷写数据的目标地址、大小、版本号、校验和校验算法、刷写权限、刷写策略等。配置数据的目的是确保刷写数据被正确应用并符合特定要求,提供了关于刷写数据的元信息,以帮助刷写工具执行刷写操作。
可选地,在本申请一种可能的实现方式中,首先,需要从车辆或系统中采集刷写所需的数据。这通常包括刷写数据和配置数据。刷写数据可以是车辆制造商提供的最新固件版本,也可以是由开发人员创建的定制固件。配置数据可以包括刷写数据的目标地址、大小、版本信息、校验值等。配置数据可以由车辆制造商或开发人员提供,并以特定格式或标准进行描述。随后将刷写数据和配置数据整合到一个初始刷写文件中。初始刷写文件可以是一个包含刷写数据和配置数据的文件,也可以是一个描述它们如何关联的元数据文件。随后确保初始刷写文件采用正确的文件格式,以便后续处理。常见的刷写文件格式包括Hex、S19、BIN等。随后将初始刷写文件存储在适当的位置,并确保它可以轻松地分发给需要执行刷写操作的系统或车辆。为了安全性和可追踪性,可以定期备份初始刷写文件,并进行版本管理,以跟踪不同版本的刷写数据和配置数据。
S200,将刷写数据转换为第一预设格式,得到第一数据。
可选地,在本申请一种可能的实现方式中,首先,确定要将刷写数据转换为的第一预设格式。这个格式可以是特定的二进制格式,如Hex、S19或BIN,也可以是自定义的格式,具体取决于系统需求和刷写工具的要求。随后准备刷写数据,确保刷写数据符合第一预设格式的要求。这可能包括确保数据的顺序、字节对齐和其他格式规则。随后使用特定的数据转换工具或脚本将刷写数据从其原始格式转换为第一预设格式。这个转换过程通常包括将数据按照特定格式重新排列和编码。转换完成后,即可得到第一数据,第一数据是刷写数据的第一预设格式的表示。第一数据是经过格式化和编码的刷写数据。在生成第一数据之后,可以执行校验和验证步骤,以确保数据的完整性和准确性。随后将第一数据保存到适当的文件或存储介质中,以备后续的刷写操作使用,并确保文件的命名和存储方式符合刷写工具的要求。不同的格式可能需要不同的编码和排列方式。需要说明的是,确保在整个过程中保持数据的完整性和准确性是非常重要的。
S300,将配置数据转换为第二预设格式,得到第二数据。
可选地,在本申请一种可能的实现方式中,首先,确定要将配置数据转换为的第二预设格式。这个格式可以是特定的文本格式,如可扩展标记语言(eXtensible MarkupLanguage,XML)、JavaScript对象表示法(JavaScript Object Notation,JSON)、初始化文件(Initialization File,INI)等,也可以是自定义的格式,具体取决于系统需求和刷写工具的要求。随后准备配置数据,确保它包含了描述刷写数据所需的所有信息,并符合第二预设格式的要求。这可能包括字段、属性、键值对等。随后使用特定的数据转换工具、脚本或编程语言将配置数据从其原始格式(例如文本或数据库)转换为第二预设格式。这个转换过程通常包括将数据按照特定格式重新排列和编码,以使其适合刷写工具的要求。转换完成后,得到第二数据,第二数据是配置数据的第二预设格式的表示。第二数据是经过格式化和编码的配置信息。随后将第二数据保存到适当的文件或存储介质中,以备后续的刷写操作使用,并确保文件的命名和存储方式符合刷写工具的要求。在生成第二数据之后,执行校验和验证步骤,以确保数据的完整性和准确性。这有助于防止配置数据错误地影响刷写操作。不同的格式可能需要不同的编码和排列方式。需要说明的是,确保在整个过程中保持数据的完整性和准确性非常重要,从而能够保证刷写操作能够按预期执行。
S400,通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件,目标刷写文件包括第一数据的解析结果和第二数据的配置信息。
可选地,在本申请一种可能的实现方式中,首先使用预设软件,如CANoe,加载第一数据(刷写数据的第一预设格式)和第二数据(配置数据的第二预设格式)。确保软件能够正确读取这两种数据。随后针对第一数据,实施解析逻辑以将其还原为可用的刷写数据流。针对第二数据,实施解析逻辑以提取与刷写数据相关的配置信息和元数据。这可能包括目标地址、大小、版本信息、校验和校验算法、刷写权限、刷写策略等。随后基于第一数据的解析结果和第二数据的配置信息,生成目标刷写文件。这个文件应该包括完整的刷写数据和相关的配置信息,以便执行刷写操作。随后将生成的目标刷写文件保存到适当的文件或存储介质中,以备后续的刷写操作使用。确保文件的命名和存储方式符合刷写工具的要求。
可选地,在本申请另一种可能的实现方式中,在生成目标刷写文件之后,还可以执行校验和验证步骤,以确保文件的完整性和准确性。这有助于防止错误或损坏的文件影响刷写操作。
S500,基于目标刷写文件,通过预设软件对ECU进行刷写工作。
可选地,在本申请一种可能的实现方式中,以预设软件为CANoe软件为例进行说明,在执行刷写操作之前,确保CANoe软件已经启动,并且系统配置和通信设置已正确配置,以便与目标ECU进行通信。随后使用CANoe软件的功能,加载之前在S400步骤中生成的目标刷写文件。这个文件包含了刷写数据和相关的配置信息。
随后在CANoe中,建立与目标ECU的通信连接。这可以涉及选择正确的通信协议和通信接口,以确保CANoe可以与ECU进行数据交换。随后在进行刷写操作之前,进行必要的刷写准备工作。这可能包括设置刷写参数、验证ECU的可刷写状态、备份原始数据等。随后使用CANoe的刷写工具或模块,执行刷写操作。CANoe提供了特定的刷写工具,可以按照配置文件(即第二数据)中的信息,将刷写数据写入目标ECU的内存中。
在刷写过程中,CANoe还提供了实时监控和反馈功能,以便操作人员可以监视刷写操作的进展和结果。这有助于识别潜在的问题或错误。刷写完成后,CANoe还可以执行校验和验证步骤,以确保刷写数据已正确写入ECU,并且刷写操作符合安全性和完整性要求。CANoe还会记录刷写操作的详细信息和结果,以便生成报告和记录操作历史。这有助于追踪和管理刷写操作。一旦刷写操作成功完成,断开与目标ECU的通信连接,保存相关日志和报告,然后关闭CANoe软件。需要说明的是,确保在刷写操作中保持数据的完整性和安全性是非常重要的。
在本申请实施例提供的一种数据刷写方法中,通过获取初始刷写文件,初始刷写文件包括刷写数据和配置数据,刷写数据用于对车辆的电子控制单元ECU进行刷写,配置数据用于描述刷写数据;将刷写数据转换为第一预设格式,得到第一数据;将配置数据转换为第二预设格式,得到第二数据;通过预设软件,分别对第一数据和第二数据进行解析,提取得到目标刷写文件;基于目标刷写文件,通过预设软件对ECU进行刷写工作。通过上述方式,提前将刷写数据和配置数据分别转换为不同的预设格式,减少了每次刷写前预设软件的解析工作。这样,可以显著减少数据刷写操作的准备时间,提高了整个数据刷写过程的效率。对于较大内存的刷写文件,技术方案更具优势。提前转换和解析文件意味着可以更好地处理大型刷写文件,而不会影响刷写工作的效率和速度。
在一实施例中,在上述步骤100之后,上述步骤200之前,该方法还可以具体执行如下步骤:
S101,获取所述初始刷写文件的格式标识。
可选地,在本申请实施例中,格式标识是一个唯一的标记或信息,用于识别文件的类型或格式。这个标识通常位于文件的开头或结尾,并可以通过不同的方法来获取,具体取决于所使用的文件格式。
可选地,在本申请一种可行的实施方式中,首先,需要确定文件格式标识通常位于文件的哪个位置。在许多文件格式中,这个标识以特定的方式嵌入在文件的头部,有时也在文件的结尾。随后根据已知的标识位置,使用文件读取或字节解析的方法,提取格式标识。这可以通过读取文件的前几个字节或特定位置的字节来完成。一旦提取了格式标识,需要解析它以获取实际的标识内容。这可能涉及到将二进制数据转换为可读的字符串,或者将特定的编码应用于标识数据。考虑到文件格式可能不一致或损坏的情况,可以实施适当的错误处理机制,以确保能够处理各种不同的初始刷写文件。
S102,基于预获取的第一对应关系,对所述格式标识进行匹配,确定所述初始刷写文件的文件格式,所述第一对应关系包括多个预设格式标识和多个预设文件格式之间的一一映射关系。
可选地,在本申请一种可行的实施方式中,首先将从S101中提取的格式标识与预获取的第一对应关系中的多个格式标识进行逐一比对。这可以使用条件语句或循环来完成。对于每个格式标识,使用适当的匹配算法来进行比较。这可以是简单的字符串比较,也可以是更复杂的模式匹配或哈希函数。当找到匹配的格式标识时,确定初始刷写文件的文件格式。如果初始刷写文件的格式标识具有多种可能的对应关系,确保能够处理多个匹配的情况,并采取适当的措施来处理或通知用户。最终,确定初始刷写文件的文件格式,并将其作为输出返回,以供后续步骤使用。
可选地,在本申请一种具体的实施方式中,可以通过识别目标文件的后缀以及文件中的首个字符判断初始刷写文件具体的文件格式,例如:英特尔(Intel)格式文件的首个字符是“:”,摩托罗拉(Motorola)格式文件的首个字符是“S”。
在这些可选地实施例中,通过提取格式标识,实现了对初始刷写文件格式的自动识别,减少了人工干预的需要。这提高了系统的效率和可靠性。通过将格式标识与预定义的一组文件格式进行匹配,自动确定了初始刷写文件的实际文件格式,而无需用户手动选择。这简化了操作流程。并提高了系统的自动化程度、降低了错误率、提高了操作的可靠性和适应性,同时也节省了时间和成本,从而有助于改进刷写操作的效率和质量。
在一实施例中,上述步骤200具体可以执行如下步骤:
S210,基于所述文件格式,获取所述初始刷写文件中的每一行数据对应的数据类型标识符。
可选地,在本申请实施例中,数据类型标识符通常用于指示每行数据包含何种类型的信息,以便后续的处理。
可选地,在本申请一种可行的实施方式中,首先使用文件读取操作,逐行读取初始刷写文件的内容。这可以通过循环结构来完成,以处理文件中的每一行数据。对于每一行数据,需要定位数据类型标识符的位置。这通常是文件中的特定字段或前缀,用于标识数据类型。一旦定位到数据类型标识符的位置,需要提取标识符的值。这可以通过字符串截取或正则表达式匹配来完成。随后将提取的数据类型标识符与已知的数据类型进行映射,以确定每一行数据的含义。这可以使用条件语句或映射表来实现。随后将提取的数据类型标识符记录下来,以便后续的处理步骤能够根据数据类型进行不同的操作。考虑到可能存在无效的标识符或文件格式不一致的情况,可以实施适当的错误处理机制,以确保能够处理各种情况。
S220,对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为第一类型的情况下,提取所述第一类型对应的数据中存储的所述刷写数据。
可选地,在本申请一种可能的实现方式中,首先根据S210中记录的数据类型标识符,筛选出具有所需数据类型的行。这可以通过条件语句或过滤操作来完成。对于符合条件的行,需要提取包含刷写数据的部分。这可能涉及到从行中提取特定字段或数据块。并将提取的刷写数据记录下来,以便后续的步骤可以使用它来构建刷写数据流。
S230,将所述刷写数据转换为二进制格式,得到所述第一数据。
可选地,在本申请一种可能的实现方式中,首先,检查刷写数据的数据类型,以确定是否需要进行二进制格式转换。某些数据类型可能已经是二进制格式。对于需要转换的数据,将其从其当前表示形式(例如十六进制或其他格式)转换为二进制格式。这可以涉及到编码和解码操作。随后将转换后的二进制数据记录下来,以便后续的步骤可以使用它来构建刷写数据流。
在这些可选地实施例中,通过自动提取数据类型标识符,减少了人工干预的需要,从而提高了系统的自动化水平。自动从文件中提取刷写数据,减少了手动操作的需要,提高了效率。确保提取的数据具有正确的数据类型,减少了数据错误的风险。准备好二进制格式的数据,可以更快速地进行刷写操作,从而提高了刷写工作的效率,降低了数据处理复杂性、提高了操作效率,并确保了刷写数据的一致性,这有助于改进刷写操作的效率和质量。
在一实施例中,所述配置数据包括所述刷写数据的实际数据地址,所述刷写数据的实际数据长度,所述刷写数据的校验值;上述步骤300具体可以执行如下步骤:
S310,对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第一类型的情况下,提取所述第一类型对应的数据中存储的第一数据地址和数据长度。
可选地,在本申请实施例中,首先根据S210中记录的数据类型标识符,筛选出符合第一类型的行。对于符合条件的行,需要提取包含第一数据地址和数据长度的部分。这可以通过从行中提取特定字段或数据块来完成。随后将提取的第一数据地址和数据长度记录下来,以备后续使用。
S320,在所述数据类型标识符为第二类型的情况下,提取所述第一类型对应的数据中存储的第二数据地址。
可选地,在本申请一种可能的实现方式中,首先根据S210中记录的数据类型标识符,筛选出符合第二类型的行。对于符合条件的行,需要提取包含第二数据地址的部分。这可以通过从行中提取特定字段或数据块来完成。第二数据地址可以是数据的扩展地址。随后将提取的第二数据地址记录下来,以备后续使用。
S330,将所述第一数据地址和所述第二数据地址按照预定义的组合规则进行组合,得到所述实际数据地址。
可选地,在本申请一种可行的实施方式中,将第一数据地址和第二数据地址按照预定义的规则进行组合,以得到实际数据地址。组合的方式可能根据具体需求而变化。例如将第一数据地址放置在第二数据地址之前,或者第二数据地址放置在第一数据地址之前。
S340,将每行数据的数据长度进行累加,得到所述实际数据长度。
可选地,在本申请一种可行的实施方式中,对于符合第一类型的行,将其数据长度进行累加得到刷写数据的总长度。
S350,利用预设校验算法计算所述刷写数据的校验值,所述校验值用于指示所述刷写数据的完整程度。
可选地,在本申请实施例中,可以通过循环冗余校验32位算法(CyclicRedundancy Check 32,CRC32)或者消息摘要算法5(Message Digest Algorithm5,MD5)计算刷写数据的校验值。
具体而言,如果使用CRC32算法计算校验值。首先,将需要计算校验值的刷写数据准备好,包括实际数据地址和实际数据长度。随后创建一个CRC32变量,用于存储校验值。初始化这个变量为一个预定义的值,通常为0xFFFFFFFF。随后将刷写数据的每个字节或比特按照预定义的多项式进行计算。CRC32算法将数据与多项式异或,并进行一系列位移和异或操作,直到所有数据都被处理完毕。经过所有数据处理后,对CRC32变量进行最终化操作,例如取反操作。最终的CRC32变量值即为刷写数据的校验值。
如何使用MD5算法计算校验值,首先准备好需要计算校验值的刷写数据,包括实际数据地址和实际数据长度。随后创建一个MD5变量,用于存储校验值。初始化这个变量为一个预定义的值,通常为一组特定的16字节值。MD5算法将刷写数据分成一系列小块,每个块进行一系列的位运算、逻辑函数和循环操作。这些操作在每个数据块上进行,直到所有数据块都被处理完毕。经过所有数据块的处理后,MD5变量中存储了刷写数据的校验值。无论使用CRC32还是MD5,生成的校验值都用于验证刷写数据的完整性。如果刷写数据在传输或存储过程中发生了变化,校验值将发生变化,这可以用来检测数据是否被篡改或损坏。这有助于确保刷写操作的安全性和可靠性
S360,将所述实际数据地址、所述实际数据长度和所述校验值转换为可扩展标记语言XML格式,得到所述第二数据。
可选地,在本申请一种可能的实现方式中,可以首先使用合适的XML库或工具,在XML中创建必要的节点来表示实际数据地址、实际数据长度和校验值。随后将之前记录的实际数据地址、实际数据长度和校验值填充到相应的XML节点中。随后将填充后的XML节点生成为XML格式的文本数据。将生成的XML格式数据记录下来,以备后续的处理和存储。
在这些可选地实施例中,通过自动提取第一数据地址和数据长度,减少了人工操作的需要,提高了系统的自动化水平。将实际数据地址、实际数据长度和校验值转换为XML格式,确保了数据的标准化和易于处理。提高了数据的可读性和可追溯性,从而有助于改进刷写操作的效率和数据的可靠性。
在一实施例中,所述数据类型标识符还包括第三类型;上述步骤200具体可以执行如下步骤:
S240,对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第三类型的情况下,停止提取。
可选地,在本申请一种可能的实现方式中,对于每一行,检查数据类型标识符是否与第三类型匹配。这可以通过比较数据类型标识符与第三类型的值来实现。如果匹配,执行下一步;如果不匹配,继续遍历下一行数据。一旦检测到数据类型标识符与第三类型匹配,立即停止提取操作。这可以通过跳出提取数据的循环或设置一个标志来实现,以通知系统停止提取。一旦停止提取操作,可以执行任何必要的清理或结束步骤,然后继续进行后续的数据处理或刷写操作。
可选地,在本申请一种具体实施方式中,首先根据刷写文件的格式,基于程序语言开发拆分数据流(即刷写数据)和其他非数据流信息(即配置数据)的代码,并按照校验算法计算数据流的校验值,其中,常见的刷写文件格式:Intel格式(*.Hex)和Motorola格式(*.S19),第一步,首先识别目标文件的后缀以及文件中的首个字符,例如:Intel格式文件的首个字符是“:”,Motorola格式文件的首个字符是“S”,第二步根据识别出的文件格式,提取每行数据的数据流和非数据流信息(地址、长度和数据类型),例如:对于Intel格式文件,如果数据类型标识符为“04”或“02”(即第二类型),则获取数据的扩展地址,如果数据类型标识符为“00”(即第一类型),则获取数据地址、数据长度和数据流,如果数据类型标识符为“01”(即第三类型),则停止记录数据。第三步将计算数据流的起始地址、数据流长度以及提取对应数据流,例如:对于Intel格式文件,实际数据流地址是累加数据扩展地址(数据类型为“04”或“02”)和数据地址(数据类型为“00”),数据流长度则累加每行数据(数据类型为“00”)长度,数据流则以二进制方式写入到目标文件中,并结合CRC32/MD5校验算法计算出数据流的校验值,该校验值为了验证数据流文件的完整性。
在一实施例中,上述步骤360具体可以执行如下步骤:
S361,定义所述XML格式的版本和所述XML格式的编码格式;
S362,创建多个根节点,所述第二数据包括所述多个根节点,所述多个根节点包括ECU根节点和刷写数据根节点,所述ECU根节点用于存储ECU信息,所述刷写数据根节点用于存储所述配置数据,所述ECU信息包括ECU名称、ECU版本号;
S363,在所述ECU根节点中创建多个第一子节点,不同所述第一子节点用于存储不同的所述ECU信息;
S364,在所述刷写数据根节点中创建多个第二子节点,不同所述第二子节点用于存储不同的所述配置数据;
S365,按照所述编码格式,对所述ECU信息进行编码,以将不同的所述ECU信息以所述XML格式存储至不同的所述第一子节点中;
S366,按照所述编码格式,对所述配置数据进行编码,以将不同的所述配置数据以所述XML格式存储至不同的所述第二子节点中。
可选地,在本申请一种可能的实现方式中,首先需要定义所述XML格式的版本和编码格式。这通常在XML文件的头部进行定义。例如,XML版本可以是1.0,编码格式可以是统一字符编码(Unicode Transformation Format-8-bit,UTF-8)。这些定义确保了XML文件的格式规范和可读性。随后创建多个根节点,这些根节点包括ECU根节点和刷写数据根节点。这可以通过XML文档的结构来实现。
随后在ECU根节点下,可以创建多个第一子节点,每个第一子节点用于存储不同的ECU信息,例如ECU名称和ECU版本号。还可以创建多个第二子节点,每个第二子节点用于存储不同的配置数据。这些第一子节点可以用于描述刷写数据的相关信息,例如数据地址、数据长度和校验值等。这些子节点可以通过XML文档的标签来表示。
随后按照所述编码格式对ECU信息进行编码,以将不同的ECU信息存储至不同的第一子节点中。编码的方式可以是将ECU信息以XML标签的形式添加到对应的第一子节点中。同样,在S366中,需要按照所述编码格式对配置数据进行编码,以将不同的配置数据存储至不同的第二子节点中。编码的方式同样可以是将配置数据以XML标签的形式添加到对应的第二子节点中。
可选地,在本申请一种具体实现方式中,依赖第三方工具将非数据流信息(即配置数据)进行序列化,以便实现目标文件(即目标刷写文件)可以跨平台存储和读取。例如:考虑到XML文件扩展性较强,格式较固定,而且任何编程语言都可以通过读写文本文件的方式对XML文件进行操作,所以将初始刷写文件的非数据流信息序列化为XML流。创建XML流方法是可以采用C++的TinyXML2库,第一步声明XML流的版本和编码格式,第二步创建两个根节点:ECU信息根节点和刷写文件信息根节点,第三步在ECU信息根节点中创建ECU名称、零件号、软件版本号等子节点,刷写文件信息根节点中创建文件路径、文件大小、校验值等子节点,第四步将上述的子节点添加内容和属性,最后保存成XML流。
在这些可选地实施例中,有助于提高刷写工作的效率和数据的可读性,减少了错误的可能性,使数据在不同系统之间的交互更加顺畅和可靠。
在一实施例中,上述步骤365具体可以执行如下步骤:
S3651,对于所述ECU信息中的每个字符串,按照所述编码格式,创建开始标签和结束标签,所述开始标签用于记录字符串的首个字符,所述结束标签用于记录字符串的最后一个字符。
在一实施例中,上述步骤366具体可以执行如下步骤:
S3661,对于所述配置数据中的每个字符串,按照所述编码格式,创建开始标签和结束标签。
可选地,在本申请一种可能的实现方式中,可以首先遍历ECU信息中的每个字符串。对于每个字符串,创建一个开始标签,开始标签通常以“<”开始,记录字符串的首个字符。同时,创建一个结束标签,结束标签通常以“>”结束,记录字符串的最后一个字符。这样,每个字符串都会被包裹在开始标签和结束标签之间,以符合XML格式的标签结构。配置数据的创建开始标签和创建结束标签的方式与ECU消息相同,本申请在此不再赘述。
在这些可选地实施例中,通过创建开始标签和结束标签确保了XML文档中的数据一致性和可读性。有助于提高数据的可维护性、可扩展性和可靠性,确保数据正确地存储和传输,并减少了数据解析和处理中的错误和混淆的可能性。这对于ECU刷写工作的成功和可靠性非常重要。
在一实施例中,上述步骤400具体可以执行如下步骤:
S410,获取所述预设软件的第一内嵌函数和第二内嵌函数,所述第一内嵌函数用于解析所述二进制格式的数据,所述第二内嵌函数用于解释所述XML格式的数据;
S420,通过所述第一内嵌函数,以所述二进制格式提取所述第一数据中的目标刷写数据。
可选地,在本申请一种可行的实现方式中,首先,在刷写软件中调用预设的第一内嵌函数,将第一数据作为输入参数传递给这个函数。第一内嵌函数内部包含逻辑来解析二进制格式的数据。这包括按照预定的协议或格式规范,识别和提取刷写数据的各个部分。这可能涉及到对字节、位、标志等进行操作,以确保正确提取目标刷写数据。在解析过程中,第一内嵌函数能够将目标刷写数据从第一数据中提取出来。这涉及到将数据从原始的二进制表示转换为合适的数据类型,以便后续的处理和存储。一旦目标刷写数据成功提取,内嵌函数将其存储在一个适当的数据结构中,以便稍后的使用。这可以是一个变量、缓冲区或其他适当的数据容器。最后,第一内嵌函数应该返回提取的目标刷写数据,以便刷写软件的其他部分可以使用它进行后续的操作,例如将其写入目标刷写文件或发送给车辆的ECU,从而确保了刷写数据的正确提取和使用。这对于ECU刷写操作的成功和可靠性非常重要。
S430,通过所述第二内嵌函数,以所述XML格式提取所述第二数据中的目标配置数据;
S440,将所述目标刷写数据和所述目标配置数据存储在所述目标刷写文件中。
可选地,在本申请一种可能的实现方式中,首先,在刷写软件中调用预设的第二内嵌函数,将第二数据作为输入参数传递给这个函数。第二内嵌函数内部包含逻辑来解析XML格式的数据。这包括将XML数据解析成可操作的数据结构,以便后续处理。一旦XML数据被解析,内嵌函数应该能够定位到包含目标配置数据的XML元素或节点。这通常涉及遍历XML结构,查找和识别包含所需配置数据的元素。在找到目标配置数据的XML元素之后,内嵌函数应该能够提取出这些数据。这可能涉及将文本数据转换为适当的数据类型,以便后续的处理和存储。一旦目标配置数据成功提取,内嵌函数应该将其存储在一个适当的数据结构中,以便稍后的使用。这可以是一个变量、数据对象或其他适当的数据容器。
在这些可选地实施例中,通过内嵌函数的使用,可以提高刷写软件的操作效率,因为内嵌函数通常会经过优化,能够更快速地执行必要的数据提取和处理操作。有助于提高刷写操作的效率、准确性和可靠性。它们确保了刷写数据和配置数据的正确提取、存储和使用,为车辆的ECU刷写操作提供了坚实的基础。
在一实施例中,所述第二数据包括多个第一字符串;上述步骤430具体可以执行如下步骤:
S431,对于每一所述第一字符串,获取所述第一字符串的开始标签对应的第一位置,和所述第一字符串的结束标签对应的第二位置;
S432,基于所述第一位置和所述第二位置,得到所述第一字符串的元素体长度;
S433,基于所述元素体长度,提取所述第一字符串中位于所述第一位置和所述第二位置之间所述元素体长度的字符,得到所述目标配置数据。
可选地,在本申请一种可能的实现方式中,一旦获得了开始标签和结束标签的位置信息,可以计算元素体的长度。元素体长度是开始标签位置和结束标签位置之间的字符数。一旦知道了元素体的长度,可以在第一字符串中提取目标配置数据。元素体是开始标签和结束标签之间的字符序列,其长度由S432中计算的元素体长度确定。
可选地,在本申请一种具体实现方式中,首先基于控制区域网络协议语言(Controller Area Network Protocol Language,CAPL)在CANoe内对刷写文件进行解析,CAPL语言中内嵌函数对外部文件的读写方式分为文本格式和二进制格式,由于受限于CAPL语言本身的特性,当目标文件内存较大时,CAPL语言通过文本格式对目标文件进行读写,可能会导致读写失败,甚至会导致CANoe软件崩溃,而通过二进制格式可以对目标文件进行读写,可以很好的解决上述问题:CAPL语言通过内嵌函数fileGetBinaryBlock()以二进制格式读取第一数据,用于刷写流程中将数据传输到ECU的非易失性内存(Flash)中。
基于CAPL语言对生成的第二数据进行反序列化,按照具体格式,将字符序列方式存储的数据转换成能够识别的对象信息。例如:基于CAPL语言在CANoe内对第二数据的XML流中的信息进行解析提取,并发送相关指令。而CAPL语言没有专门解析XML流的内嵌函数,本申请采用在CAPL语言中通过读写文本文件的方式对XML流进行操作,解析对应的非数据流信息(即配置数据),主要原则是读一行解析一行,直到解析到空值为止。
具体而言,CAPL语言通过文本格式读取XML流,首先对目标字符串创建开始标签和结束标签,记录开始标签和结束标签的对应位置,从而计算出对应元素体的长度,在目标字段获取元素值。例如:目标字符串是“MD5”,开始标签和结束标签创建为<MD5>和</MD5>,根据上述标签查找对应位置N1、N2,计算求得元素体长度Len(N2-N1),从而计算出“MD5”元素体的整型参数例如:“54938264038”(即校验值,仅举例进行说明)。
在这些可选地实施例中,统一了在CANoe软件的刷写流程和方案,解决了多次刷写均需要反复解析,解析过程中需要大量计算,导致的时间过长、计算失准、内存溢出、软件崩溃等问题。
图2示出了本申请另一个实施例提供的数据刷写装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图2,数据刷写装置可以包括:
获取模块201,用于获取初始刷写文件,所述初始刷写文件包括刷写数据和配置数据,所述刷写数据用于对车辆的电子控制单元ECU进行刷写,所述配置数据用于描述所述刷写数据;
第一转换模块202,用于将所述刷写数据转换为第一预设格式,得到第一数据;
第二转换模块203,用于将所述配置数据转换为第二预设格式,得到第二数据;
解析模块204,用于通过预设软件,分别对所述第一数据和所述第二数据进行解析,提取得到目标刷写文件,目标刷写文件包括第一数据的解析结果和第二数据的配置信息;
刷写模块205,用于基于所述目标刷写文件,通过所述预设软件对所述ECU进行刷写工作。
在一实施例中,数据刷写装置还可以包括:
第二获取模块,用于获取所述初始刷写文件的格式标识;
第一匹配模块,用于基于预获取的第一对应关系,对所述格式标识进行匹配,确定所述初始刷写文件的文件格式,所述第一对应关系包括多个预设格式标识和多个预设文件格式之间的一一映射关系。
在一实施例中,第一转换模块202可以包括:
第一获取子模块,用于基于所述文件格式,获取所述初始刷写文件中的每一行数据对应的数据类型标识符;
第二获取子模块,用于对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为第一类型的情况下,提取所述第一类型对应的数据中存储的所述刷写数据;
第一转换子模块,用于将所述刷写数据转换为二进制格式,得到所述第一数据。
在一实施例中,所述配置数据包括所述刷写数据的实际数据地址,所述刷写数据的实际数据长度,所述刷写数据的校验值;第二转换模块203可以包括:
第三获取子模块,用于对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第一类型的情况下,提取所述第一类型对应的数据中存储的第一数据地址和数据长度;
第四获取子模块,用于在所述数据类型标识符为第二类型的情况下,提取所述第一类型对应的数据中存储的第二数据地址;
第一组合子模块,用于将所述第一数据地址和所述第二数据地址按照预定义的组合规则进行组合,得到所述实际数据地址;
第一计算子模块,用于将每行数据的数据长度进行累加,得到所述实际数据长度;
第二计算子模块,用于利用预设校验算法计算所述刷写数据的校验值,所述校验值用于指示所述刷写数据的完整程度;
第二转换子模块,用于将所述实际数据地址、所述实际数据长度和所述校验值转换为可扩展标记语言XML格式,得到所述第二数据。
在一实施例中,所述数据类型标识符还包括第三类型;第一转换模块202还可以包括:
停止子模块,用于对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第三类型的情况下,停止提取。
在一实施例中,第二转换子模块可以包括:
定义单元,用于定义所述XML格式的版本和所述XML格式的编码格式;
第一创建单元,用于创建多个根节点,所述第二数据包括所述多个根节点,所述多个根节点包括ECU根节点和刷写数据根节点,所述ECU根节点用于存储ECU信息,所述刷写数据根节点用于存储所述配置数据,所述ECU信息包括ECU名称、ECU版本号;
第二创建单元,用于在所述ECU根节点中创建多个第一子节点,不同所述第一子节点用于存储不同的所述ECU信息;
第三创建单元,用于在所述刷写数据根节点中创建多个第二子节点,不同所述第二子节点用于存储不同的所述配置数据;
第一编码单元,用于按照所述编码格式,对所述ECU信息进行编码,以将不同的所述ECU信息以所述XML格式存储至不同的所述第一子节点中;
第二编码单元,用于按照所述编码格式,对所述配置数据进行编码,以将不同的所述配置数据以所述XML格式存储至不同的所述第二子节点中。
在一实施例中,第一编码单元可以包括:
第一创建子单元,用于对于所述ECU信息中的每个字符串,按照所述编码格式,创建开始标签和结束标签,所述开始标签用于记录字符串的首个字符,所述结束标签用于记录字符串的最后一个字符。
在一实施例中,第二编码单元可以包括:
第二创建子单元,对于所述配置数据中的每个字符串,按照所述编码格式,创建开始标签和结束标签。
在一实施例中,解析模块204可以包括:
第五获取子模块,用于获取所述预设软件的第一内嵌函数和第二内嵌函数,所述第一内嵌函数用于解析所述二进制格式的数据,所述第二内嵌函数用于解释所述XML格式的数据;
第六获取子模块,用于通过所述第一内嵌函数,以所述二进制格式提取所述第一数据中的目标刷写数据;
第七获取子模块,用于通过所述第二内嵌函数,以所述XML格式提取所述第二数据中的目标配置数据;
存储子模块,用于将所述目标刷写数据和所述目标配置数据存储在所述目标刷写文件中。
在一实施例中,所述第二数据包括多个第一字符串;第七获取子模块可以包括:
第一获取单元,用于对于每一所述第一字符串,获取所述第一字符串的开始标签对应的第一位置,和所述第一字符串的结束标签对应的第二位置;
第一确定单元,用于基于所述第一位置和所述第二位置,得到所述第一字符串的元素体长度;
第二获取单元,用于基于所述元素体长度,提取所述第一字符串中位于所述第一位置和所述第二位置之间所述元素体长度的字符,得到所述目标配置数据
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,与本申请方法实施例基于同一构思,是与上述电池热失控预警方法对应的装置,上述方法实施例中所有实现方式均适用于该装置的实施例中,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图3示出了本申请实施例提供的电子设备的硬件结构示意图。
设备可以包括处理器301以及存储有程序指令的存储器302。
处理器301执行程序时实现上述任意各个方法实施例中的步骤。
示例性的,程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器302中,并由处理器301执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列程序指令段,该指令段用于描述程序在设备中的执行过程。
具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在综合网关容灾设备的内部或外部。在特定实施例中,存储器302是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器301通过读取并执行存储器302中存储的程序指令,以实现上述实施例中的任意一种方法。
在一个示例中,电子设备还可包括通信接口303和总线310。其中,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
通信接口303,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
另外,结合上述实施例中的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有程序指令;该程序指令被处理器执行时实现上述实施例中的任意一种方法。
本申请实施例另提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上的结构框图中所示的功能模块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网格被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种数据刷写方法,其特征在于,所述方法包括:
获取初始刷写文件,所述初始刷写文件包括刷写数据和配置数据,所述刷写数据用于对车辆的电子控制单元ECU进行刷写,所述配置数据用于描述所述刷写数据;
将所述刷写数据转换为第一预设格式,得到第一数据;
将所述配置数据转换为第二预设格式,得到第二数据;
通过预设软件,分别对所述第一数据和所述第二数据进行解析,提取得到目标刷写文件,所述目标刷写文件包括所述第一数据的解析结果和所述第二数据的配置信息;
基于所述目标刷写文件,通过所述预设软件对所述ECU进行刷写工作。
2.根据权利要求1所述的方法,其特征在于,在获取初始刷写文件之后,以及在将所述刷写数据转换为第一预设格式,得到第一数据之前,所述方法还包括:
获取所述初始刷写文件的格式标识;
基于预获取的第一对应关系,对所述格式标识进行匹配,确定所述初始刷写文件的文件格式,所述第一对应关系包括多个预设格式标识和多个预设文件格式之间的一一映射关系。
3.根据权利要求2所述的方法,其特征在于,所述将所述刷写数据转换为第一预设格式,得到第一数据,包括:
基于所述文件格式,获取所述初始刷写文件中的每一行数据对应的数据类型标识符;
对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为第一类型的情况下,提取所述第一类型对应的数据中存储的所述刷写数据;
将所述刷写数据转换为二进制格式,得到所述第一数据。
4.根据权利要求3所述的方法,其特征在于,所述配置数据包括所述刷写数据的实际数据地址,所述刷写数据的实际数据长度,所述刷写数据的校验值;
所述将所述配置数据转换为第二预设格式,得到第二数据,包括:
对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第一类型的情况下,提取所述第一类型对应的数据中存储的第一数据地址和数据长度;
在所述数据类型标识符为第二类型的情况下,提取所述第一类型对应的数据中存储的第二数据地址;
将所述第一数据地址和所述第二数据地址按照预定义的组合规则进行组合,得到所述实际数据地址;
将每行数据的数据长度进行累加,得到所述实际数据长度;
利用预设校验算法计算所述刷写数据的校验值,所述校验值用于指示所述刷写数据的完整程度;
将所述实际数据地址、所述实际数据长度和所述校验值转换为可扩展标记语言XML格式,得到所述第二数据。
5.根据权利要求3所述的方法,其特征在于,所述数据类型标识符还包括第三类型;
所述将所述刷写数据转换为第一预设格式,得到第一数据,还包括:
对于所述初始刷写文件中的每一行数据,在所述数据类型标识符为所述第三类型的情况下,停止提取。
6.根据权利要求4所述的方法,其特征在于,所述将所述实际数据地址、所述实际数据长度和所述校验值转换为可扩展标记语言XML格式,得到所述第二数据,包括:
定义所述XML格式的版本和所述XML格式的编码格式;
创建多个根节点,所述第二数据包括所述多个根节点,所述多个根节点包括ECU根节点和刷写数据根节点,所述ECU根节点用于存储ECU信息,所述刷写数据根节点用于存储所述配置数据,所述ECU信息包括ECU名称、ECU版本号;
在所述ECU根节点中创建多个第一子节点,不同所述第一子节点用于存储不同的所述ECU信息;
在所述刷写数据根节点中创建多个第二子节点,不同所述第二子节点用于存储不同的所述配置数据;
按照所述编码格式,对所述ECU信息进行编码,以将不同的所述ECU信息以所述XML格式存储至不同的所述第一子节点中;
按照所述编码格式,对所述配置数据进行编码,以将不同的所述配置数据以所述XML格式存储至不同的所述第二子节点中。
7.根据权利要求6所述的方法,其特征在于,所述按照所述编码格式,对所述ECU信息进行编码,包括:
对于所述ECU信息中的每个字符串,按照所述编码格式,创建开始标签和结束标签,所述开始标签用于记录字符串的首个字符,所述结束标签用于记录字符串的最后一个字符;
所述按照所述编码格式,对配置数据进行编码,包括:
对于所述配置数据中的每个字符串,按照所述编码格式,创建开始标签和结束标签。
8.根据权利要求7所述的方法,其特征在于,所述基于预设软件,分别对所述第一数据和所述第二数据进行解析,提取得到目标刷写文件,包括:
获取所述预设软件的第一内嵌函数和第二内嵌函数,所述第一内嵌函数用于解析所述二进制格式的数据,所述第二内嵌函数用于解释所述XML格式的数据;
通过所述第一内嵌函数,以所述二进制格式提取所述第一数据中的目标刷写数据;
通过所述第二内嵌函数,以所述XML格式提取所述第二数据中的目标配置数据;
将所述目标刷写数据和所述目标配置数据存储在所述目标刷写文件中。
9.根据权利要求8所述的方法,其特征在于,所述第二数据包括多个第一字符串;
所述通过所述第二内嵌函数,以所述XML格式提取所述第二数据中的目标配置数据,包括:
对于每一所述第一字符串,获取所述第一字符串的开始标签对应的第一位置,和所述第一字符串的结束标签对应的第二位置;
基于所述第一位置和所述第二位置,得到所述第一字符串的元素体长度;
基于所述元素体长度,提取所述第一字符串中位于所述第一位置和所述第二位置之间所述元素体长度的字符,得到所述目标配置数据。
10.一种数据刷写装置,其特征在于,所述装置包括:
获取模块,用于获取初始刷写文件,所述初始刷写文件包括刷写数据和配置数据,所述刷写数据用于对车辆的电子控制单元ECU进行刷写,所述配置数据用于描述所述刷写数据;
第一转换模块,用于将所述刷写数据转换为第一预设格式,得到第一数据;
第二转换模块,用于将所述配置数据转换为第二预设格式,得到第二数据;
解析模块,用于通过预设软件,分别对所述第一数据和所述第二数据进行解析,提取得到目标刷写文件,所述目标刷写文件包括所述第一数据的解析结果和所述第二数据的配置信息;
刷写模块,用于基于所述目标刷写文件,通过所述预设软件对所述ECU进行刷写工作。
CN202311433146.0A 2023-10-31 2023-10-31 数据刷写方法及装置 Pending CN117453238A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311433146.0A CN117453238A (zh) 2023-10-31 2023-10-31 数据刷写方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311433146.0A CN117453238A (zh) 2023-10-31 2023-10-31 数据刷写方法及装置

Publications (1)

Publication Number Publication Date
CN117453238A true CN117453238A (zh) 2024-01-26

Family

ID=89583205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311433146.0A Pending CN117453238A (zh) 2023-10-31 2023-10-31 数据刷写方法及装置

Country Status (1)

Country Link
CN (1) CN117453238A (zh)

Similar Documents

Publication Publication Date Title
CN111428462B (zh) 通讯协议模板构建的方法及终端设备
CN102713834B (zh) 管理记录格式信息
CN103853650A (zh) 一种模糊测试的测试用例生成方法及装置
CN105659274A (zh) 用于在可重构平台中解码数据流的方法和设备
CN105607923A (zh) 一种跨平台的航空电子系统配置数据生成与恢复方法
CN114510267B (zh) 基于Linux系统的程序ABI接口兼容性计算方法
CN113050953A (zh) 基于注释生成代码的方法、装置及存储介质
CN112732321B (zh) 一种固件修改方法、装置、计算机可读存储介质和设备
WO2012052215A1 (en) Software development
CN113157315A (zh) 一种软件不同版本的差异信息识别方法、装置、设备及介质
CN116166629A (zh) 一种文件格式转换方法、装置、设备及可读存储介质
CN112948400B (zh) 一种数据库管理方法、数据库管理装置及终端设备
CN111290747B (zh) 一种创建函数钩子的方法、系统、设备及介质
CN112274913A (zh) 游戏服务器的合并方法及装置、存储介质、电子装置
CN112733199A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN115904480B (zh) 代码重构方法、装置、电子设备及存储介质
CN117453238A (zh) 数据刷写方法及装置
CN116841906A (zh) 智能合约的检测方法、装置及电子设备
CN115640076A (zh) 一种pcie拓扑传递方法、装置、电子设备和存储介质
CN115687138A (zh) 代码校验方法、装置及服务器
CN114816364A (zh) 基于Swagger动态生成范本文件的方法、装置及应用
CN111736848B (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN113037521B (zh) 识别通讯设备状态的方法、通讯系统及存储介质
CN114817124A (zh) 多核微控制器间映射方法、设备及计算机可读存储介质
CN112817953A (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