【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分
总目录:(单击下方链接皆可跳转至专栏总目录)
《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014
目录
1 $0x34 RequestDownload诊断服务描述
2 0x34服务请求消息
2.1 0x34服务请求消息定义
2.2 0x34服务请求消息子功能参数$ Level(LEV_)定义
2.3 0x34服务请求消息数据参数定义
3 0x34服务肯定响应消息
3.1 0x34服务肯定响应消息定义
3.2 0x34服务肯定响应消息数据参数定义
4 0x34服务支持的否定响应代码(NRC_)
5 示例:0x34 RequestDownload服务消息流
附录:H.1 addressAndLengthFormatIdentifier示例值
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
点击返回「《Autosar从入门到精通-实战篇》总目录」
点击返回「《Autosar_BSW高阶配置》总目录」
点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏
RequestDownload(0x34) service请求下载服务
服务 |
SID |
描述 |
RequestDownload 读取DTC信息 |
0x34 |
client请求协商从client到server的数据传输。 |
1 $0x34 RequestDownload诊断服务描述
requestDownload服务被client用来启动从client到server的数据传输(下载)。
在server收到requestDownload请求消息后,server应采取所有必要的行动来接收数据,然后再发送一个positive response message肯定响应消息。
重要的是 - server和client应满足ISO 14229-1的7.5章节中规定的请求和响应消息行为。
2 0x34服务请求消息
2.1 0x34服务请求消息定义
表393 - 请求消息定义
A_Data byte |
参数名称 |
Cvt |
字节值 |
助记符 |
#1 |
RequestDownload Request SID 请求下载请求SID |
M |
0x34 |
RD |
#2 |
dataFormatIdentifier 数据格式标识符 |
M |
0x00 – 0xFF |
DFI_ |
#3 |
addressAndLengthFormatIdentifier 地址和长度格式标识符 |
M |
0x00 – 0xFF |
ALFID |
#4 : #(m-1)+4 |
memoryAddress[] = [ byte#1 (MSB) : byte#m ] |
M : C1 |
0x00 – 0xFF : 0x00 – 0xFF |
MA_B1 : Bm |
#n-(k-1) : #n |
memorySize[] = [ byte#1 (MSB) : byte#k ] |
M : C2 |
0x00 – 0xFF : 0x00 – 0xFF |
MS_B1 : Bk |
C1:这个参数的存在取决于addressAndLengthFormatIdentifier的地址长度信息参数。 C2:该参数的存在取决于addressAndLengthFormatIdentifier的memory size长度信息。 |
2.2 0x34服务请求消息子功能参数$ Level(LEV_)定义
此服务不使用子功能参数。
2.3 0x34服务请求消息数据参数定义
表394 - 请求消息数据参数定义
定义 |
dataFormatIdentifier数据格式标识符 这个数据参数是一个字节的值,每个nibble单独编码。high nibble指定 " compressionMethod压缩方法",low nibble指定 " encryptingMethod加密方法"。值0x00指定既不使用compressionMethod也不使用encryptingMethod。除了0x00以外的值是由vehicle manufacturer车辆制造商决定的。 |
addressAndLengthFormatIdentifier地址和长度格式标识符 该参数是一个字节值,每个nibble单独编码(见H.1的示例值): 位7 - 4: memorySize参数的长度(字节数) 位3 - 0: memoryAddress参数的长度(字节数)。 |
memoryAddress内存地址 参数memoryAddress是要写入数据的server memory的起始地址。这个地址使用的字节数由addressAndLengthFormatIdentifier的low nibble(bit 3 - 0)定义。memoryAddress参数中的Byte#m总是在server中被引用的地址中LSB(least significant byte)。地址中MSB(most significant byte)可以作为memory identifier使用。 一个使用memory identifier的例子是一个具有16位寻址和memory address重叠的双processor server (当一个给定的地址对任何一个处理器都有效,但产生了不同的physical memory device或使用了内部和外部flash)。在这种情况下,memoryAddress参数中一个未使用的字节可以被指定为memory identifier,用于选择所需的memory device。该功能的使用应按照车辆制造商/系统供应商的规定。 |
memorySize内存大小 这个参数应被server用来比较memory size和TransferData service期间传输的数据总量。这增加了programming编程的安全性。用于该大小的字节数由addressAndLengthFormatIdentifier的high nibble(第7-4位)定义。如果使用了数据压缩,memory size是否代表压缩或未压缩的大小是由车辆制造商决定的。 |
3 0x34服务肯定响应消息
3.1 0x34服务肯定响应消息定义
表395 - 肯定响应消息定义
A_Data byte |
参数名称 |
Cvt |
字节值 |
助记符 |
#1 |
RequestDownload Response SID 请求下载响应SID |
M |
0x74 |
RDPR |
#2 |
lengthFormatIdentifier |
M |
0x00 – 0xF0 |
LFID |
#3 : #n |
maxNumberOfBlockLength = [ byte#1 (MSB) : byte#m ] |
M : M |
0x00 – 0xFF : 0x00 – 0xFF |
MNROB_ B1 : Bm |
3.2 0x34服务肯定响应消息数据参数定义
表396 - 响应消息数据参数定义
定义 |
lengthFormatIdentifier长度格式标识符 这个参数是一个字节的值,每个nibble单独编码: 位7-4:maxNumberOfBlockLength参数的长度(字节数)。 位3-0:由文件保留,要设置为'0'。 该参数的格式与请求信息中包含的addressAndLengthFormatIdentifier参数的格式兼容,只是lower nibble必须被设置为'0'。 |
maxNumberOfBlockLength最大块长度 这个参数被requestDownload肯定响应消息用来通知client在server的每个TransferData请求消息中包含多少数据字节(maxNumberOfBlockLength)。这个长度反映了完整的消息长度,包括service identifier和TransferData请求消息中的数据参数。这个参数允许client在开始向server传输数据之前适应server的接收缓冲区大小。server需要接受长度等于其报告的maxNumberOfBlockLength的transferData请求。接受何种长度小于maxNumberOfBlockLength的transferData请求(如果有的话)是由server决定的。请注意,一个给定区块内的最后一个transferData请求可能被要求小于maxNumberOfBlockLength。server不允许写入不包含在transferData消息中的额外数据字节(即填充字节)(无论是以压缩或未压缩的格式),因为这将影响后续transferData请求数据写入的memory address。 |
4 0x34服务支持的否定响应代码(NRC_)
对于这项服务,应执行以下negative response code否定响应代码。表397中记录了每个响应代码会发生的情况。如果错误情况适用于server,应使用列出的negative response否定响应。
表397 - 支持的否定响应代码
NRC |
描述 |
助记符 |
0x13 |
incorrectMessageLengthOrInvalidFormat消息长度不正确或格式无效 如果信息的长度有误,则应发送该NRC。 |
IMLOIF |
0x22 |
conditionsNotCorrect条件不正确 如果server在接收软件或标定模块的下载过程中收到该服务的请求,应返回该NRC。如果在下载模块的过程中,server和client之间出现数据大小不匹配,就会出现这种情况。 |
CNC |
0x31 |
requestOutOfRange请求超出范围 如果出现以下情况,将返回这个NRC: 指定的dataFormatIdentifier是无效的。 指定的addressAndLengthFormatIdentifier是无效的。 指定的memoryAddress/memorySize是无效的。 |
ROOR |
0x33 |
securityAccessDenied安全访问被拒绝 如果在收到对该服务的请求时,server是安全的(对于支持SecurityAccess服务的server),应返回这个NRC。 |
SAD |
0x70 |
uploadDownloadNotAccepted上传下载不被接受 该NRC表明,由于某些故障条件,无法完成向server的memory下载的尝试。 |
UDNA |
评价顺序记录在图26中。
Key
1)至少5个(SI+DFI_+ALFID+最小MA_+最小MS_)。
2)长度可以从addressAndLengthFormatIdentifier中计算出来。
图26 - NRC处理请求下载服务
5 示例:0x34 RequestDownload服务消息流
详见以下博文:
【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例https://blog.csdn.net/qfmzhu/article/details/130895979
附录:H.1 addressAndLengthFormatIdentifier示例值
表 H.1 包含 addressAndLengthFormatIdentifier 的high和low nibble的值组合示例。需要考虑以下几点:
⎯对于“manageable memorySize”或“memoryAddress range”标记为“not applicable”的值,不允许使用,并且必须通过否定响应消息被server拒绝。
⎯此参数允许具有适用的“manageable memorySize”和“memoryAddress range”的值。
表H.1 - addressAndLengthFormatIdentifier示例
Byte Value |
Description |
|||
bit 7-4 (high nibble) number of memorySize bytes |
bit 3-0 (low nibble) number of memoryAddress bytes |
|||
bytes used for memorySize parameter |
manageable size |
bytes used for memoryAddress parameter |
addressable memory |
|
0x00 |
not applicable |
not applicable |
not applicable |
not applicable |
0x01 |
not applicable |
not applicable |
1 |
256 Byte - 1 |
0x02 |
not applicable |
not applicable |
2 |
64 KB - 1 |
0x03 |
not applicable |
not applicable |
3 |
16 MB - 1 |
0x04 |
not applicable |
not applicable |
4 |
4 GB - 1 |
0x05 |
not applicable |
not applicable |
5 |
1,024 GB - 1 |
0x06 – 0x0F |
: |
: |
: |
: |
0x10 |
1 |
256 Byte |
not applicable |
not applicable |
0x11 |
1 |
256 Byte |
1 |
256 Byte – 1 |
0x12 |
1 |
256 Byte |
2 |
64 KB – 1 |
0x13 |
1 |
256 Byte |
3 |
16 MB – 1 |
0x14 |
1 |
256 Byte |
4 |
4 GB – 1 |
0x15 |
1 |
256 Byte |
5 |
1,024 GB – 1 |
0x16 – 0x1F |
: |
: |
: |
: |
0x20 |
2 |
64 KB |
not applicable |
not applicable |
0x21 |
2 |
64 KB |
1 |
256 Byte – 1 |
0x22 |
2 |
64 KB |
2 |
64 KB – 1 |
0x23 |
2 |
64 KB |
3 |
16 MB – 1 |
0x24 |
2 |
64 KB |
4 |
4 GB – 1 |
0x25 |
2 |
64 KB |
5 |
1,024 GB – 1 |
0x26 – 0x2F |
: |
: |
: |
: |
0x30 |
3 |
16 MB |
not applicable |
not applicable |
0x31 |
3 |
16 MB |
1 |
256 Byte – 1 |
0x32 |
3 |
16 MB |
2 |
64 KB – 1 |
0x33 |
3 |
16 MB |
3 |
16 MB – 1 |
0x34 |
3 |
16 MB |
4 |
4 GB – 1 |
0x35 |
3 |
16 MB |
5 |
1,024 GB – 1 |
0x36 – 0x3F |
: |
: |
: |
: |
0x40 |
4 |
4 GB |
not applicable |
not applicable |
0x41 |
4 |
4 GB |
1 |
256 Byte – 1 |
0x42 |
4 |
4 GB |
2 |
64 KB – 1 |
0x43 |
4 |
4 GB |
3 |
16 MB – 1 |
0x44 |
4 |
4 GB |
4 |
4 GB – 1 |
0x45 |
4 |
4 GB |
5 |
1,024 GB - 1 |
0x46 -0xFF |
: |
: |
: |
: |
以上摘自《ISO 14229-1:2013》。
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。
【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分相关推荐
- 【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分
总目录:(单击下方链接皆可跳转至专栏总目录) <UDS/OBD诊断需求编辑工具>总目录https://blog.csdn.net/qfmzhu/article/details/123697 ...
- 统一诊断服务(UDS)
一.概述 统一诊断服务(Unified Diagnostic Services),简称UDS.是ISO 15765和ISO 14229定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的 ...
- 统一诊断服务(UDS)- 安全等级是怎么回事儿
统一诊断服务(UDS)- 安全等级是怎么回事儿 怎么解锁安全等级 安全等级如何与功能关联 上一篇<统一诊断服务(UDS)- 什么是安全访问>中介绍了安全访问的机制和应用场合.为了易于理解, ...
- UDS-统一诊断服务
什么是诊断服务? 在还没有诊断服务的时候,如果车辆故障,需要有经验的师傅长时间的摸排查找,费时费力.而车辆的ECU节点有了诊断模块后,就具有了诊断功能,这样车辆如果有了故障,就会自动生成故障代码储存在 ...
- 【UDS统一诊断服务】四、诊断典型服务(5)— 功能/元件测试功能单元(例行程序功能单元0x31)
文章目录 四.诊断典型服务(5)- 功能/元件测试功能单元(例行程序功能单元) "功能/元件测试功能单元(例行程序功能单元)"包括的服务: (1)RoutineControl (0 ...
- 深入理解统一诊断服务(UDS)ISO14229-1
诊断服务常用于诊断仪(客户端)和ECU(服务器)之间的会话控制.安全访问.例程控制.DTC读取,ECU软件刷写(软件下载)等,今天带大家深入理解统一诊断服务(Unified Diagnostic Se ...
- FlashBootloader00【诊断刷新必需的诊断服务】
文章目录 1 概述 2 诊断刷新的UDS服务 传送门 ==>> AutoSAR实战系列300讲「糖果Autosar」总目录 1 概述 为满足存储器刷新功能的要求,电控单元引导加载程序必须支 ...
- 服务治理·理论篇(一)
0.故事主角 呱呱乐 是一家互联网金融公司.主营现金贷.p2p理财.消费分期业务. 公司现有技术人员800名,系统极其庞杂,每日稳定处理25w左右的订单量,有抢购活动时,系统的QPS(Query Pe ...
- 邻接矩阵中啥时候写0和无穷_(一)UDS诊断服务中的诊断会话控制(DiagnosticSessionControl,0x10)...
诊断会话在服务器中启用一组特定的诊断服务和/或功能,此服务提供服务器可以报告对启用的诊断会话有效的数据链路层特定参数值(例如定时参数值)的功能. 基本用法: ISO 14229规定了几个特定的子功能, ...
最新文章
- 【转载】在对话框中加入属性页
- AMD正式公布第七代桌面级APU AM4新接口
- sqlserver Conversion failed when converting the nvarchar to data type int
- 使用lisp函数控制cursor
- MDK:assert_param函数未定义的错误:Error: L6218E
- Android鬼点子 CircleProgressView
- ASP.NET MVC中如何实现页面跳转
- IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)
- linux yum c 11,CentOS YUM源安装 GVM-11 (一)
- 2010计算机知识点总结,2010年全国职称计算机考试:知识点笔记第一章
- Oracle 修改密码 解锁
- python函数详细讲解_小白必看的Python函数讲解
- Hazelcast IMDG参考中文版手册-第一章-前言
- java实习找工作经历
- 视频监控的2017 有什么看头?
- 机器学习基础概念——过拟合和欠拟合
- Chainge橙子钱包跨链技术介绍
- Spring嵌套事务是怎么回滚的?
- c语言是否继续,怎样插入是否继续(y/n)这个语句!
- 大数据告诉你,世纪佳缘都是谁在相亲(python爬虫分析,附全部代码)
热门文章
- Openflow协议(以ping分析)
- 【Docker制作镜像】Linux制作以python为基础镜像,融合Flask框架和Redis数据库
- 人民日报推荐:极简主义生活方式
- vue跳转外部链接始终带localhost,而跳转失败
- A,B,C类基金我们应该怎么买
- 数字转成二进制,萌新向
- 西安链游开发 链游开发成本 链游开发周期
- boost::mpl元编程之高阶元函数演示
- aliyun yum
- 100个人围成一个圈(编号从1到100),然后报数,报到3的下去,然后从4开始继续从1开始报数,报到3的下去,依此类推,最后剩下人的编号是?