0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ECU刷写流程之压缩刷写技术解析

北汇信息POLELINK 2024-05-16 08:24 次阅读

作者 | 小豆
小编 | 不吃猪头肉

背景
在现代汽车电子技术中,ECU(电子控制单元)的软件升级是一项关键任务。为了提高数据传输的效率和安全性,压缩刷写技术应运而生。通过数据压缩传输,我们可以有效地增加带宽利用率,减少刷写工具与ECU之间的数据传输量,从而显著缩短ECU升级时间。此外,为了加强数据的安全性和保密性,数据传输还可以进行加密处理。在ISO14229-1规范中,请求下载服务(SID=0x34)和请求文件传输服务(0x38)定义了数据可以基于压缩和加密的方式进行传输。本文以请求下载服务为例重点介绍数据压缩部分。b7425d12-131a-11ef-9118-92fbcf53809c.pngISO14229-1:2020规范中定义请求下载服务(0x34)的请求报文格式b7514ef8-131a-11ef-9118-92fbcf53809c.png
根据ISO14229-1:2020规范,请求下载服务(0x34)允许数据通过压缩和加密的方式进行传输。在该服务的请求报文格式中,”dataFormatIdentifier“是一个关键的参数,大小为1个字节,其中高四位(bit4-bit7)为参数”compressionMethod“,定义数据是否需要压缩, 其中低四位(bit0-bit3)为参数”encryptingMethod“,定义数据是否需要加密。若下载的数据既不需要压缩也不需要加密,则该参数值为0x00,若使用非0x00的值,则表示下载数据需要进行压缩、加密,或二者兼有。如”dataFormatIdentifier“此值为0x10,表示下载数据需要压缩不需要加密,如”dataFormatIdentifier“此值为0x11,表示下载数据需要压缩也需要加密。

值得注意的是,下载数据的压缩与加密需求并不影响参数”addressAndLengthFormatIdentifier

“和”memoryAddress“,但会影响”memorySize“参数,该参数定义了需要刷写数据的大小,这个大小将与通过TransferData(0x36)服务传输的数据大小进行比较。

当下载的数据是压缩数据时,由OEM来定义”memorySize“代表的是压缩数据的大小还是压缩前数据的大小。不同的定义对于刷写流程的实现代码也不相同。
若”memorySize“代表压缩数据的大小,那么当TransferData(0x36)服务将压缩数据传输完成后,ECU将根据“memorySize”参数来判断数据是否下载完成,ECU会比较传输的压缩数据与”memorySize“参数定义的数据大小是否一致,并相应地发送肯定或否定响应。
若”memorySize“代表非压缩数据的大小,那么TransferData(0x36)服务传输的压缩数据大小一般小于”memorySize“的值。这时ECU将接收到的压缩数据解压,并计算所有解压后数据大小的总和。在压缩数据传输完成后,ECU会比较解压后的数据大小与”memorySize“参数定义的数据大小是否一致,并相应地发送肯定或否定响应。
当然,对于”memorySize“代表压缩数据的大小还是非压缩数据大小,数据传输完成后ECU判断下载数据是否正确的方法各OEM定义也不尽相同。b76dca56-131a-11ef-9118-92fbcf53809c.png压缩前后刷写文件比对
软件刷写是指将软件程序烧录或者通过UDS刷写传输到ECU芯片内存的特定地址段,然后ECU就会运行该软件程序,去实现其特有的功能。常用的ECU刷写文件格式有:.hex,.s19和.bin等。压缩刷写文件是通过特定的压缩算法制作而成。
压缩前:
b78954c4-131a-11ef-9118-92fbcf53809c.png

刷写文件分3个逻辑块,各块起始地址、结束地址、长度为:

Block0:起始地址:0x80138020 结束地址:0x801FFFDF 长度:0xC7FC0

Block1:起始地址:0x80300020 结束地址:0x804FFFDF 长度:0x1FFFC0

Block2:起始地址:0xA0078020 结束地址:0xA0137FFF 长度:0xBFFE0

压缩后:
b7aebf3e-131a-11ef-9118-92fbcf53809c.png

压缩后刷写文件仍分3个逻辑块,各块起始地址、结束地址、长度为:

Block0:起始地址:0x80138020 结束地址:0x8015E60E 长度:0x265EF

Block1:起始地址:0x80300020 结束地址:0x80448DD7 长度:0x148DB8

