AUTOSAR EcuM(ECU状态管理器)
EcuM管理的ECU状态特指ECU的上下电状态。EcuM有两种EcuMFixed和EcuMFlex,其中EcuMFlex是在 AUTOSAR4.x 之后新增的规范文件,相应地原来的 EcuM 改称为 EcuMFixed。EcuMFlex主要是为了适应不同应用场景的各种不同需求,实现更加灵活的处理。所以在AUTOSAR官方文档中,《AUTOSAR_SWS_ECUStateManager.pdf》则对应的是EcuMFlex,《AUTOSAR_SWS_ECUStateManagerFixed.pdf》则对应的是EcuMFixed。
EcuMFixed中的模式和状态是固定的,而 EcuMFlex 中删除了许多模式和状态,这些模式和状态的定义根据不同需求由 BswM 模块加以定义。因此EcuMFlex也必须与BswM配合使用才能实现完整的模式和状态处理。
1.角色承担:
初始化包括初始化OS,SchM,BswM以及部分基础软件驱动模块;将ECU配置为Sleep与ShutDown状态;管理ECU的所有唤醒事件。
2.关联模块:
OS,SchM,BswM
3.多核支持:
支持多核ECU,启动、关机、睡眠以及唤醒,能在ECU的所有内核上进行协调。
4.相关术语:
唤醒源(Wakeup Source)是指处理唤醒事件的外围设备或ECU组件。
唤醒事件(Wakeup Event)是指导致唤醒的物理事件。例如:CAN消息或IO输入的跳变沿都可以是唤醒事件。
唤醒原因(Wakeup Reason)是指作为上次唤醒的实际原因的唤醒事件。
被动唤醒(Passive Wakeup)是指由连接的总线(Attached bus)引起的一种唤醒。它不属于由定时器或传感器活动等内部事件引起的唤醒。
Callout是指系统设计人员使用代码替换的一种Stub函数。通常在配置时,为ECU管理器模块提供一些附件功能。Callout分为两类。一类是作为硬件抽象层向ECU管理器模块提供强制性的功能或服务。另一个类是提供一些可选功能。
阶段(Phase)是指和ECU管理器的动作及事件相关的逻辑或时间组合,例如:STARTUP、UP、SHUTDOWN、SLEEP等。阶段可以由通常称为序列的子阶段组成。
状态(State)存在于它们各自的BSW组件内部,对Application是不可见。所以它们只被BSW的内部状态机使用。ECU管理器模块的状态,负责构建阶段(Phase)并处理相关模式(Mode)。
模式(Mode)是指在车辆中运行过程中各种状态机的某组特定的状态。它不只和ECU管理器模块相关。同时并与特定实体、应用程序或整个车辆相关。
ECU必须在进入睡眠状态、关闭电源或复位之前被关闭。因此SLEEP、OFF和RESET是有效的关机目标(Shutdown Target)。通过选择关机目标,应用程序可以在下次关闭后,将其对ECU行为的愿望传达给ECU管理器模块。
5.与BswM模块交互:
EcuM负责初始化BSW调度程序。BswM负责监控ECU中的变化,并酌情影响ECU状态机的相应变化。
EcuM在ECU启动后进行控制,初始化SchM和BswM后将ECU控制权交给BswM。需要锁定操作系统并处理唤醒事件时,或者OS关闭停止前,BswM将控制权交还给EcuM。
在验证唤醒源时,ECU管理器模块通过模式切换请求向BswM指示唤醒源状态更改。

