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

相关推荐
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信