【AUTOSAR】UDS协议的代码分析与解读(十一)----UDS例程控制31h请求下载 34h

news2024/11/24 14:11:32

8.15 例程控制 RoutineControl (31h)

服务用于启动程序 、停止程序和请求程 序执行结果。例程由 两字节的例程标识符 (RoutineIdentifier)来确定

8.15.1 报文格式

 71 例程控制服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

31

#2

Sub-Function=[

RoutineControlType]

M

00-7F

#3

#4

RoutineIdentifier[]=[

byte#1(MSB)

byte#2]

M

M

00-FF

00-FF

#5

#n

RoutineControlOptionRecord[]=[

routineControlOption#1

routineControlOption#m]

C/U

C/U

00-FF

00-FF

C:此参数是子功能参数startRoutinestopRoutine的用户选择项。

 72 例程控制服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

71

#2

RoutineControlType

M

00-7F

#3

#4

RoutineIdentifier[]=[byte#1(MSB)

byte#2]

M

M

00-FF

00-FF

#5

#n

RoutineStatusRecord[]=[routineStatus#1

routineStatus#m]

U

U

00-FF

00-FF

8.15.2 支持的否定响应码

73 例程控制服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

如果子功能参数不支持,发送此否定响应码。

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

M

条件不满足

如果请求例程控制的条件不满足,发送此否定响应码。

24

C

请求序列错

如果被请求例程标识在接收启动例程子功能之前接收到停止例程请求例 程结果子功能,发送此否定响应码

31

M

请求超出范

下情况时,发送此否定响应码:

1.ECU不支被请求的例程标识;                                  2.对于被请求例程标识符,用户选择的例程控制选项记录包含无效数据。

33

M

安全访问拒绝

如果诊断工具发送一个带有安全例程标识符的请求且ECU的安全特性为激 活,发送此否定响应码。

72

M

一般编程错误

ECU执行一个访问ECU存储器的例程时监测到错误, 发送此否定响应码。例 如, 当例程对位于永久性存储器(如Flash内存) 上的某些存储单元进行擦除或编 ,以及访问存储单元时出错。

8.15.3 参数定义

 74 例程控制参数的定义

Hex

Description

Cvt

01

startRoutine

U

02

stopRoutine

U

03

requestRoutineResults

U

8.15.4 执行规定

如果当前存在任对于操作者、驾驶员及乘客安全的隐患,系统必须保证在例程执行前满足必须的 前提条件。不同的例程执行条件由ECU/系统供应商定义。

8.16 请求下载 RequestDownload (34h)

服务初始化ECU的数据传输(下载)功能。

接收此服务的请求报文时, ECU应在发送肯定响应报文前, 需采取所有必要动作用于数据接收。

8.16.1 报文格式

 75 请求下载服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

34

#2

DataFormatIdentifier

M

00-FF

#3

addressAndLengthFormatIdentifier

M

44

#4

#5

#6

#7

MemoryAddress[]=[

byte#1(MSB)

byte#2

byte#3

byte#4(LSB)]

M

00-FF

#8

#9

#10

#11

MemorySize[]=[

byte#1(MSB)

byte#2

byte#3

byte#4(LSB)]

M

00-FF

 76 请求下载服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceIdentifier

M

74

#2

LengthFormatIdentifier

M

00-F0

#3

#n

MaxNumberOfBlockLength[

byte#1(MSB)

byte#m]

M

00-FF

8.16.2 支持的否定响应

77 请求下载服务的否定响应码

Hex

Cvt

ErrorText

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

U

条件不满足

如果ECU在接收软件或标定模块的下载过程中收到请求,发送此否定响应 。这可能发生在模块下载时ECU和诊断工具的数据大小不匹配。

31

M

请求超出范

如下况时,发送此否定响应码:                             1.指定数据格式标识(dataFormatIdentifier)无效;                  2.指定地址和长度格式标识(addressAndLengthFormatIdentifier)无效; 3.指定内存地址/内存大小(memoryAddress/memorySize)无效。

33

M

安全访问拒绝

如果接收此服的请求时ECU处于保护状态(ECU支持安全访问服务),发 否定响应码。

70

M

上传/下载操作拒绝

ECU由于某种故障而拒绝诊断工具的下载操作时,发送此否定响应码。

8.16.3 参数定义

a) 参数内存地址的长度应为4字节

b) 此地址可以表示ECU内的物理地址, 也可以是映射地址(例如,用高位实现存储器地址选择)。

然而, 如果不是物理地址,映射关系应在ECU诊断文档中明确说明。

c) 数据格式标识(DataFormatIdentifier) 包含两个半元组, 左半元组表示压缩方法, 右元组表示加 密算法。如果没有应用压缩或加密,相应位置为0。数据格式标识(DataFormatIdentifier) 应至少支持00

图 10DataFormatIdentifier 数据结构

d)地/长度格式标识符(addressAndLengthFormatIdentifier)为一个字节, 分为两部分:

1) bit7~4 MemorySize参数的长度(字节数)

2) bit3~0 MemoryAddress参数的长度(字节数)

e) MemoryAddress参数是数据写入ECU内存的起始地址。

