【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.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% |
三、关键测试场景详解
- TC3D16 大数据块写入验证
- 测试步骤:
- 构造8KB校准数据(包含CRC32校验)
- 发送
0x3D [0x44][4字节地址][数据块]
- 通过0x23服务读取验证
- 验证要点:
- 数据传输需支持多帧传输(ISO-TP)
- 校验和误差需为0
- TC3D14 数据对齐验证
- 测试流程:
- 发送
0x3D 0x11 0xA1 0x1234
(向非对齐地址写入字数据) - 监测ECU响应及内存状态
- 发送
- 校验规则:
- ARM Cortex-M系列需字对齐访问
- 未对齐访问应触发硬件异常
四、测试执行建议
- 工具链配置
// 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);
}
- NRC覆盖矩阵
NRC | 关联用例 | 触发条件 |
---|---|---|
0x12 | - | 无子功能参数,不适用 |
0x13 | TC3D06/TC3D07/TC3D13 | 长度错误 |
0x22 | TC3D15 | 并发操作冲突 |
0x31 | TC3D05/TC3D12 | 地址越界/只读区域 |
0x33 | TC3D03 | 安全访问未授权 |
0x72 | TC3D20 | 内存类型不匹配 |
0x7E | TC3D04 | 会话模式不匹配 |
五、特殊测试场景
- 混合地址格式控制
- 生产模式行为验证
测试项 | 标准要求 | 验证方法 |
---|---|---|
校准区写保护 | 仅允许授权工具 | 尝试写入0x08000000区域 |
安全访问锁止 | Level 3+权限 | 低安全等级尝试写入 |
说明:本测试用例集覆盖ISO 14229-1:2023 §7.3.7全部条款,并通过Vector CANoe 15.0+验证。
系列目标
系列目标:后续准备增加基于UDS诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
相关文章:
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二十节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(WriteMemoryByAddress_0x3D服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x3D服务、内存写入、ISO 14229-1:2023、ECU测试 一、服务功能概述…...

jemalloc 5.3.0的base模块的源码及调用链使用场景的详细分析
一、背景 这篇博客,我们继续之前的 由jemalloc 5.3.0初始化时的内存分配的分析引入jemalloc的三个关键概念及可借鉴的高性能编码技巧-CSDN博客 博客里对初始化分配逻辑进行分析,已经涉及到了jemalloc 5.3.0里的非常重要的base模块的一部分逻辑ÿ…...

ThreadLocal源码分析
文章目录 1.核心数据结构 ThreadLocalMap1.静态内部类 Entry2.真正存储数据的是table数组 2.ThreadLocal.set()方法源码详解1.set2.getMap3.ThreadLocalMap.set4.createMap5.rehash6.resize 3.ThreadLocalMap.get()详解1.get2.ThreadLocalMap.getEntry3.getEntryAfterMiss 4.Th…...
Python爬虫实战:获取笔趣阁图书信息,并做数据分析
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 1. 环境准备与反爬策略 python import requests from bs4 import BeautifulSoup import pandas as pd import re import time import random from fake_useragent …...
如何在Java EE中使用标签库?
在Java EE(现在称为Jakarta EE)中使用标签库(Tag Library),主要是通过JSP标准标签库(JSTL)或自定义标签库来实现的。标签库允许在JSP页面中使用自定义的标签,从而简化页面逻辑、增强…...

3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
前言 随着人工智能技术的迅猛发展,AI 赋能编程成为了必然趋势。通义灵码应运而生,它是阿里巴巴集团在人工智能与编程领域深度探索的结晶。通义灵码旨在借助 AI 的强大能力,为开发者提供更加智能、高效的编程辅助工具。通义灵码 2.0 作为其升…...

STM32 Flash详解教程文章
目录 Flash基本概念理解 Flash编程接口FPEC Flash擦除/写入流程图 Flash选项字节基本概念理解 Flash电子签名 函数读取地址下存放的数据 Flash的数据处理限制部分 编写不易,请勿搬运,感谢理解!!! Flash基本概念…...

ubuntu服务器部署
关闭欢迎消息 服务器安装好 ubuntu 系统后,进行终端登录,会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令,再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名,保…...

小爱音箱控制手机和电视听歌的尝试
最近买了小爱音箱pro,老婆让我扔了,吃灰多年的旧音箱。当然舍不得,比小爱还贵,刚好还有一台红米手机,能插音箱,为了让音箱更加灵活,买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…...

问卷数据分析|SPSS实操之独立样本T检验
适用条件: 检验分类变量和定量变量之间的差异 分类变量只能为二分类变量,如性别 1.选择分析--比较平均值--独立样本检验 2. 在下方选择性别(分类变量) 3. 点击定义组,组1输入1,组2输入2 4.在上方填入定量…...
Linux 内核 IPoIB 驱动中 sysfs 属性冲突问题的分析与解决
一、引言 在 Linux 内核的设备驱动开发中,sysfs 文件系统是一种重要的机制,用于向用户空间暴露内核对象的属性信息。通过 sysfs,用户空间程序可以读取或修改设备的属性,从而实现对硬件设备的监控和配置。然而,在实际开发中,可能会遇到 sysfs 属性冲突的问题,特别是在复…...
双ESP8266-01S通讯UDP配置
第一台ESP8266(发送命令需要勾---发送新行) ATCWMODE3 ATCWSAP_DEF"CAR_wifi_Master","12345678",5,3 //设置本地wifi名称以及密码 ATCIPSTA_DEF"192.168.4.1" //设置本地IP ATCIFSR …...

【C】初阶数据结构5 -- 栈
前面学习了两种最基本的数据结构 -- 顺序表和链表,接下来就可以基于这两种数据结构来实现其他数据结构了。其实,其他的数据结构的物理结构要么是数组,要么就是链表,所以学好顺序表和链表是学好其他数据结构的基础。接下里…...

闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体
闭源大语言模型的怎么增强 提示工程 检索增强生成 智能体 核心原理 提示工程:通过设计和优化提示词,引导大语言模型进行上下文学习和分解式思考,激发模型自身的思维和推理能力,使模型更好地理解和生成文本,增强其泛用性和解决问题的能力。检索增强生成:结合检索的准确…...
C语言-------结构体(1)
数据类型 (1)基本数据类型 整型 浮点型 字符型 (2)构造类型 数组 结构体 结构体: 用来处理,现实生活中,更复杂的数据的描述 用来 描述复杂数据的 一种用户自定义的数…...
org.apache.kafka.common.errors.TimeoutException
个人博客地址:org.apache.kafka.common.errors.TimeoutException | 一张假钞的真实世界 使用kafka-console-producer.sh向远端Kafka写入数据时遇到以下错误: $ bin/kafka-console-producer.sh --broker-list 172.16.72.202:9092 --topic test This is …...

Ceph集群搭建2025(squid版)
squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…...

DeepSeek从入门到精通:提示词设计的系统化指南
目录 引言:AIGC时代的核心竞争力 第一部分 基础篇:提示词的本质与核心结构 1.1 什么是提示词? 1.2 提示词的黄金三角结构 第二部分 类型篇:提示词的六大范式 2.1 提示语的本质特征 2.2 提示语的类型 2.2.1 指令型提示词 …...

python后端调用Deep Seek API
python后端调用Deep Seek API 需要依次下载 ●Ollama ●Deepseek R1 LLM模型 ●嵌入模型nomic-embed-text / bge-m3 ●AnythingLLM 参考教程: Deepseek R1打造本地化RAG知识库:安装部署使用详细教程 手把手教你:deepseek R1基于 AnythingLLM API 调用本地…...

自有证书的rancher集群使用rke部署k8s集群异常
rancher使用自签域名,或者商业证书容易踩到的坑。 最开始的报错: docker logs kubelet‘s id E0214 13:04:14.590268 9614 pod_workers.go:1300] "Error syncing pod, skipping" err"failed to \"StartContainer\" for …...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...