【车载开发系列】AutoSar当中的诊断会话控制

【车载开发系列】AutoSar当中的诊断会话控制

【车载开发系列】AutoSar当中的诊断会话控制

  • 【车载开发系列】AutoSar当中的诊断会话控制
    • 一. 什么是诊断会话控制服务
    • 二. 会话模式分类
    • 三. 会话的接口
      • 1)获取当前会话状态
      • 2)设置会话状态
      • 3)返回默认会话
      • 4)会话的变更
    • 四. 配置会话层时间参数
    • 五. 会话的配置
      • 1)DcmDsdService
      • 2)DcmDspSession
      • 3)DcmDspSessionCallback

一. 什么是诊断会话控制服务

DiagnosticSessionControl,SID是0X10,主要功能是控制服务端的会话模式切换。一般默认上电后是在默认会话模式下,当某一个服务端正在运行时,只会出现一个会话模式,不会同时存在两个会话模式。

二. 会话模式分类

常用的会话模式有如下几种:
1)默认会话
01 Default Session,仅支持信息的读取和查询操作,权限最小。DCM模块初始化完成后,诊断会话进入缺省会话。
当服务端在默认会话模式下收到默认会话的请求时,服务端应当重新初始化默认会话,即之前被临时激活或者改变的数据都应该恢复到刚上电初始化的状态,写入到非易失存储器(断电数据不会消失的存储器)的数据不会重新初始化。
2)编程会话
02 Programming Session 顾名思义这个是用来烧录程序的。一般来说诊断(UDS)刷写功能需要在编程会话下进行。
3)扩展会话
03 Extended Session,主要是用来读写数据,如写入VIN,序列号,读写诊断码等。
涉及到NVM关键存储数据的写功能需要在扩展会话下进行。
4)其他会话
根据实际需求可以自己定义会话,比如定义0x60(EOL session)专门用于EOL工厂下线处理(关于EOL下线)。

三. 会话的接口

DSL子模块应该保存当前激活的会话状态。
为了访问这个变量,DSL 子模块提供了以下接口来获取/设置会话状态:

1)获取当前会话状态

Std_ReturnType Dcm_GetSesCtrlType(Dcm_SesCtrlType* SesCtrlType)
参数:SesCtrlType:获取的会话状态值存放到SesCtrlType指针指向的内存。
返回值:总是返回E_OK
功能描述:获取会话状态值。

2)设置会话状态

DslInternal_SetSesCtrlType()

3)返回默认会话

函数原型:
Std_ReturnType Dcm_ResetToDefaultSession(void)
返回值:总是返回E_OK
功能描述:将当前会话状态切换到default默认状态。
允许应用程序将当前会话重置为默认会话,并通过调用SchM_Switch__DcmDiagnosticSessionControl(RTE_MODE_DcmDiagnostic SessionControl_DCM_DEFAULT_SESSION) (invokes)调用 ModeDeclarationGroupPrototype DcmDiagnosticSessionControl 的模式切换。
比如超出速度限制时自动终止扩展诊断会话时,就调用这个函数。

4)会话的变更

那什么时候会发生会话更改呢?

  1. 发送诊断请求DiagnosticSessionControl ($10) 服务的时候
  2. S3定时器发生超时的时候,S3定时器是配置会话层的时间参数,将在下面介绍其定义。

四. 配置会话层时间参数

从缺省会话进入非缺省会话后,S3Server定时器就会开始计时(只要收到诊断请求报文就会清零),如果定时器超时(S3Server),DSL模块就会将会话状态切换到缺省会话状态。
P2ServerMin, P2ServerMax, P2ServerMin, P2ServerMax, S3Server这些参数值将会影响DCM模块的诊断响应时序。P2ServerMin=0, P2*ServerMin=0, S3Server = 5为固定值。协议参数影响诊断会话层的时序,不会影响到传输层时序

Parameters 参数Description 描述Min. 最小值Max. 最大值
P2CAN_Server服务器从接收到请求报文到开始发送应答报文之间的间隔时间。050 ms
P2*CAN_Server服务器从发送应答代码为0x78的否定应答报文到开始发送下一个应答报文之间的间隔时间(增强型应答时序)05000ms

对于增强型应答时序,连续的应答代码为0x78 的否定应答报文之间的传输最小时间间隔应为1/2 P2* CAN_Server_max,最大误差为±20 %。
在这里插入图片描述

五. 会话的配置

在这里插入图片描述

1)DcmDsdService

/Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceTable/DcmDsdService
的配置项,增加响应的服务,此处是DiagnosticSessionControl ($10)服务。

