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先发起

相关推荐
阿达_优阅达1 小时前
集成方案 | 通过 Xtract Universal,将 SAP 数据无缝接入 Power BI 与微软 Fabric
运维·microsoft·sap·fabric·theobald
网络小白不怕黑8 小时前
Docker容器网络:四大模式解析与自定义网络
运维·docker·容器
徐子元竟然被占了!!8 小时前
Linux-systemctl
linux·数据库·oracle
_w_z_j_11 小时前
Linux----mmap
linux
FeelTouch Labs11 小时前
Nginx核心架构设计
运维·前端·nginx
程序员zgh12 小时前
Linux系统常用命令集合
linux·运维·服务器·c语言·开发语言·c++
gwd20012 小时前
如何快速设置 Docker 代理设置
运维·人工智能·docker·容器
Bigan(安)12 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-obj_class对象类系统
linux·c语言·mcu·arm·unix
紫郢剑侠12 小时前
飞秋@Windows +iptux@Linux,打造内网跨平台IM环境
linux·运维·服务器·im·qq