【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 …...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