f) MemorySize参数应被ECU用于比较未压缩内存大小和TransferData服务中传输数据的大小。

memorySize所占的字节数由addressFormatIdentifier的高半元组(bit7~4)定义。

g) MaxNumberOfBlockLength参数用于定响应中ECU指示诊断工具每个数据传输(TransferData) 请求服务中所包含数据的长度(字节数)

8.16.4 执行规定

此服务没有特殊的执行规定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部署运行jar包方法全解docker镜像打包部署等

基本方法 java -jar 对应的jar包名字 永久后台方法 有一种叫做“nohup”的命令,该命令可以让您的应用程序在后台运行,即使您已经断开了与终端的连接也能保持运行状态。 nohup 命令的语法为: nohup command arg1 arg2 ... argN &其中…

金三银四互联网大厂秋招精选 1160 道 Java 面试题答案整理(2023 最新版)

今年的大环境而言,面试成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底和基础。Java 基础掌握不牢,对于一个开发人员来说…

北斗高精度定位赋能智慧港口,千寻位置解决方案落地应用

港口是交通运输的重要节点,也是国家经济发展的重要支撑,其作业效率直接影响着运营效益。随着全球数字化技术的不断革新,我国港口逐渐从传统模式向智能化、数字化的“智慧模式”转变。在这一转型过程中,高精度技术应用的作用愈发重…

伊朗上下5000年简史

提起伊朗,你脑海中首先浮现的是什么? 混乱、保守、战争?穆斯林?抑或是石油,核武器? 这些附着在伊朗头上的标签,使很多人忽略了,它是一个拥有着5000年历史的文明古国;在…

保护视力的软件:定时提醒你休息的桌面工具EyeLeo

文章目录 保护视力的软件:定时提醒你休息的桌面工具EyeLeo什么是EyeLeo为什么要使用?它为什么如此重要?EyeLeo特征 使用说明 保护视力的软件:定时提醒你休息的桌面工具EyeLeo 什么是EyeLeo 官网:http://www.eyeleo.c…

django新手教程

Django简介 Django是开源的、大而且全的Web应用框架。 它独具特色,采用了MTV设计模式。 它也是一款用来构建服务器的框架。这一概念如何理解呢? 应用程序有两种模式:C/S、B/S。 C/S是客户端与服务器端,这类程序一般能独立运行…

【Python】高级语法:推导式、迭代器、生成器、装饰器

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、推导式1.列表推导式2.集合推导式3.字典推导式 二、迭代器三、生成器1.yield 生成器2.元组生成器3.生成器中重要方法 四、装饰器1.函数装饰…

谈谈电商API!