DcmDsdServiceTables可以包含多个服务表,常用的UDS和OBD服务表,此处新建的是UDS服务表DcmDsdUdsServiceTable。
1、勾选DcmDsdSidTabSubfuncAvail,它表示此服务是否包含子功能
2、通过DcmDsdSubServices可以增加相应的会话层子功能

2)DcmDspSession

容器DcmDspSession: 父容器保存单行来配置特定的会话。
DiagnosticSessionControl ($10)服务的每一个子功能对应一个会话Level。024/

3)DcmDspSessionCallback

为了获得更好的 DCM 集成灵活性,还可以通过简单的函数调用通知位于 CDD 中的应用程序。
通过配置
/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DcmDspSessionCallback

/Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DcmDspSessionCallback/DcmDspSessionCallbackFnc,它们将指定当DcmDiagnosticSessionControl 切换时由 DCM 调用的回调函数。
函数原型:
void 「DcmDspSessionCallbackFnc」 (Dcm_SesCtrlType previousSesCtrlId, Dcm_SesCtrlType newSesCtrlId)
previousSesCtrlId
指定以前的诊断会话 ID(转换的源状态)newSesCtrlId
指定新的诊断会话 ID(转换的目标状态)
返回值:void
功能说明:将在诊断会话状态转换时调用
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《GitHub Copilot 操作指南》课程介绍

第1节:GitHub Copilot 概述 一、什么是 GitHub Copilot 什么是 GitHub Copilot GitHub Copilot是GitHub与OpenAI合作开发的编程助手工具,利用机器学习模型生成代码建议。它集成在开发者的集成开发环境(IDE)中,可以根…

线性代数:矩阵运算(加减、数乘、乘法、幂、除、转置)

目录 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式,证明:|AB| |A| |B| 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式,证明:|AB| |A| |B|

Vscode 顶部Menu(菜单)栏消失如何恢复

Vscode 顶部Menu(菜单)栏消失如何恢复? 首先按一下 Alt按键,看一下是否恢复了菜单栏如果恢复了想了解更进一步的设置,或是没能恢复菜单栏,可以看后续。 1.首先点击左下角 齿轮,打开settings; 或者 直接 ctrl 逗号 …

HackTheBox - Medium - Linux - Noter

Noter Noter 是一种中型 Linux 机器,其特点是利用了 Python Flask 应用程序,该应用程序使用易受远程代码执行影响的“节点”模块。由于“MySQL”守护进程以用户“root”身份运行,因此可以通过利用“MySQL”的用户定义函数来利用它来获得RCE并…

数据结构:堆与堆排序

目录 堆的定义: 堆的实现: 堆的元素插入: 堆元素删除: 堆初始化与销毁: 堆排序: 堆的定义: 堆是一种完全二叉树,完全二叉树定义如下: 一棵深度为k的有n个结点的二…

linux性能优化-磁盘I_O优化

1.文件系统 1.1.文件系统的工作原理 文件系统是在磁盘的基础上,提供了一个用来管理文件的树状结构。 接下来我们就看看Linux 文件系统的工作原理。 1.1.1索引节点和目录项 在 Linux 中一切皆文件 ,文件系统,本身是对存储设备上的文件,进行组织管理的…

go和swoole性能比较

开发效率 Go语言是本质上是静态语言,开发效率稍差,但性能更强,更适合底层软件的开发 Swoole使用PHP语言,动态脚本语言,开发效率最佳,更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件&…

阿里云优惠券领取入口、使用方法和限制条件,2024最新

阿里云优惠代金券领取入口,阿里云服务器优惠代金券、域名代金券,在领券中心可以领取当前最新可用的满减代金券,阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法: 阿里云优惠券…

sqlmap使用教程(2)-连接目标

目录 连接目标 1.1 设置认证信息 1.2 配置代理 1.3 Tor匿名网络 1.4 检测WAF/IPS 1.5 调整连接选项 1.6 处理连接错误 连接目标 场景1:通过代理网络上网,需要进行相应配置才可以成功访问目标主机 场景2:目标网站需要进行身份认证后才…

72.批量执行Redis命令的4种方式!

文章目录 前言一、Redis命令执行过程二、原生批量命令三、pipeline(管道)四、Lua脚本五、Redis事务六、Redis Cluster模式下该如何正确使用批量命令操作? 前言 在我们的印象中Redis命令好像都是一个个单条进行执行的,但实际上我们是可以批量执行Redis命…

LLM:Sinusoidal-正余弦位置编码

1:什么是大模型的外推性? 外推性是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降的问题。例如,如果一个模型在训练时只使用了512个 token 的文本,那么在预测时如果输入超过512个 token&#xff0…

FPGA引脚物理电平(内部资源,Select IO)-认知2

引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…