【车载开发系列】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
功能说明:将在诊断会话状态转换时调用
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁4 :数据库DB实现分布式锁的悲观锁和乐观锁,unique实现方式

一 方案1 使用悲观锁解决冲突 1.1 使用悲观锁原理 1.1.1 使用悲观锁的原理 1.悲观锁:在select的时候就会加锁,采用先加锁后处理的模式,虽然保证了数据处理的安全性,但也会阻塞其他线程的写操作。在读取数据时锁住那几行&…

UVT音乐证书考试时间确定,学习氛围渐浓

美国职业资格与人才管理中心(UVT)音乐证书考试时间正式确定,学习氛围逐渐浓厚。众多热爱音乐的从业者和学生开始积极备考,希望通过这一考试获得音乐领域的宝贵证书。音乐证书被认为是音乐人才展示个人专业水平的重要机会&#xff…

re:从0开始的HTML学习之路 2. HTML的标准结构说明

1. <DOCTYPE html> 文档声明&#xff0c;用于告诉浏览器&#xff0c;当前HTML文档采用的是什么版本。 必须写在当前HTML文档的首行&#xff08;可执行代码的首行&#xff09; HTML4的此标签与HTML5不同。 2. <html lang“en”> 根标签&#xff0c;整个HTML文档中…

虚拟机设置固定IP地址以及访问外网

一、虚拟机固定IP地址设置 1、IP地址查看命令 &#xff08;1&#xff09;ip a [rootlocalhost ~]# ip a • inet 192.168.93.129/24这表示该网络接口&#xff08;ens33&#xff09;被分配了一个IPv4地址是192.168.93.129&#xff0c;并且其子网掩码为 24位&#xff08;即/24…

Java多线程并发篇----第二十六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Executors 框架?二、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?三、什么是 Callable 和 Future?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

MySQL---多表等级查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

大模型理论基础3

模型架构 模型概括 先把语言模型看成黑盒&#xff0c;以便于了解整体功能后拆分成&#xff1a;分词、模型架构 分词 首先要知道&#xff1a;语言模型 p 是建立在词元&#xff08;token&#xff09;序列的上的一个概率分布输出&#xff0c;其中每个词元来自某个词汇表V&#…

解决github无法访问的问题(修改hosts)

1.先ping github.com看是否能ping通 不能ping通的话&#xff0c;找到github最新的ip地址&#xff0c;修改hosts文件&#xff08;C:\Windows\System32\drivers\etc&#xff09; 找最新的ip地址的办法&#xff1a; a.cmd中ping时返回的 b.点击ipaddress.com查询网站链接 修改host…

微信小程序入门,学习全局配置与页面配置

目录 一、微信小程序 二、微信小程序的全局配置 三、微信小程序的页面配置 四、全局配置与页面配置的区别 一、微信小程序 微信小程序是一种基于微信平台的应用程序&#xff0c;它可以在微信内部直接运行&#xff0c;无需下载安装。微信小程序具有以下特点和优势&#xff…

数据结构与算法:图

文章目录 图1) 概念有向 vs 无向度权路径环图的连通性 2) 图的表示3) Java 表示4) DFS5) BFS6) 拓扑排序7) 最短路径DijkstraBellman-FordFloyd-Warshall 8) 最小生成树PrimKruskal 图 1) 概念 图是由顶点&#xff08;vertex&#xff09;和边&#xff08;edge&#xff09;组成…

前后端分离,使用vue3整合SpringSecurity加JWT实现登录校验

前段时间写了一篇spring security的详细入门&#xff0c;但是没有联系实际。 所以这次在真实的项目中来演示一下怎样使用springsecurity来实现我们最常用的登录校验。本次演示使用现在市面上最常见的开发方式&#xff0c;前后端分离开发。前端使用vue3进行构建&#xff0c;用到…

vue生命周期图示

详见&#xff1a;官网介绍

梳理一下若依框架的权限过滤系统

梳理一下若依框架的权限过滤系统 首先&#xff0c;我们直入主题&#xff0c;且看这段代码 /*** 获取用户列表*/ PreAuthorize("ss.hasPermi(system:user:list)") GetMapping("/list") public TableDataInfo list(SysUser user) {startPage();List<SysU…

OpenHarmony当前进展和未来趋势

操作系统自20世纪50年代诞生&#xff0c;经历了从专用操作系统到通用操作系统的转变。整体可以将操作系统的发展历史分为3个阶段&#xff1a;PC时代、移动互联网时代、万物互联时代。 PC时代主要以计算机为主&#xff0c;用户规模从1970年的10亿增长到1990年的30亿。这一时代诞…

QComboBox 下拉框

文章目录 1、简介2、functions3、Signal QT 官方文档参考地址&#xff1a;https://doc.qt.io/qt-5/qcombobox.html 1、简介 QComboBox 是下拉列表框组件类&#xff0c;它提供一个下拉列表供用户选择&#xff0c;也可以直接当作一个 QLineEdit 用作输入。 2、functions 1、voi…

供应商导添加预扣税字段

文章目录 1 Introduction2 Code3 Summary 1 Introduction I only think I can assign value to them and I implement it by the following code . 2 Code LOOP AT gt_bukrs INTO gs_bukrs WHERE lifnr gs_alv1-lifnr.CLEAR:ls_company.ls_company-task M.ls_company-data…

mybatis----动态Sql

1.if标签 通过if标签构建动态条件&#xff0c;通过其test属性的true或false来判断该添加语句是否执行。 mapper接口 public interface AccountMapper {List<Account> selectAllByCondition(Account account); } 映射文件 <select id"selectAllByCondition&q…

具有运动模糊的大规模场景的混合神经绘制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;具有运动模糊的大规模场景的混合神经绘制1、研究背景2、方法提出3、视点依赖归一化方法4、训练方法5、试验细节及对比 YOLO模型1、…

.NET高速开发分层架构,ASPNETCore,IOC开发

分层架构,ASPNETCore,IOC开发 大家好,我是行不更名,坐不改姓的宋晓刚。今天我将带领大家深入了解分层架构、ASP.NET Core、IoC 开发,以及共同开发的魅力。我们将一同探索如何利用这些先进技术构建高效、可维护的数据库应用程序。 家人们,如果有什么不懂,可以留言,或者…

【JS逆向学习】国家加密系列-SM算法实例

SM系列 1、国家加密算法介绍 事实上从 2010 年开始&#xff0c;我国国家密码管理局就已经开始陆续发布了一系列国产加密算法&#xff0c;其中SM1、SM4、SM7、祖冲之密码&#xff08;ZUC&#xff09;是对称算法&#xff1b;SM2、SM9是非对称算法&#xff1b;SM3是哈希算法。目…