当前位置: 首页 > news >正文

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管理器模块需忽略初始化期间发生的所有类型的错误。例如:初始化函数返回的值。

http://www.lryc.cn/news/520918.html

相关文章:

  • 【PyQt】如何在mainwindow中添加菜单栏
  • 浅谈云计算01 | 云计算服务的特点
  • 【开题报告】基于springboot的煤矿安全监测系统的设计与实现
  • 微服务中引入消息队列的利弊
  • Redis缓存穿透、缓存雪崩和缓存击穿
  • EF Core分页
  • 高效设计新选择!用StartAI打造各种风格主题的平铺素材图!
  • 大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
  • qml Emitter 详解
  • 【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接
  • mybatis-spring @MapperScan走读分析
  • Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
  • 【0x005B】HCI_Write_Default_Erroneous_Data_Reporting命令详解
  • 基于 Python 的学生成绩管理系统设计与实现
  • 【Apache Doris】周FAQ集锦:第 29 期
  • 【C】初阶数据结构3 -- 单链表
  • Autodl安装tensorflow2.10.0记录
  • 【Rust】常见集合
  • SpiderFlow平台v0.5.0之引入selenium插件
  • git push命令
  • 洛谷P1161
  • Python脚本自动发送电子邮件
  • vscode的安装与使用
  • sparkRDD教程之必会的题目
  • Unity 2d描边基于SpriteRender,高性能的描边解决方案
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • js基础---var与let的区别以及const的使用
  • 用css和html制作太极图
  • OJ12:160. 相交链表
  • 软件工程和项目管理领域 - CMMI 极简理解