当前位置: 首页 > news >正文

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


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.9Level 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-无子功能参数,不适用
0x13TC3D06/TC3D07/TC3D13长度错误
0x22TC3D15并发操作冲突
0x31TC3D05/TC3D12地址越界/只读区域
0x33TC3D03安全访问未授权
0x72TC3D20内存类型不匹配
0x7ETC3D04会话模式不匹配

五、特殊测试场景

  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诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

http://www.lryc.cn/news/537188.html

相关文章:

  • jemalloc 5.3.0的base模块的源码及调用链使用场景的详细分析
  • ThreadLocal源码分析
  • Python爬虫实战:获取笔趣阁图书信息,并做数据分析
  • 如何在Java EE中使用标签库?
  • 3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • STM32 Flash详解教程文章
  • ubuntu服务器部署
  • 小爱音箱控制手机和电视听歌的尝试
  • 问卷数据分析|SPSS实操之独立样本T检验
  • Linux 内核 IPoIB 驱动中 sysfs 属性冲突问题的分析与解决
  • 双ESP8266-01S通讯UDP配置
  • 【C】初阶数据结构5 -- 栈
  • 闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体
  • C语言-------结构体(1)
  • org.apache.kafka.common.errors.TimeoutException
  • Ceph集群搭建2025(squid版)
  • DeepSeek从入门到精通:提示词设计的系统化指南
  • python后端调用Deep Seek API
  • 自有证书的rancher集群使用rke部署k8s集群异常
  • 【线性代数】1行列式
  • DeepSeek免费部署到WPS或Office
  • 数据结构 二叉树
  • 鸿蒙开发:熟知@BuilderParam装饰器
  • 光谱相机在天文学领域的应用
  • 不到1M的工具,使用起来非常丝滑!
  • 软考高级《系统架构设计师》知识点(二)
  • 深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
  • 云原生AI Agent应用安全防护方案最佳实践(上)
  • Java Virtual Machine(JVM)
  • vue前端可视化大屏页面适配方案