近年来,随着互联网和移动互联网技术的不断发展,电商行业成为了一种新兴的商业模式。电商平台实现了互联网和商品销售的深度融合,成为经济社会发展的重要组成部分。而电商API(Application Programming Interface, 应用程序接口&…

RobotFrameWork Web自动化测试之测试环境搭建

前言 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD&#xff…

自然语言处理实战项目11-阅读理解项目的数据处理与训练详细讲解,实验结果与分析

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目11-阅读理解项目的数据处理与训练详细讲解,阅读理解任务目标是让计算机从给定的文章中理解并回答问题。为了完成这个任务,我们需要对给定的数据进行处理和训练。该任务是…

项目调研丨多区块并行处理公链 Transformers 研究报告

目录 一、项目简介 二、项目愿景 三、特色和优势 (1)速度 (2)安全 (3)可扩展性 (4)高度定制 (5)不可篡改 (6)所有数据公开透…

怎么防止数据重放攻击——CBC模式【密码学】(7)

目录 一、什么是CBC模式 二、初始化向量 三、异或运算 四、密钥少一位会有影响吗 一、什么是CBC模式 CBC模式中,明文分组在加密前,要与前一组的密文分组进行异或运算,异或运算的结果参与加密函数的运算。 每一个密文分组,都…

解决谷歌翻译无法使用

谷歌翻译无法使用是谷歌官方关闭了中国地区翻译服务。 废话不多说直接上教程,本质就是通过修改hosts文件让translate.googleapis.com域名的IP解析到国内的谷歌服务器IP,网上大部分的教程也是如此。 但是有个问题就是这个IP不稳定可能用了几天就不用了&am…

leetcode 150. 逆波兰表达式求值

2023.6.20 后缀表达式也是栈的经典应用&#xff0c;注意好细节就行&#xff0c;下面直接上代码&#xff1a; class Solution { public:int evalRPN(vector<string>& tokens) {stack<long long> stk;long long result 0;for(int i0; i<tokens.size(); i){i…

兼容性测试对于软件测试来说重要吗?

该测试是软件测试的一个重要部分&#xff0c;它也获得了越来越多的关注和重视。那么&#xff0c;兼容性测试对于软件测试来说重要吗&#xff1f;我们一起往下了解。 首先&#xff0c;兼容性测试可以确保软件在不同的操作系统、硬件平台和设备上能够正常运行。在产品开发过程中&…

Git进阶系列 | 2. Git中的分支策略

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第2篇。原文&#xff1a;Branching Strategies in Git[1] 几乎所有的版本控制系统(VCS)都有某种类型的…

【开发细节】SpringBoot项目将接口从HTTP换为HTTPS

证书准备 首先需要生成一个 SSL 证书&#xff0c;可以使用 OpenSSL 工具或者自己的 CA 颁发机构来生成证书&#xff0c;这里就不赘述了。如果是测试阶段&#xff0c;也可以使用 self-signed certificate。 直接使用jdk的keytool生成&#xff0c;具体操作方法如下&#xff1a; …

一个好看美观的登录注册界面的实现

序言&#xff1a;之前介绍那个博客&#xff0c;然后自己搞了这个界面。最近有人和我要&#xff0c;把代码给大家贴出来&#xff0c;提供参考。 首先是这个界面哈 <!DOCTYPE html> <html lang"en"> <head><script src"../static/lib/jquer…

不走弯路!记一个Appium框架运行的实例

目录 前言&#xff1a; 一、框架环境安装 二、测试流程操作 1、安装APK 2、启动 3、服务参数配置 4、脚本录制操作 5、脚本编写 6、脚本执行 三、测试总结 前言&#xff1a; Appium是一个开源的自动化测试框架&#xff0c;用于移动应用程序的自动化测试。它支持在iOS和Andro…

python:使用Scikit-image库的slic函数分割遥感图像

作者:CSDN @ _养乐多_ 本文记录了使用Scikit-image库的skimage.segmentation模块中的slic函数,进行超像素分割的代码。 文章目录 一、slic函数详解二、代码一、slic函数详解 在Scikit-image库的skimage.segmentation模块中,slic函数用于进行超像素分割。该函数的参数含义如…