• 246查看
  • 0回复

[底层软件] UDS 0x31 0x34 0x36 0x37 刷写数据流程

[复制链接]


该用户从未签到

发表于 27-4-2024 09:19:30 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


编程流程如下:

    1、10服务切换到编程模式,这里要注意,正确的方式是App段程序回复0x78 NRC,接下来跳转到boot段程序,最后由Boot段程序来回复10 02的肯定响应。错误的方式是由App段回复10 02的肯定响应,再进行跳转。

    2、27服务,解锁,通过安全验证。

    3、31服务,擦除Flash。ECU肯定响应,擦除成功。

    4、34服务,请求数据下载,ECU回复确认最大块大小。

    5、36服务,开始传输数据。每个块传输完成后,ECU肯定响应。判断是否还有更多块需要下载。最多可以支持255个块。

    6、37服务,请求退出传输。ECU肯定响应。

    7、31服务,校验APP段程序,检查编程一致性/完整性。ECU肯定响应。校验成功。

    8、若有更多块需要下载,重新执行31(擦除Flash区域)-34-36-37-31(校验)服务。若无,往下执行。

    9、11服务,ECU复位。之后应直接跳转到新下载的APP段程序中。


34/36/37服务流程图:

UDS 0x31 0x34 0x36 0x37 刷写数据流程w1.jpg

例程控制服务(0x31服务)

主要用于对主机厂定义的一些特定程序的控制操作(启动程序、停止程序、请求运行结果),本软件设计,0x31服务用于内存擦除和检查数据有效性(CRC32校验)

擦除内存服务格式:

Tester:31 01 FF 00

用于对此次升级要用到的内存空间进行擦除操作。一般用于请求APP数据下载(34服务)之前。

检查数据有效性服务格式:

Tester:31 01 02 02 Checksum(4byte)

一般用于对升级数据中的每个块信息的CRC校验;ECU会将接收到的数据进行CRC计算,并与诊断仪计算发送过来的CRC进行比对;确保数据的准确性。

请求下载服务(0x34服务)

这个服务主要是用来给ECU下载数据的,本次应用在bootloader中,程序下载工具会发起下载请求,设置内存起始地址和内存大小,以完成ECU程序的升级。

Tester:34 00 44 MemoryAddress(4byte)MemorySize(4byte)

数据传输服务(0x36服务)

Tester:36 BlockSequenceCounter(1byte) Data

BlockSequenceCounter被ECU用来监测并处理传输错误,初始值是1,随后每次服务请求 其值递增1。当传输块编号达到255(FFh)时,要求传输块编号从0继续。数据写入Flash,等到接收完一个Block,就是使用0x31服务进行数据校准。

退出数据传输服务(0x37服务)

服务格式:

Tester:37

ECU:77

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:20 , Processed in 0.210336 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.