【车载开发系列】UDS诊断---请求下载($0x34)

本文介绍了UDS诊断协议中的请求下载服务($0x34),解释了该服务的概念及应用场景,详细解析了请求与响应报文的格式,并列举了常见的否定响应码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【车载开发系列】UDS诊断—请求下载($0x34)

一.概念定义

请求下载就是RequestDownload(34h)。也是一个比较常用的服务。
诊断工具使用此服务初始化从诊断工具到ECU的数据传输(下载)。
接收到此服务的请求报文时,ECU应在发送肯定响应报文前,采取所有必要动作用于数据接收。

二.产生背景

车ECU中用于缓存诊断服务数据的缓存大小是有限的。所以当我们需要读取或写入超过缓存大小的数据时,就无法简单地使用2E和22服务了,UDS据此定义了如下的几个将大块数据写入或读出的服务,即数据下载和上传。

服务SID说明
RequestDownload0x34请求下载数据,诊断工具向ECU请求下载数据
RequestUpload0x35请求上传数据,诊断工具向ECU请求上传数据
TransferData0x36数据传输,诊断工具向ECU传数据(下载),或者ECU向诊断工具传数据(上传)
RequestTransferExit0x37数据传输完成,请求退出
RequestFileTransfer0x38请求文件传输,可以用于替代上传下载的服务

三.报文格式

  1. 发送:10 0B 34 00 44 00 10 00 00(起始地址) 00 00 04 98(内存大小) 数据有0x0498 = 1176字节
  2. 响应:04 74 20 00 82(每次数据传输包能接收最多130个字节)

1)请求报文

  1. DataFormatIdentifier就是数据格式标识。它包含两个半元组,左半元组表示压缩方法,右元组表 示加密算法。如果没有应用压缩或加密,相应位置为0。数据格式标识(DataFormatIdentifier)应至少支持00。
  2. addressAndLengthFormatIdentifier每半个字节单独编码,这里44是可变的。
    • 高半字节指定“内存大小”参数的长度
    • 低半字节指定“内存地址”参数的长度
  3. memoryAddress代表内存地址的起始地址,取决于addressAndLengthFormatIdentifier低半字节
  4. memorySize代表内存大小,取决于addressAndLengthFormatIdentifier高半字节
  5. addressAndLengthFormatIdentifier在$0x23服务中也可以找到相应的参照。
    在这里插入图片描述

2)肯定响应

  1. lengthFormatIdentifier每半个字节单独编码。高半字节指定maxNumberOfBlockLength,低半字节设置为0保留
  2. maxNumberOfBlockLength长度取决于lengthFormatIdentifier的高半字节,此参数包括完整的消息长度(服务ID+blocksequencecounter(1字节))
    在这里插入图片描述
    这里的maxNumberOfBlockLength字节长度不定,表示0x36服务一次传输一个block的最大的字节数。如:maxNumberOfBlockLength=0x0202,则应用层36服务一次最多发送字节数为0x202(字节数:0x202 >= 36 (1byte)+ parameter(x个byte))。

3)否定响应

在这里插入图片描述
常用的否定响应码如下,当然实际不止以下这些。

