车载网络测试 - UDS诊断篇 - 诊断刷写($34/$36/$37)

      

f0c072ce581c2c83beedba7e48e7c14f.png

  

          随着OTA的普及,以及最近几年车载行业的蓬勃发展,越来越多的ECU都在支持刷写升级,刷写分为CAN/CANFD刷写、路由刷写、DoIP刷写等(LIN刷写除外);然而无论是哪种刷写模式几乎都无法避开$34、$36、$37这三个服务,因此今天我们暂不讲完整的刷写流程,先来认识一下这3个服务的功能用途及组成。

34服务

功能:获取DUT支持的单次刷写命令的最大长度

命令格式(请求&应答):

诊断请求:

837994aca532ea588156bea82e7a5d5e.png

#1:34服务

#2:dataFormatIdentifier,一般使用默认值00;高四位表示Compression Method,第四位表示Encryping Method;一般都未使用,使用默认值

#3:addressAndLengthFormatIdentifier,高四位(bit7-4)memorySize代表长度;低四位(bit3-0)表示memory Address的长度。

#4:memoryAddress,开始刷写(下载)的起始位置地址

#5:memorySize,从开始刷写到刷写结束的文件长度。

肯定应答:

6c82314c1fa2c55758aa9411a2cd02e9.png

#1:对34服务肯定应答74

#2:lengthFormatIdentifier,高四位表示参数maxNumberOfBlockLength的长度,低四位为保留位。

#3...:maxNumberOfBlockLength,表示用户每次传输数据的请求中包含的最大字节数。

否定应答:

fe4e2fbe5e94062e535bd4c85d027ce4.png

36服务

功能:诊断刷写进行数据传输

命令格式(请求&应答):

诊断请求:

a48ac4051b92643d2439ddde6a5fb1b3.png

#1:36服务

#2:blockSequenceCounter,变化规律为36 01 - 36 02 ··········· 36 FF 36 00 - 36 01 ········ 36 FF - 36 00 - 36 01 ········ 36 FF ···········直到刷写结束。

#3 ··· n:transferRequestParameterRecord,代表每次要刷写到DUT的数据内容。

肯定应答:

7d3a225b88d8f2d7f6126efb9931570b.png

#1:对36服务肯定应答76

#2:blockSequenceCounter,对应36服务请求的blockSequenceCounter。

例如:36 01 + data

          76 01肯定应答

否定应答:

0cda3a2cbc1e110a35183d1aa6c9b810.png

a364d0840e82c02519acd4c9a775d153.png

37服务

功能:请求结束刷写

命令格式(请求&应答):

诊断请求:

200b34fbf0d7524d1a4989db33b54ff9.png

#1:37服务

#2 ··· n:transferRequestParameterRecord,由主机厂定义,一般只需发送37即可,不带任何参数,不过实际情况可能要根据各个主机厂定义。

肯定应答:

4c591e590aa47acf5ec49d641fbfc971.png

#1:对37服务肯定应答77

#2 ··· n:transferRequestParameterRecord,由主机厂定义,一般只需发送37即可,不带任何参数,不过实际情况可能要根据各个主机厂定义。

例如:37

          77 肯定应答

否定应答:

d30a1e8a2faf62879b11f2469328cb8b.png

 

 

