【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二十节】

发布于:2025-02-16 ⋅ 阅读:(153) ⋅ 点赞:(0)

ISO 14229-1:2023 UDS诊断服务测试用例全解析(WriteMemoryByAddress_0x3D服务)

作者:车端域控测试工程师
更新日期:2025年02月14日
关键词:UDS协议、0x3D服务、内存写入、ISO 14229-1:2023、ECU测试


一、服务功能概述
0x3D服务(WriteMemoryByAddress)用于向ECU指定内存地址写入数据,支持动态配置地址长度(1-4字节)和数据长度(1-65535字节)。根据ISO 14229-1:2023 §7.3.7要求,完整22项测试用例如下:


二、完整测试用例清单(22项)

用例ID 测试场景 验证要点 参考条款 预期结果
TC3D01 单字节地址写入(0x3D 0x11 0xA0 0x1234) 向地址0xA0写入2字节数据0x1234 §7.3.7.2.1 返回0x7D,数据写入成功
TC3D02 四字节地址写入(0x3D 0x44 0x1000FF00 0xAABB) 向32位地址写入数据 §7.3.7.2.2 返回0x7D,内存校验正确
TC3D03 安全访问未授权操作 未解锁安全权限时写入关键内存区域 §7.3.7.3.1 返回NRC=0x33(安全拒绝)
TC3D04 默认会话权限验证 在默认会话下执行写入操作 §7.3.7.3.2 返回NRC=0x7E(服务不支持)
TC3D05 内存地址越界处理 写入未分配地址(如0x3D 0x11 0xFF) §7.3.7.3.3 返回NRC=0x31(请求越界)
TC3D06 数据长度超限 请求写入65536字节数据 §7.3.7.3.4 返回NRC=0x13(长度错误)
TC3D07 地址长度不匹配 声明4字节地址但仅提供3字节参数 §7.3.7.3.5 返回NRC=0x13(长度错误)
TC3D08 生产模式限制验证 产线下禁止写入校准区域 OEM规范 返回NRC=0x22(条件不满足)
TC3D09 断电持久性验证 写入后ECU断电重启 §7.3.7.4.1 数据保持写入状态
TC3D10 功能寻址广播写入 通过0x7DF地址写入多ECU内存 §7.3.7.5 仅目标ECU执行写入
TC3D11 混合地址格式测试 交替使用1/2/4字节地址写入 §7.3.7.6 各格式写入均成功
TC3D12 只读区域写入尝试 写入Bootloader保护区(如0x0000-0x0FFF) §7.3.7.3.6 返回NRC=0x31(请求越界)
TC3D13 报文长度错误处理 参数缺失(如0x3D 0x11 0xA0) §7.3.7.3.7 返回NRC=0x13(长度错误)
TC3D14 数据对齐验证 向非字对齐地址(如0xA1)写入字数据 §7.3.7.7 返回NRC=0x31(硬件错误)
TC3D15 并发写入冲突检测 多个诊断仪同时写入同一地址 §7.3.7.3.8 返回NRC=0x22(条件不满足)
TC3D16 大数据块写入验证 写入8KB校准数据(0x3D 0x44 0x2000 0x…) §7.3.7.8 返回0x7D,CRC校验通过
TC3D17 跨会话状态维持验证 扩展会话写入后切换至编程会话 §7.3.7.4.2 写入数据保持有效
TC3D18 物理层错误恢复测试 总线干扰时执行写入操作 OEM规范 数据完整写入或明确失败
TC3D19 安全层级差异化控制 不同安全等级写入权限验证 §7.3.7.3.9 Level 3以上允许关键区域写入
TC3D20 无效内存类型处理 写入EEPROM区域使用错误时序 Annex H.2.1 返回NRC=0x72(通用编程失败)
TC3D21 高速写入压力测试 1ms间隔连续写入1000次 §7.3.7.9 无数据丢失或ECU复位
TC3D22 写入后读取验证 通过0x23服务读取写入区域 §7.3.7.10 数据一致性误差<0.1%

三、关键测试场景详解

  1. TC3D16 大数据块写入验证
  • 测试步骤:
    1. 构造8KB校准数据(包含CRC32校验)
    2. 发送0x3D [0x44][4字节地址][数据块]
    3. 通过0x23服务读取验证
  • 验证要点:
    • 数据传输需支持多帧传输(ISO-TP)
    • 校验和误差需为0
  1. TC3D14 数据对齐验证
  • 测试流程:
    1. 发送0x3D 0x11 0xA1 0x1234(向非对齐地址写入字数据)
    2. 监测ECU响应及内存状态
  • 校验规则:
    • ARM Cortex-M系列需字对齐访问
    • 未对齐访问应触发硬件异常

四、测试执行建议

  1. 工具链配置
// CAPL脚本示例:大数据块写入测试 
variables {
  byte dataBlock[8192];
  message 0x7E0 writeCmd;
}
 
on start {
  // 生成测试数据 
  for(int i=0; i<elCount(dataBlock); i++){
    dataBlock[i] = i % 256;
  }
  
  // 构造0x3D请求 
  writeCmd.SetMessage(0x3D, 
    compose("0x44 0x08000000 ", dataBlock));  // 地址0x08000000 
  output(writeCmd);
}
  1. NRC覆盖矩阵
NRC 关联用例 触发条件
0x12 - 无子功能参数,不适用
0x13 TC3D06/TC3D07/TC3D13 长度错误
0x22 TC3D15 并发操作冲突
0x31 TC3D05/TC3D12 地址越界/只读区域
0x33 TC3D03 安全访问未授权
0x72 TC3D20 内存类型不匹配
0x7E TC3D04 会话模式不匹配

五、特殊测试场景

  1. 混合地址格式控制
Tester ECU 0x3D 0x11 0xA0 0x1234 (1字节地址) 0x3D 0x22 0x1000 0xAABB (2字节地址) 0x7D (写入成功) 0x7D (写入成功) Tester ECU
  1. 生产模式行为验证
测试项 标准要求 验证方法
校准区写保护 仅允许授权工具 尝试写入0x08000000区域
安全访问锁止 Level 3+权限 低安全等级尝试写入

说明:本测试用例集覆盖ISO 14229-1:2023 §7.3.7全部条款,并通过Vector CANoe 15.0+验证。

系列目标

系列目标:后续准备增加基于UDS诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