SID说明描述
0x13报文长度错误incorrectMessageLengthOrInvalidFormat
0x31请求超出范围requestOutOfRange
0x33安全访问拒绝securityAccessDenied
0x70上传/下载操作拒绝uploadDownloadNotAccepted
<think>我们正在处理用户关于车载网络测试中UDS#10服务的查询。根据用户要求,我们需要提供清晰的结构化回答,并生成相关问题。同时,我们需要遵循系统级指令,特别是关于数学表达式和引用格式的要求。根据用户提供的引用内容:[^1]提到UDS诊断服务位于应用层,服务ID(SID)和参数包含在CAN数据帧的数据字节中。[^2]提到CANoe工具用于多种总线网络开发环境,包括CAN、LIN等。用户具体询问的是UDS#10服务(即诊断会话控制服务)的测试笔记。我们需要构建一个关于UDS#10服务的回答,包括:1.UDS#10服务的基本介绍2.该服务的请求和响应格式3.测试要点或测试方法4.可能的测试工具(如CANoe)的使用由于用户要求生成相关问题,我们将在回答后提供几个相关问题。注意:我们应使用中文回答,并确保所有数学表达式(如果有)使用正确的LaTeX格式。由于UDS#10服务是诊断服务的一部分,我们根据已知知识进行回答,并参考提供的引用内容。回答结构:1.介绍UDS#10服务2.详细说明请求和响应3.测试方法4.测试工具的使用(如CANoe)5.总结然后生成相关问题。开始回答:</think>### 车载网络 UDS #10 服务(诊断会话控制)测试笔记 #### 一、UDS #10 服务基础 UDS(Unified Diagnostic Services)#10 服务是诊断会话控制(Diagnostic Session Control)的核心服务,用于切换 ECU 的诊断会话模式。其服务标识符为 `0x10`,位于应用层(ISO 14229-1)[^1]。 **会话模式分类**: 1. **默认会话**(Default Session, `0x01`) - 基础诊断模式,ECU 上电后自动进入 - 仅支持少量安全等级较低的服务(如读取DTC) 2. **编程会话**(Programming Session, `0x02`) - 用于 ECU 固件刷写 - 需配合安全访问服务(#27) 3. **扩展会话**(Extended Session, `0x03`) - 支持高级诊断功能(如动态数据读写) - 需定时发送 `0x3E` 服务维持会话 #### 二、请求与响应格式 1. **请求报文结构**(CAN 数据帧) ``` [0]:SID = 0x10 [1]:目标会话模式(0x01/0x02/0x03) ``` *示例请求*:`10 03`(切换到扩展会话) 2. **肯定响应**(Positive Response) ``` [0]:SID + 0x40 = 0x50 [1]:当前激活的会话模式 [2-3]:P2_Server_max(服务端最大响应时间,单位ms) ``` *示例响应*:`50 03 00 C8`(扩展会话,P2_Server_max=200ms) 3. **否定响应**(Negative Response) 若请求无效,返回 `7F 10 [NRC]`,常见否定码: - `0x12`:子功能不支持 - `0x22`:条件不满足 #### 三、测试要点与用例 1. **会话切换验证** - 测试目标:确保 ECU 能正确切换会话模式 - 测试步骤: ```python # 伪代码示例(基于CANoe CAPL) sendRequest(0x10, 0x03) // 请求扩展会话 checkResponse(0x50, 0x03) // 验证响应 ``` - 预期:响应时间 ≤ P2_Server_max 2. **会话超时测试** - 触发条件:会话激活后停止发送 `0x3E`(Tester Present) - 预期行为: - 扩展/编程会话超时后自动回退到默认会话 - 超时时间需符合 OEM 规范(通常 2-5 秒) 3. **安全依赖验证** - 关键项:编程会话需先通过安全访问(#27 服务) - 测试方法: ``` 步骤1:直接发送 10 02(不进行安全解锁) 步骤2:验证否定响应 7F 10 33(安全访问被拒) ``` #### 四、测试工具配置(以 CANoe 为例) 1. **诊断描述文件导入** - 加载 CDD/ODX 文件定义诊断参数[^2] 2. **自动化测试脚本** ```python # CANoe XML 测试模块示例 <test_case name="Session_Control_Test"> <send> 10 03 </send> <!-- 请求扩展会话 --> <expect> 50 03 </expect> <!-- 预期响应 --> <timeout> 200 </timeout> <!-- 超时阈值 --> </test_case> ``` 3. **关键监测节点** - 使用 `Trace` 窗口实时捕获诊断报文 - 通过 `Graphics` 模块绘制会话状态切换时序图 #### 五、常见问题与解决 - **问题**:ECU 频繁退出扩展会话 **原因**:未按周期发送 `0x3E` 服务(建议周期 ≤ 0.5 × P2_Server_max) - **问题**:编程会话请求被拒绝 **排查**:检查安全种子算法是否匹配 OEM 规范 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的横打

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

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

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

打赏作者

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

抵扣说明:

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

余额充值