LIN协议栈 AUTOSAR架构下 状态管理

2024-09-05 07:36

本文主要是介绍LIN协议栈 AUTOSAR架构下 状态管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、LIN State Manager 概述

  • 功能 :负责控制 LIN 总线的通信状态,包括切换调度表(仅 LIN 主节点)、处理睡眠和唤醒操作、通知上层新状态等。
  • 约束 :每个 ECU 中最多有一个实例;所有关于调度表的操作仅适用于 LIN 主节点;适用于所有使用 LIN 的汽车领域。
  • 依赖关系 :依赖于 Communication Manager(ComM)和 LIN Interface(LinIf),与操作系统、Default Error Tracer(DET)、Diagnostic Event Manager(DEM)、BSW Mode Manager 等有交互。

二、状态和转换

  • LINSM_UNINIT
  • 定义 :初始状态,在启动时激活,在任何 API 调用之前。
  • 激活条件 :在启动时自动激活,且在任何 API 调用之前保持该状态。
  • LINSM_INIT
  • 定义 :初始化后激活的状态。
  • 进入条件 :当 LinSM_Init 函数被调用时,从任何状态或子状态转换到此状态。
  • 子状态设置 :进入此状态时,所有网络的子状态将转换为 LINSM_NO_COM。
  • 初始化设置 :进入此状态时,将相关全局变量等设置为默认值(复位值)。
  • 默认子状态 :进入此状态时,对于所有网络,子状态 LINSM_NO_COM 将被激活。
  • 与 LinIf 的关系 :LinSM_Init 函数应将每个配置通道的调度类型设置为 NULL_SCHEDULE(仅适用于 LIN 主节点),且在此函数中不应调用 LinIf 的某些 API(如 LinIf_SetTrcvMode)。
  • LINSM_NO_COM
  • 定义 :在初始化后、ComM 模块请求无通信(LIN 主节点)或 LinIf 指示总线睡眠事件(LIN 从节点)时激活的子状态。
  • 状态通知 :进入此状态时,LinSM 模块应通知 ComM 和 BswM(除特殊情况外)关于状态的变化。
  • 特殊情况 :当 LinSM 正在执行 LinSM_Init 函数时,不应进行状态通知。
  • 通信限制 :在此状态下,LinSM 模块不应命令 LinIf 模块为所选网络进行通信,即总线应保持静默。
  • 收发器设置 :进入此状态时,根据 LinSMTransceiverPassiveMode 的值,通过 LinIf_SetTrcvMode 设置收发器为 STANDBY 或 SLEEP(仅当 LinSMTransceiverPassiveMode 为该通道配置时适用)。
  • LINSM_FULL_COM
  • 定义 :允许在 LIN 总线上进行通信的状态,每个网络可独立进入此状态。
  • 状态通知 :进入此状态时,应通知 ComM 和 BswM 关于状态的变化。
  • 收发器设置 :进入此状态时,通过 LinIf_SetTrcvMode 将收发器设置为活动状态(仅当 LinSMTransceiverPassiveMode 为该通道配置时适用)。
  • 子状态进入 :进入此状态时,子状态 LINSM_RUN_COMMUNICATION 将被进入。
  • 睡眠操作(Goto sleep)
  • 主节点 :当状态为 LINSM_FULL_COM 且 ComM 请求 COMM_NO_COMMUNICATION 时,LinSM 应调用 LinIf_GotoSleep 发送睡眠命令。
  • 从节点 :当状态为 LINSM_FULL_COM 且 ComM 请求 COMM_NO_COMMUNICATION 时,LinSM 应存储请求的通信模式并返回 E_OK。
  • 通用规则 :LinSM 模块仅在 LINSM_FULL_COM 和 LINSM_RUN_COMMUNICATION 状态下才可调用 LinIf_GotoSleep API;当 LinSM_GotoSleepConfirmation 被调用且当前状态为 LINSM_FULL_COM/LINSM_GOTOSLEEP 时,LinSM 应将状态设置为 LINSM_NO_COM(与 “success” 参数无关),在其他状态下应忽略该确认;若 LinIf_GotoSleep 返回 E_OK,则 LinSM 应设置子状态为 LINSM_GOTOSLEEP。
  • 唤醒操作(Wake up)
  • 触发条件 :由 ComM 模块通过 LinSM_RequestComMode 请求唤醒或 LIN 节点传输唤醒信号触发。
  • 处理方式 :当 ComM 请求 COMM_FULL_COMMUNICATION 时,LinSM 应直接调用 LinIf_Wakeup 发送唤醒信号(在特定情况下除外),并重置最大重试次数计数器;若 LinIf_Wakeup 返回 E_NOT_OK,LinSM_RequestComMode 应直接返回 E_NOT_OK 且不进行其他操作;当 LinIf 通知唤醒成功发送时,状态应设置为 LINSM_FULL_COM,在其他情况下,状态应设置为与请求前相同的状态。

三、状态管理相关的其他要点

  • 错误分类 :包括开发错误、运行时错误、瞬态故障、生产错误和扩展生产错误。
  • API 规范 :提供了如 LinSM_Init、LinSM_ScheduleRequest、LinSM_GetVersionInfo 等与状态管理相关的 API 函数。
  • 配置规范 :定义了配置参数和其聚类到容器中的方式,LinSM_Configuration 包含 LinSM、LinSMConfigSet、LinSMChannel、LinSMGeneral、LinSMSchedule 等容器和参数,这些配置与状态管理的各种设置和行为相关。

总之,LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

这篇关于LIN协议栈 AUTOSAR架构下 状态管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138339

相关文章

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户