6.接口函数:
6.1 EcuM_MainFunction,定期调度
检查唤醒源是否被唤醒,并在必要时启动唤醒验证。
更新闹钟定时器(Alarm Clock timer)
仲裁RUN和POST_RUN的请求和释放。
7.闹钟
EcuM可以提供可选的持久化地时钟服务。Sleep期间也保持active状态。因此,它能保证ECU在未来的某个时间被唤醒(假设硬件没有任何故障),并为长期活动提供时钟服务。
EcuM维护一个主闹钟,其值决定了ECU将被唤醒的时间。同时管理一个内部时钟,即EcuM时钟,用于与主闹钟进行比较。
闹钟唤醒机制仅与SLEEP阶段相关。SW-C和BSW模块可以在UP阶段(并且仅在UP阶段)设置和检索闹钟设定值,但是最终在SLEEP阶段被使用。系统应该有且只有一个唤醒源分配给了EcuM时钟。在StartPreOS序列、WakeupRestart序列和OffPreOS序列中,用户闹钟和主闹钟需被取消。
8.多核
当前独立单个内核的关闭是不支持的(即:ECU的部分继续运行时)。所有内核必须同时被关闭。当ECU需被关闭时,主ECU管理器模块调用ShutdownAllCores,而不是以某种方式在各个内核上调用ShutdownOS。ShutdownAllCores会停止所有内核上的操作系统,并且停止所有内核运行。由于主内核可以在所有从内核完成处理之前发出ShutdownAllCores,所以在进入SHUTDOWN之前必须对这些内核进行同步。
当请求的关机目标是睡眠(Sleep)时,所有内核需同时进入睡眠状态。MCU必须为每个内核发出停止(Halt)指令。但任务时序(Task Timing)和优先级属于本地局部的(local),所以调度程序(scheduler)和RTE在停止后都不必同步。因为主内核可以在所有从内核完成处理之前,发出MCU停止指令,所以在进入GoHalt之前,必须对所有从内核进行同步。
BswM需确定睡眠应该被启动,并将相应的ECU模式分配给每个内核。在从内核上的BSW、SW-C和CDD必须由其分区上本地的BswM负责通知,同时相应地去初始化,并向BswM发送相应的模式请求,以表明已准备就绪。
如果ECU进入睡眠状态,则停止(Halt)指令必须同步,以便在主内核计算校验和之前停止所有从内核。主内核上的EcuM使用与在Go Off时相同的同步内核信号机制。类似,主内核上的EcuM必须在释放从内核停止状态(Halt State)之前验证计算的校验和值。
ECU管理器模块需忽略初始化期间发生的所有类型的错误。例如:初始化函数返回的值。
相关文章:
AUTOSAR EcuM(ECU状态管理器)
EcuM管理的ECU状态特指ECU的上下电状态。EcuM有两种EcuMFixed和EcuMFlex,其中EcuMFlex是在 AUTOSAR4.x 之后新增的规范文件,相应地原来的 EcuM 改称为 EcuMFixed。EcuMFlex主要是为了适应不同应用场景的各种不同需求,实现更加灵活的处理。所以…...
【PyQt】如何在mainwindow中添加菜单栏
[toc]如何在mainwindow中添加菜单栏 如何在mainwindow中添加菜单栏 主要有两种方法: 1.直接创建mainwindow进行添加 2.使用ui文件加载添加 第二种方法更为常见,可以应用到实际 1.直接创建mainwindow进行添加 import sysfrom PyQt5.QtWidgets import …...
浅谈云计算01 | 云计算服务的特点
在当今数字化时代,云计算作为一种强大的技术解决方案,正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点,包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…...
【开题报告】基于springboot的煤矿安全监测系统的设计与实现
【开题报告】基于springboot的煤矿安全监测系统的设计与实现 1.选题背景、研究目的及意义 1.1选题背景 煤炭是我国能源行业的重要组成部分,对国民经济具有支撑和推动作用。在煤炭生产过程中存在较高的安全风险,煤矿事故频发,这不仅对人员生…...
微服务中引入消息队列的利弊
微服务中引入消息队列的利弊 1、微服务架构中引入消息队列(Message Queue)的主要优势: 1.1 解耦(Decoupling) 服务之间不需要直接调用,通过消息队列实现松耦合 生产者和消费者可以独立扩展和维护 降低系统间的依赖性 1.2 异步处理(Asynchronous Proc…...
Redis缓存穿透、缓存雪崩和缓存击穿
一、缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存…...
EF Core分页
Skip(3).Take(8) 最好显式指定排序规则需要知道满足条件的数据的总条数: 用IQueryable的复用 LongCount和Count页数:long pageCount (long)Math.Ceiling(count * 1.0 / pageSize); class Program {static async Task Main(string[] args){using (MyDbC…...
高效设计新选择!用StartAI打造各种风格主题的平铺素材图!
想要打造独特的POD(Print on Demand,按需打印)平铺素材图,却又苦于设计效率低下?别急,今天我来给大家分享一个高效方法,让你轻松秒制各种风格的POD平铺素材图! 具体操作步骤 打开ps…...
大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
目录 1、分布式系统当中的CAP理论 1.1、CAP理论 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP机制 C软件异常排查从入门到精通系列教程(核心精品专栏,订阅量已达600多个,欢迎订阅,持续更新…...
qml Emitter 详解
1、概述 Emitter是QML粒子系统中的一个关键组件,用于创建并发射逻辑粒子。这些逻辑粒子本身不会自动渲染,需要使用一个或多个ParticlePainter元素(如ImageParticle、ItemParticle等)来进行可视化显示。Emitter通过定义粒子的发射…...
【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. docker 容器部署 MySQL1.1 拉取mysql镜像1.2 启动容器1.3 进入容器1.4 使用 root 用户登录 2. Navicat 连…...
mybatis-spring @MapperScan走读分析
接上一篇文章:https://blog.csdn.net/qq_26437925/article/details/145100531, 本文注解分析mybatis-spring中的MapperScan注解,则将容易许多。 目录 MapperScan注解定义ConfigurationClassPostProcessor扫描注册beanDefinitionorg.mybatis.s…...
Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),其体系结构设计旨在提供高效的数据存储、查询处理和事务管理。MySQL的体系结构可以分为多个层次,每个层次负责不同的功能模块。 MySQL的体系结构主要由以下几个部分组成&#…...
【0x005B】HCI_Write_Default_Erroneous_Data_Reporting命令详解
目录 一、命令概述 二、命令格式及参数 2.1. HCI_Write_Default_Erroneous_Data_Reporting命令格式 2.2. Erroneous_Data_Reporting 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. 状态码(Status) 四、命令执行流程 4.1. 命令发起阶段(主机端) 4.2. 命…...
基于 Python 的学生成绩管理系统设计与实现
标题:基于 Python 的学生成绩管理系统设计与实现 内容:1.摘要 摘要:本文介绍了一个基于 Python 的学生成绩管理系统的设计与实现。该系统旨在提高学生成绩管理的效率和准确性,方便教师和学生进行成绩查询和分析。本文详细描述了系统的设计思路、功能模块…...
【Apache Doris】周FAQ集锦:第 29 期
引言 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。 通过这个每周 FAQ 栏目,希望帮助社…...
【C】初阶数据结构3 -- 单链表
之前在顺序表那一篇文章中,提到顺序表具有的缺点,比如头插,头删时间复杂度为O(n),realloc增容有消耗等。而在链表中,这些问题将得到解决。所以在这一篇文章里,我们将会讲解链表的定义与性质,以及…...
Autodl安装tensorflow2.10.0记录
首先租用新实例(我选的是3080*2卡),由于基础镜像中没有2.10.0版本,选miniconda3的基础环境 创建虚拟环境:conda create --name xxx python3.8(环境名)激活虚拟环境:conda activate x…...
【Rust】常见集合
目录 思维导图 一、Rust常用集合 1. Rust标准库中的集合概述 2. 常用集合类型 2.1 向量(Vector) 2.2 字符串(String) 2.3 哈希映射(Hash Map) 二、向量(Vec) 1. 向量的概述…...
SpiderFlow平台v0.5.0之引入selenium插件
引入selenium插件 首先到码云下载插件点击下载编辑到本地并导入到工作空间或安装到maven库在spider-flow/spider-flow-web/pom.xml中引入插件 <!-- 引入selenium插件 --> <dependency><groupId>org.spiderflow</groupId><artifactId>spider-…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Vue3学习(接口,泛型,自定义类型,v-for,props)
一,前言 继续学习 二,TS接口泛型自定义类型 1.接口 TypeScript 接口(Interface)是一种定义对象形状的强大工具,它可以描述对象必须包含的属性、方法和它们的类型。接口不会被编译成 JavaScript 代码,仅…...