Block2:起始地址:0xA0078020 结束地址:0xA00AD0F6 长度:0x350D7

可以发现,压缩前后的刷写文件逻辑块数量未变化,起始地址未变化,各逻辑块的数据长度变小了,对应的结束地址也产生了变化。每个逻辑块独立压缩
对于压缩前刷写文件中分为多个逻辑块,在压缩之后的逻辑块数量未发生变化的情况可称之为“每个逻辑块独立压缩”。与之不同,也存在“整体压缩”的方式。
整体压缩
压缩前:
b7c8f2fa-131a-11ef-9118-92fbcf53809c.png

刷写文件分3个逻辑块,各块起始地址、结束地址、长度为:

Block0:起始地址:0x8FC0060 结束地址:0x9194FFF 长度:0x1D4FA0

Block1:起始地址:0x91C0000 结束地址:0x91D9EBF 长度:0x19EC0

Block2:起始地址:0x9200000 结束地址:0x9237FFF 长度:0x38000

压缩后:
b7e3d1a6-131a-11ef-9118-92fbcf53809c.png

压缩后刷写文件只有1个逻辑块,无起始地址。

对于“整体压缩方式”,刷写流程中内存擦除(EarseMemmory)服务和0x34(RequestDownload)服务中起始地址等信息由ECU供应商或者OEM定义。b80c895c-131a-11ef-9118-92fbcf53809c.png压缩刷写日志分析
非压缩刷写日志:
b81b2520-131a-11ef-9118-92fbcf53809c.png压缩刷写日志:
b8340d88-131a-11ef-9118-92fbcf53809c.png
通过分析刷写日志,我们可以发现压缩刷写与非压缩刷写的主要区别在于:1.请求下载服务(SID=0x34)指令参数(dataFormatIdentifier)不同。

非压缩:刷写工具发送:34 00 44 A0 07 80 00 00 10 00 01

压缩:刷写工具发送:34 10 44 A0 07 80 00 00 03 50 F7

其中10代表:使用压缩数据;00代表:使用非压缩数据。
2.请求下载服务(SID=0x34)指令参数(memorySize)不同。

非压缩刷写:刷写工具发送:34 00 44 A0 07 80 00 00 10 00 01

压缩刷写:刷写工具发送:34 10 44 A0 07 80 00 00 03 50 F7

非压缩刷写中请求下载服务(SID=0x34)中memorySize大小大于压缩刷写中的memorySize大小,如果最大块长度值一致,则对于后续数据传输服务(SID=0x36)的个数,压缩刷写则要小于非压缩刷写。

如日志中压缩刷写与非压缩刷写最大块长度值皆为0xFFF,可计算出:

非压缩刷写后续数据传输服务(SID=0x36)的个数为257个;

压缩刷写后续数据传输服务(SID=0x36)的个数为54个;

数据传输服务(SID=0x36)的个数越少,则所需数据传输的时间也就越少,这也就是压缩刷写可以提升刷写效率的主要原因。b85f2838-131a-11ef-9118-92fbcf53809c.png总结
随着ECU软件功能的日益复杂,提高ECU软件升级效率变得尤为重要,Bootloader作为一项必不可少的功能软件,其高效的刷写方式是实现ECU软件更新的关键。目前,北汇信息已经完成压缩刷写测试方案的落地,期待与感兴趣的朋友进行交流合作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1605

    浏览量

    63898
  • ecu
    ecu
    +关注

    关注

    14

    文章

    834

    浏览量

    54046
  • 电子控制
    +关注

    关注

    1

    文章

    65

    浏览量

    21580
