Autosar ECUM

基本概念

EcuM(ECU State Manager)模块属于系统服务层,由于设计固定,配置好之后基本不用怎么修改。

初始化和反初始化OS、SchM和BswM以及一些基本的软件驱动模块。

在请求休眠和下电的时候对ECU进行操作

管理员ECU的唤醒事件

ECUM提供了唤醒验证协议,用于区分"真实"的唤醒事件与"异常"的唤醒事件。

处理PB(post build)的配置地址。

EcuM Flex

AUTOSAR ECU模式管理分为Fixed和Flexible两种方式

Fixed有如下确定的模式:

①STARTUP;

②RUN;

③POST_RUN;

④SLEEP;

⑤WAKE_SLEEP;

⑥SHUTDOWN。

Flexible模式则允许其他的情况,如快速/分部(Fast/Partial)启动、多核管理(Multicore Management)等。

EcuM模块还可以配置ECU睡眠模式(Sleep Modes)、下电原因(Shutdown Causes)、复位模式(Reset Modes),管理所有ECU唤醒源(Wakeup Sources)。

状态图

1、上电进入STARTUP状态,执行StartPreOS步骤,一般是先在EcuM_Init里面调用EcuM_AL_DriverInitOne接口,将ADC之类的外设进行初始化。调用StartOS接口,等待OS起来之后,ECUM重新获得控制权,执行StartPostOs,执行OS里面的启动任务,在EcuM_StartupTwo接口里面调用SchM_Init、BswM_Init接口。

2、各个模块都完成初始化之后,进入到UP状态,相当于RUN状态,执行正常的任务。

3、当需要休眠的时候,跳转到sleep模式,在gosleep的时候使能唤醒源和唤醒验证,防止休眠后无法唤醒,然后进入poll或者halt的休眠状态。如果要进入reset的话就要失能唤醒源。

4、下电的时候执行下电流程,跳转到shutdown状态,执行OffPreOs动作调用ShutdownOS函数,将各个模块进行逆初始化。然后执行OffPostOS动作,将OS shutdown。

5、在shutdown状态执行reset的时候就会跳转到STARTUP状态重新启动初始化

Startup sequence

EcuM模块需要初始化一些BSW模块,所以需要定义一系列初始化列表。对于Fixed模式,可以定义四个初始化列表:

①初始化列表0(Driver Init List Zero);

②初始化列表1(Driver Init List One);

③初始化列表2(Driver Init List Two);

④初始化列表3(Driver Init List Three)。

列表0和1在操作系统OS启动之前完成,而列表2和3则需要操作系统OS支持,故在其启动之后完成。对于Flexible模式,EcuM只需要完成列表0和1中各模块的初始化,而后两个列表中的模块初始化需要由BswM模块来实现。这里给出一个推荐的模块初始化顺序列表。

在boot当中跳转到C语言代码,就会立即调用EcuM_Init接口,执行ECUM的初始化序列。然后执行StartupHook钩子函数,激活task,再去执行StartPostOS序列。

Startup Pre Os

在这里细讲Startup Pre Os的流程。EcuM_AL_DriverInitZero接口基本没做啥。EcuM_DeterminePbConfiguration接口确定配置信息。检查配置信息一致性。执行StartupHook钩子函数。EcuM_AL_DriverInitOne才是主要的,会初始化各种外设,包括启动OS。Mcu_GetResetReason获取复位原因。EcuM_SelectShutdownTarget和EcuM_LoopDetection也没啥用。最后就调用StartOS把OS启动起来。

Startup Post Os

执行StartOS之后的启动序列,ECUM按照顺序调用下面四个接口。初始化BswM之后,从EcuM的角度来看,启动序列结束,因此必须使用BswM设置所有额外的启动步骤,譬如NvM_ReadAll,Rte_Start......

Shutdown

由BSWM先发起,调用ECUM接口,也是按照顺序调用下面几个序列。关闭OS和ECUM,执行OS下电钩子函数。

Off Pre OS

具体流程如下图

Off Post OS

调用ShutdownOS之后,继续执行

SLEEP

休眠的流程也是BSWM先发起

相关推荐
Johny_Zhao4 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao17 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux