Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信

2023-05-16

Diagnostic Server

对于AUTOSAR adaptive平台,不用重新刷写整个ECU即可添加新的软件包,各个软件包描述为SoftwareClusters,每个SoftwareClusters拥有自己的诊断地址和Server。

所用的Diagnostic Server共享同一个传输层,每个Server管理自己的资源。

  • DM根据每个SoftwareClusters所配置的DEXT来实例化独立的Server,配置元素不赘述

诊断通信管理

用于诊断通信的关键元素是Diagnostic Conversation(诊断对话),UDS请求就是在诊断对话中处理,一个Server可以并行处理多个诊断对话,和Classic AUTOSAR不同,AP提供完全并行或虚假并行的能力(CP有并行能力吗?虚假的并行能力)

Diagnostic Conversations

诊断对话描述的是诊断Server和诊断Client之间的对话,Server和Client之间的连接,CP完全静态配置,AP是Server运行时创建的。

  • Server通过TP层回调时提供的id和SA来识别Client
  • 每个诊断对话都有自己的Session和Security-Level(假如一个Server拥有多个诊断对话,可以并行处理不同Session和安全等级的请求)

并行处理

AP为了支持并行处理,有如下措施:

  1. 支持并行处理的诊断对话的数量是可配置的
  2. 并行模式是可选的:
    1. 虚假并行:当所有的诊断对话都是默认会话时,是一个真的并行。当有一个诊断对话进行非默认会话时,除了新建立一个优先级较高的诊断对话时,其他诊断对话都会被拒绝。虚假的关键就是,Session这个属性并不是私有的,而是所有诊断对话共享
    2. 完全并行:类似于传统IT界的CS模型,Client之间是互不影响的,由于Server需要大量的资源,所以传统ECU(CP)和ISO14229都未提供这种实现,但AP一般不再有资源上的限制,可以实现这种模式。在完全并行模式下,同一时刻可以有N个诊断对话,都可以进入非默认会话。

NOTE:并不是所有的UDS请求都是互不影响的,有一些请求是全局的。

诊断对话的生命周期

诊断对话的生命周期从接收到第一个uds请求开始,到取消诊断会话,或满足以下条件(&&关系):

  1. UDS请求处理完成(完成有很多条件,一般就是处理完成,发送响应或抑制响应)
  2. UDS在默认会话

不在默认会话的诊断对话会进行保活(keep-alive),直到Session超时

诊断对话服务接口(Service Interface)

略,9章有详细描述

把一个UDS请求分配给诊断对话

当收到一个UDS请求,有三种选择,都有标准流程进行处理:

  1. 把这个请求分配给已经存在的诊断对话
  2. 新建一个诊断对话,并分配给它
  3. 拒绝这个请求

处理流程,文档中图7.2

优先级化

当诊断Server资源不足以开启新的诊断对话时,需要对新的诊断对话和已经存在的进行优先级对比,虚假并行下,有时(即切换非默认会话等)也需要进行这项工作。

  • IndicateMessage会附带一个优先级信息,这就是诊断对话的优先级
  • 0代表最高优先级,255最低(uint8_t)
  • 虚假模式下的优先级化:会和非默认会话的优先级进行比较,优先级高的会替换优先级低的,将uds request分配给它
  • 所有诊断对话的优先级顺序:
  1. 优先级高的会替换优先级低的
  2. 同样优先级的,非默认会话的隐形优先级高于默认会话

优先级类型

诊断对话的替换和初始值

  • 发生诊断对话的替换时,取消旧的对话,建立新的对话
  • 初始值:
  1. Session:Default Session
  2. Security Level:Locked

UDS请求的拒绝

  • 当UDS请求分配给一个还没处理完上一个请求的诊断对话,这次请求会被忽略
  • 如果优先级化要求拒绝UDS请求,并且 DiagnosticCommonProps.responseOn-SecondDeclinedRequest配置为TRUE,Server会接受这个请求,但不做更多处理,返回NRC 0x21
  • 如果优先级化要求拒绝UDS请求,并且DiagnosticCommonProps.responseOn-SecondDeclinedRequest配置为FALSE,Server会忽略这个请求

UDS请求验证

Diagnostic Server会校验请求的以下方面:

  • 是否检测到制造商指定的错误?
  • 支持SDI吗?
  • 当前会话支持SID吗?
  • 安全校验支持当前SID吗?
  • 是否检测到供应商指定的错误?

具体每个校验细节略过,文档有详细描述,对于使用者根据NRC可以很轻易推出报错原因。

UDS响应处理

正常的正/负响应

  • 外部服务处理者不引发ApApplicationError,Server返回正响应
  • 外部服务处理者引发 UDSNegativeResponseCodeRegular中的ApApplicationError,Server返回负响应,错误代码就是ApApplicationError的数值

响应的抑制

  • 抑制正响应指示位会抑制正响应
  • 功能寻址时,部分负响应会被抑制:

发送busy响应

如同CP一样,AP也可以返回NRC 0x78来表示pending,并且发送NRC 0x78的数量也可以配置,达到这个数量,还不能正常处理请求,返回NRC 0x10

非默认会话的跟踪

  • DM支持S3Server 超时,时间固定5s

UDS的服务处理

诊断Server提供DiagnosticServiceClass引申出诊断服务的处理器(diagnostic service processors)

  • 支持的服务

内部服务:DM内部自己就能处理这个服务

外部服务:需要外部提供接口进行处理