<think>好的,我现在需要帮助用户查找与UDS诊断刷写相关的上位机工具或软件。首先,我得先理解用户的需求。用户可能是在汽车电子开发领域工作,需要能够通过UDS协议进行ECU诊断和固件刷写的工具。他们可能希望找到现成的软件或者开发自定义解决方案的资源。 根据用户提供的引用内容,有几个关键点需要注意。引用[1]提到使用CAPL脚本配合V公司的CAN卡和oe软件实现刷写流程。引用[2]和[3]讨论了基于UDS的BootLoader刷写上位机开发,使用CANoe和CAPL脚本,以及参考代码。引用[4]则强调协议定制和多协议支持的重要性。这些信息说明用户可能需要既有现成工具也有定制开发的可能。 接下来,我应该考虑用户可能需要不同类型的解决方案。比如,商业化的成熟工具如CANoe、Indigo、Peak CAN等,这些工具通常功能全面但成本较高。开源或免费工具如SavvyCAN、Arduino或树莓派方案可能适合预算有限的用户。而如果用户需要高度定制化,可能需要基于CAPL脚本或Python等语言开发自己的上位机,这时候参考现有的项目代码会很有帮助。 另外,用户的问题中提到“尽可能多的参考用户上一次的问题和你的回答”,但当前对话中没有显示之前的交互,所以可能需要依赖现有的引用内容。不过根据现有引用,用户可能对如何开发自己的上位机工具感兴趣,比如使用CAPL脚本或参考现有的代码库。 需要注意的是,用户可能不了解不同工具的具体功能、优缺点,或者如何获取这些工具。因此,回答中应分门别类,清晰列出工具类型、名称、特点、适用场景,并提供相关的资源链接或参考,如引用中的示例项目。 最后,生成相关问题时要围绕UDS工具的选择、开发、协议支持等方面,帮助用户进一步探索。比如,如何选择工具,开发注意事项,协议支持问题等。</think>### UDS诊断刷写上位机工具及软件推荐 #### 一、商业化工具推荐 1. **Vector CANoe/CANalyzer** - **特点**:支持完整的UDS协议栈,提供CAPL脚本开发环境,可定制诊断刷写流程[^1][^3]。 - **适用场景**:汽车电子开发、ECU刷写协议验证。 - **资源**:内置UDS诊断功能模块,可直接调用服务如`$10`(会话控制)、`$27`(安全访问)等。 2. **Peak CAN/PCAN-UDS** - **特点**:基于PCAN硬件,提供API接口和图形化界面,支持自动化脚本开发。 - **适用场景**:中小型企业的快速诊断刷写需求。 3. **Intrepid Control Systems (NeoVI/Vehicle Spy)** - **特点**:支持多协议(CAN、LIN、FlexRay),集成UDS诊断功能。 - **适用场景**:复杂车载网络环境下的ECU管理。 --- #### 二、开源/免费工具 1. **SavvyCAN + Python脚本** - **特点**:通过开源CAN分析工具结合Python库(如`python-uds`)实现基础诊断功能。 - **示例代码**: ```python from uds import Uds uds = Uds(transport="CAN", interface="socketcan", channel="can0") response = uds.send([0x10, 0x01]) # 进入默认会话 ``` 2. **Arduino/CAN-Bus Shield方案** - **特点**:低成本硬件配合开源库(如`arduino-canbus`),适合学习和小规模测试- **局限**:仅支持基础UDS服务,性能有限。 --- #### 三、定制开发方案 1. **基于CAPL脚本的CANoe工程** - **流程**: 1. 使用CAPL编写刷写流程(如预编程条件检查、数据下载、校验)[^1][^2]。 2. 集成`CDD/ODX`文件解析,实现动态服务配置。 - **参考项目**:引用[3]中的ECU升级参考代码,提供数据传输(`$34`、`$36`)和安全访问(`$27`)实现。 2. **Python/C# 上位机开发** - **库推荐**: - `python-can` + `python-uds`:开源协议栈。 - `Vector XL API`:商业级API,支持深度集成。 - **关键功能**: - 分段下载固件(通过`$34 RequestDownload`和`$36 TransferData`)[^3]。 - 刷写后校验(`$31 RoutineControl`)。 --- #### 四、工具选择建议 | 需求类型 | 推荐方案 | 成本 | 开发难度 | |-------------------|---------------------------|--------|----------| | 企业级量产 | Vector CANoe + CDD配置 | 高 | 低 | | 定制化协议 | CAPL脚本开发 | 中 | 中 | | 教育/实验 | SavvyCAN + Python | 低 | 高 | | 快速原型验证 | Intrepid Vehicle Spy | 高 | 低 | ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载网络测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值