收藏 人收藏

    评论

    相关推荐

    用Pixel去刷写protonAOSP+Root的步骤简析

    这次刷写的是这个ROM,和原版的差不多,就是把雷达给阉割了,然后精简了Google全家桶,刷入的是Gapps,就最基本的框架。Google的手机没有着还玩蛇。
    的头像 发表于 07-10 16:10 2741次阅读
    用Pixel去<b class='flag-5'>刷写</b>protonAOSP+Root的步骤简析

    TCU的刷写

    目前对于大陆TCU的刷写,还找不到一款合适的软件!如果用专检刷TCU会存在一个问题,安全验证不通过有好人指点一下吗?
    发表于 05-14 22:48

    系统起来后怎么对nand flash进行刷写

    系统起来后怎么对nand flash进行刷写?而不是在uboot中进行如对/dev/mtdblock3的刷写
    发表于 01-13 06:31

    刷写AT固件相关资料推荐

    刷写AT固件一、前提说明二、刷写1、硬件准备2、软件准备3、固件准备4、开始烧录一、前提说明一般是模块固件损坏或者买回来里面可能被别人刷过固件需要擦除或者增加固件才用,在这里结合我刷过的AT固件进行
    发表于 01-21 13:35

    memtool刷写问题

    MEMTOOL刷写底层提示以下内容 1、failed to read DBGSR 2、failed to get monitor extension result 3、initializing
    发表于 02-16 09:54

    驱动仅提供32位刷写的情况下如何完成刷写单数字节

    [Ooonly] 前情提要:需要刷写一整个app程序,分包刷写,每包字节数为单数,要求CRC校验正确。(芯片底层提供32位全字刷写和16位半字刷写,驱动只整合了32位全字
    发表于 08-15 11:35

    linkit_Smart_7688_DUO_固件刷写说明书

    linkit_Smart_7688_DUO_固件刷写说明书
    发表于 06-21 17:02 0次下载

    用户自定义操作Custom Action的两种开发方式

    vFlash专为汽车OEM和ECU供应商中执行刷写任务的人员所设计,用以实现高效的ECU刷写。vFlash可以通过标准软件的图形界面进行控制,也可以简单地作为库集成到现有环境中实现自动
    的头像 发表于 09-02 17:55 2005次阅读

    致远电子CAN智慧云如何赋能ECU远程刷写

    汽车步入智能网联时代,汽车总线面临技术升级,ECU刷写仍然是车辆性能优化的关键测试。本文介绍ZLG致远电子提出的远程ECU刷写方案。 智能网
    的头像 发表于 10-12 09:31 3074次阅读
    致远电子CAN智慧云如何赋能<b class='flag-5'>ECU</b>远程<b class='flag-5'>刷写</b>

    NodeMCU-刷写AT固件

    NodeMCU-刷写AT固件本来不想写的,发现自己亲自去刷的时候,刷了好几个官网的AT固件包,都不匹配。坛友提供的版本比较老,看到下载链接延伸到其他下载地方,直接放弃了。(果然这里有
    发表于 10-28 10:21 3次下载
    NodeMCU-<b class='flag-5'>刷写</b>AT固件

    笔记本电脑BIOS修改及刷写教程

      刷写BIOS是一个相对危险的事,如果刷写过程中出了意外那么电脑就会坏掉,只能拆开电脑把BIOS芯片卸下来用编程器重新刷写了。首先科普一下笔记本电脑BIOS芯片是个啥?来自360百科的释义
    发表于 12-17 18:28 7次下载
    笔记本电脑BIOS修改及<b class='flag-5'>刷写</b>教程

    认识一下并列刷写(Parallel Flash)

    再有,在车辆下线时EOL(End of Line),工厂追求效率,一般会1(刷写上位机)拖N(N个 ECU)刷写,这是不是一种Parallel Flash呢?
    的头像 发表于 11-15 16:03 3598次阅读
    认识一下并列<b class='flag-5'>刷写</b>(Parallel Flash)

    基于CAN智慧云实现远程ECU升级

    在日常研发中,调试已经成为日常工作中核心的一部分。汽车电子行业中,测试时,常需对ECU固件进行刷写。CAN智慧云基于CANDTU系列产品实现远程刷写ECU固件,减少人力与时间成本。
    的头像 发表于 05-09 11:38 615次阅读
    基于CAN智慧云实现远程<b class='flag-5'>ECU</b>升级

    应用笔记 | TSMaster使用教程—UDS刷写流程

    今天给大家介绍基于TSMaster的UDS诊断刷写流程。基本流程主要分为基本参数配置、刷写流程两部分。1基本参数配置1、新建工程打开TSMa
    的头像 发表于 01-06 09:53 2694次阅读
    应用笔记 | TSMaster使用教程—UDS<b class='flag-5'>刷写</b><b class='flag-5'>流程</b>

    同星智能为英飞凌TLE989X系列芯片提供刷写方案

    01方案概述同星智能为英飞凌TLE989X系列芯片提供定制开发的代码包和刷写工具,主要包括代码包、基于TSMaster的刷写工程、刷写硬件工具TF1011等。使用TF1011可以不需要英飞凌本身
    的头像 发表于 10-14 08:21 770次阅读
    同星智能为英飞凌TLE989X系列芯片提供<b class='flag-5'>刷写</b>方案