内部&外部:部分内部可以处理,部分外部提供接口

  • AP中的UDS服务的地址和长度信息都被拓展到uint64类型,不管真实的地址总线宽度(与CP不同)

每个服务详情略过...大多数全部是UDS的范畴,很多AP的实现细节和CP不同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信 的相关文章

随机推荐

  • make和makefile

    第二十六课 xff1a Makefile设计 哔哩哔哩 bilibili 内部资料 课程简介 大连理工大学国家精品课 嵌入式软件设计是计算机 软件工程等学科的专业方向课 xff0c 是一门实践性 技术性很强的重要课程 本课程的主要任务是全面
  • acm算法有用吗?写给自己。

    acm算法有用吗 xff1f 写给自己 xff0c 也希望能帮助那些大一迷茫的人 我是一个普通二本院校即将进入大三的acmer xff0c 一般问这个问题的人都是一个acmer的失败者 xff0c 因为成功的人都去忙着学习该学习的算法了 x
  • 算法题中常用的C++ STL

    一 栈 xff08 stack xff09 stack实现了一种先进后出的数据结构 xff0c 使用时需要包含stack头文件 C 43 43 定义stack语法 xff1a span class hljs stl container sp
  • Boot Loader

    在嵌入式操作系统中 xff0c BootLoader是在操作系统内核运行之前运行 可以初始化硬件设备 建立内存空间映射图 xff0c 从而将系统的软硬件环境带到一个合适状态 xff0c 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系
  • 什么是SecOC 板端加密通讯

    板端加密通讯 Security Onboard Communication 缩写为SecOC SecOC是AUTOSAR标准中提出的针对ECU间通信安全提出的标准 CAN网络是明文传输 xff0c 广播报文 xff0c 无发送合法性校验 为
  • C++11:noexcept关键字

    1 介绍 C 43 43 11新标准引入的noexcept 运算符 xff0c 可以用于指定某个函数不抛出异常 预先知道函数不会抛出异常有助于简化调用该函数的代码 xff0c 而且编译器确认函数不会抛出异常 xff0c 它就能执行某些特殊的
  • 嵌入式应用程序设计流程

    第三十课 xff1a 应用程序设计流程 哔哩哔哩 bilibili arm linux gcc 交叉编译器 通过挂载实现程序调试 xff1a xff08 省去程序下载环节 xff09 第三十二课 xff1a 文件操作 哔哩哔哩 bilibi
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor
  • 微内核和宏内核以及混合内核

    操作系统内核的几个重要的特点 xff1a 内核是操作系统的核心部分 xff0c 它管理着系统的各种资源内核可以看成连接应用程序和硬件的一座桥梁 xff0c 是直接运行在硬件上的最基础的软件实体在一些简单的硬件设备上可以没有内核或操作系统而直
  • Adaptive AUTOSAR——Time Synchronization(VRTE 3.0 R21-11)

    15 Time Synchronization 15 1 What is Time Synchronization 时间同步是自适应平台基础中的一个功能集群 时间同步通过库向应用程序提供C 43 43 API xff0c 该库作为RTA V
  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • Adaptive AUTOSAR 学习笔记 - AP 背景、技术及特征

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20 11 版本 本文从AUTOSAR EXP PlatformDesign pdf开始 xff0c 一边学习 xff0c 一边顺带着翻译一下 尽力而为 x
  • gPTP时钟同步(时间同步)协议简介

    一 时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗 xff1f 齐步走的动作要领你还记得吗 xff1f 教官首先发出 齐步 走 的命令 xff0c 大家听到 齐步 二字后 xff0c 开始调整动作 xff0c 最终所有人实现动
  • acm有用吗?

    acm有用吗 xff1f 废话 xff0c 没用的话费这么大劲干什么来了 xff0c 但是搞acm需要前期的高付出 xff0c 但是后期会有高回报 xff0c 也不是什么都不管不顾的高付出 xff0c 学好基础课的情况下高付出 中学加小学1
  • std::atomic 原子操作

    类模板 template lt class T gt struct atomic 多线程小结 xff1a 非原子操作 xff0c 不加锁 xff0c 效率很高 xff0c 但无法得到正确的结果非原子操作 xff0c 加锁 xff0c 效率很
  • Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

    ChatGPT回答 xff1a Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块 xff0c 其主要功能包括 xff1a 任务调度 xff1a 支持对任务进行调度和执行 xff0c 以
  • 【C/C++】获取当前系统时间(time_t和tm)清晰梳理

    C C 43 43 获取当前系统时间 xff08 time t和tm xff09 清晰梳理 c 43 43 time t YuXi 0520的博客 CSDN博客 C 43 43 获取系统当前时间 c 43 43 time函数 C 43 43
  • Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11)

    状态管理是自适应平台服务中的一个功能集群 在自适应平台中 xff0c 状态决定了一组活动的自适应应用程序 特定于项目的应用程序 xff0c 即状态管理器 xff0c 决定何时请求状态更改 xff0c 从而更改当前活动的应用程序集 状态管理器
  • Adaptive AUTOSAR 文档官方如何阅读

    目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译 xff0c 不如直接看官方文档更全面深入 Adaptive AUTOSAR 文档官方下载地址 Adaptive Platform AUTOSAR https ww
  • Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信

    Diagnostic Server 对于AUTOSAR adaptive平台 xff0c 不用重新刷写整个ECU即可添加新的软件包 xff0c 各个软件包描述为SoftwareClusters xff0c 每个SoftwareCluster