如何给压缩包加密-vFlash支持刷写压缩加密文件

vFlash是简单易用的Bootloader刷写上位机工具,可以刷写一个或多个ECU。vFlash支持多种总线通信,如CAN/CAN FD、FlexRay、LIN、Ethernet/DoIP。除常规数据之外,vFlash还可以刷写压缩加密数据文件。
刷写数据的压缩、加密
在ISO 14229-1中,请求下载服务(SID=0x34)定义了可以刷写压缩、加密格式的数据。刷写压缩文件可以隐性地增加带宽,增加刷写工具传输到ECU的字节数,减少刷写时间。为了提高刷写数据的安全性和保密性,可以对刷写数据进行加密。
ISO 14229-1:2020中定义0x34服务的请求报文格式如表1所示:

表1 0x34服务请求报文定义
其中参数“dataFormatIdentifier”是一个字节的数据,高四位(bit4-bit7)定义数据是否需要压缩的参数“compressionMethod”,低四位(bit0-bit3)定义数据是否需要加密的参数“encryptingMethod”。如果下载数据既非压缩也非加密,那么此参数为0x00。用非0x00的值表示下载数据需要压缩或加密,或者二者兼而有之。
下载数据是否需要压缩、加密,对于参数“addressAndLengthFormatIdentifier”和“memoryAddress”没有影响。
参数“memorySize”定义需要刷写数据的大小,这个值将和通过TransferData(0x36)服务传输的数据大小进行比较。
当下载的数据是压缩数据时,由整车厂来定义“memorySize”代表的是压缩数据的大小还是未压缩数据的大小。不同的定义对于Bootloader的代码实现也不相同。
如果“memorySize”代表压缩数据的大小,那么当0x36(TransferData)服务传输压缩数据后,ECU将接收到的压缩数据解压并写入Flash。当刷写数据传输完成后,vFlash会发送RequestTransferExit(0x37)服务,ECU会比较传输的压缩数据与“memorySize”定义的数据大小是否一致。如果一致,ECU认为数据已下载完成,发送肯定响应。反之,发送否定响应。
如果“memorySize”代表非压缩数据的大小,那么0x36(Transf【78个搞.钱.项.目】erData)服务传输的压缩数据一般是小于“memorySize”的值。这时ECU将接收到的压缩数据解压,并计算所有解压数据大小的总和。当刷写数据传输完成后,vFlash会发送RequestTransferExit(0x37)服务,ECU会比较解压后数据的大小与“me【68 个.副.业项.目】morySize”参数是否一致。如果一致,ECU认为数据已下载完成,发送肯定响应。反之,发送否定响应。
vFlash中功能的应用
vFlash需要依赖vFlash Template定义的刷写序列、功能和属性等。vFlash Template的定义依据各个整车厂和供应商提供的刷写需求规范。因此如果需要刷写压缩、加密文件,前提条件是vFlash Template需要支持此功能。
处理压缩数据功能
(Compression)
vFlash提供两种处理压缩数据的方式:“Pre-Compression”是vFlash直接传输已经压缩过的数据,使用者不需要给vFlash提供压缩算法;“Live-Compression”是由vFlash来压缩数据,并将压缩后的数据传输给ECU,用户需要给vFlash提供压缩算法。
Pre-Compression
在vFlash Template定义并激活此种方式,如图1所示:
在图中1处加载刷写所用的压缩文件,vFlash会自动获取压缩文件数据的大小;在图中2处“Compression Type”选择“Pre-Compression”(如果vFlash Template只支持Pre-Compression一种方式,那么此项不需修改);在图中3处“Compression Method”填入非零的值,如0x1;此时在图中4处“Uncompressed Memory Size”属性被激活如何给压缩包加密,可以手动填写非压缩数据的大小,或者加载非压缩文件,由vFlash计算非压缩数据的大小。

图1 Pre-Compression功能界面
Live-Compression
与Pre-Compression不同的是压缩数据的工作由vFlash来完成,所以需要用户提供压缩算法文件供vFlash使用。
在vFlash Template定义并激活此种方式,如图2所示:
在图中1处加载刷写所用的非压缩文件;在图中2处“Compression Type”选择“Live-Compression”;在图中3处“Library“选择压缩算法文件,压缩算法需要与Bootloader代码中实现的压缩算法一致。选择的压缩算法文件的API需要与使用的vFlash Template中的定义一致。在图中4处“Compression Method”填入非零的值,如0x1。

图2 Live-Compression功能界面
处理加密数据功能
(Encrytion)
如果需要下载加密数据文件,可以如图3所示如何给压缩包加密,在Datablocks处添加加密的数据文件;“Encryption Method”输入非零值,如0x1;”Unencrypted Memory Size”可以加载未加密的数据文件,如果出于对数据保密的需要,不能提供未加密数据文件,那么也可以手动输入未加密数据文件的大小。

图3 Encryption功能界面
刷写界面
当vFlash工程配置完成之后,刷写过程如图4所示,可以显示刷写流程、刷写进度、刷写的数据流、刷写文件的解析等。

图4 刷写界面
结语
随着ECU软件功能复杂性的提高,软件数量的增加,ECU软件和数据的下载更新愈发重要,Bootloader已成为必不可少的功能软件。为了完成ECU软件的更新,高效易用的刷写工具是必备的。vFlash用户界面设计精简,不需要使用者具有太多专业的知识。利用不同的vFlash Template可以实现对于不同Bootloader刷写规范的支持。当ECU支持的总线的传输速率不高的情况下(如CAN总线),需要传输的数据量又很大时,压缩文件是一个很好的选择。在ECU的研发、生产和售后阶段都会涉及软件和数据的刷写更新,为了提高刷写文件的安全性和保密性,通常会选择加密文件,以防止数据被篡改和不合规的使用。vFlash不仅可以稳定高效地完成数据传输,还可以根据使用者的刷写规范提供不同的功能。

我知道你在看哟

———END———限 时 特 惠: 【资 ;源 之.家.】mxyxt .com 每日持.续更新.可.实操.的副.业.项目,【微-信 】 qgz mt1, 【点击查看详情】站 长 微 信: qgzmt1