EcuM产品参考手册

缩写词注解

缩写词

解释/描述

中文解释

BswM

Basic Software Mode Manager

基础软件模式管理

EcuM

ECU State Manager

ECU状态管理

Wakeup Source

The peripheral or ECU component which deals with wakeup events is called a wakeup source

唤醒源

简介

模式管理属于系统服务栈,在AutoSar R19-11软件层级架构如下图

image1

图1-1 模式管理简介

模式管理由BswM与EcuM组成,这两个模块对于Bsw中不同协议栈的串联与Ecu的整体把控紧密相关,其中BswM可以通过配置高度自由实现Bsw中模块的串联工作,EcuM则对Mcu的睡眠唤醒提供支持。

参考资料

[1] AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf,R19-11

[2] AUTOSAR_SWS_ECUStateManager.pdf,R19-11

[3] AUTOSAR_SWS_BSWModeManager.pdf,R19-11

[4] AUTOSAR_EXP_ModeManagementGuide.pdf,R19-11

功能描述

模块初始化功能

模块初始化功能介绍

上电时,EcuM负责基础软件模块的初始化(结合BswM),然后启动Os。

模块初始化功能实现

针对模块初始化工作需要通过EcuM配置实现,初始化列表中的项限定于Autosar中的模块注1 初始化列表分为EcuMDriverInitListZero、EcuMDriverInitListOne、EcuMDriverRestartList;其中EcuMDriverInitListZero与EcuMDriverInitListOne两者都在Os启动前进行初始化,意味这这些模块的初始化不能使用Os的任何接口,其中EcuMDriverInitListZero不能使用Post-build为配置参数的模块初始化;两者的初始化列表示例如下图

image2

图2-1 初始化列表

:mark:`注1`:若需要初始化其他模块,需要由修改发布配置工具

EcuMDriverRestartList则为唤醒后支持的初始化列表。

睡眠唤醒功能

睡眠唤醒功能介绍

睡眠唤醒是常用的Bsw功能之一,此部分功能的处理核心部分在EcuM是实现;对于睡眠唤醒的几种方式描述如下:

方式一:Mcu休眠,由中断唤醒

方式二:Mcu休眠,但周期性唤醒

方式三:Mcu掉电,由外部设备检测到唤醒事件直接给Mcu供电

睡眠:

睡眠可以降低Ecu的功耗,EcuM对于上述方式一,二都需要Mcu休眠,需要调用EcuM的Api:EcuM_GoDownHaltPoll,对应的处理流程如下图:

注:本节描述的时序图仅考虑单核情况,多核的睡眠时序需要参考EcuM的SWS文档。

image3

图2-2 EcuM_GoDownHaltPoll处理流程

其中GoSleep Sequence如下图:

image4

图2-3 GoSleep处理流程

对于方式三,睡眠的时候Mcu直接掉电,涉及到Shutdown状态的处理。

image5

图2-4 Shutdown处理流程

其中OffPreOS Sequence如下图:

image6

图2-5 OffPreOS处理流程

OffPostOS Sequence如下图:

image7

图2-6 OffPostOS处理流程

唤醒:

对于每个唤醒源Wakeup Source的状态与对应的描述如下所示:

表2-1 唤醒源状态描述

状态

描述

NONE

唤醒事件未检测到,或者已经被清除

PENDING

唤醒事件检测到,但是还未验证

VALIDATED

唤醒事件检测到,并且已经验证成功

EXPIRED

唤醒事件检测到,但是已经校验超时

对于状态的流转如下:

image8

图2-7唤醒源状态切换图

对于Wakeup Source的状态变化通过API: BswM_EcuM_CurrentWakeup

告知BswM。

Wakeup Source ID取值范围0~31,对应U32数据的每一个bit;其中EcuM默认支持的 Wakeup Source如下表:

表2-2 默认唤醒源描述

默认唤醒源名称

唤醒源ID

ECUM_WKSOURCE_POWER

0

ECUM_WKSOURCE_RESET

1

ECUM_WKSOURCE_INTERNAL_RESET

2

ECUM_WKSOURCE_INTERNAL_WDG

3

ECUM_WKSOURCE_EXTERNAL_WDG

4

这些默认支持的Wakeup Source无需经过验证过程。

Wakeup Source处理过程的两个时间配置EcuMCheckWakeupTimeout、EcuMValidationTimeout。

EcuMCheckWakeupTimeout: 如果唤醒源的检查是异步完成的,则此参数是EcuM延迟ECU关闭的时间的初始值。计时的开始通过API:EcuM_StartCheckWakeup。

EcuMValidationTimeout:Wakeup Source从Pending检查是否Validate的持续时间。

睡眠唤醒功能实现

针对唤醒主要涉及EcuM_CheckWakeup、EcuM_SetWakeupEvent以及EcuM_ValidateWakeupEvent等函数。

PB配置选择功能

PB配置选择介绍

AUTOSAR支持PB配置数据刷写,有两种方式:

  1. Loadable。PB配置数据存放在固定某一个地址段,通过Bootload等方式在运行时去修改PB配置。

  2. Selectable。定义多套配置,在上电初始化的时候根据不同的条件选择不同的配置。

ECUM中可实现Selectable方式的PB配置选择功能。

PB配置选择实现

ECUM在EcuM_DeterminePbConfiguration函数中去确定使用那一套配置数据。实现选择多套PB配置的前提是,ECUM中事先存在多套配置。

源文件描述

表3-1 ECUM文件描述

文件

说明

EcuM.c

RUN/POST_RUN 仲裁、EcuM通用函数

EcuM.h

PB配置数据结构,以及外部接口声明

EcuM_AlarmClock.c

包含当alarm存在时,设置alarm的API集合

EcuM_Cbk.h

EcuM回调函数声明

EcuM_Externals.h

EcuM模块中所有callout函数声明

EcuM_Internal.h

定义所有内部数据结构,以及内部接口声明

EcuM_MemMap.h

EcuM代码、变量所用的MemMap段

EcuM_ShutDown.c

所有SHUTDOWN阶段API

EcuM_Sleep.c

所有SLEEP阶段API

EcuM_StartUp.c

所有STARTUP阶段API

EcuM_Types.h

通用宏定义

EcuM_Up.c

所有UP阶段API

SchM_EcuM.h

定义关键区域保护以及mainfunction声明

EcuM_ Generated_Types.h

依赖配置生成的宏定义、数据结构等

image9

图3-1 ECUM文件交互关系图

API接口

类型定义

EcuM_ConfigType类型定义

名称

EcuM_ConfigType

类型

structure

范围

描述

EcuM PB配置数据

EcuM_RunStatusType类型定义

名称

EcuM_RunStatusType

类型

Uint8

范围

ECUM_RUNSTATUS_UNKNOWN

ECUM_RUNSTATUS_REQUESTED

ECUM_RUNSTATUS_RELEASED

描述

发送到BswM的RUN请求协议的结果

EcuM_UserType类型定义

名称

EcuM_UserType

类型

Uint8

范围

0..255

描述

EcuM user值类型

EcuM_WakeupSourceType类型定义

名称

EcuM_WakeupSourceType

类型

uint32

范围

最多支持32种唤醒源(其中前五位已经被定义)

描述

唤醒源类型(每个bit位代表一种唤醒源)

EcuM_WakeupStatusType类型定义

名称

EcuM_WakeupStatusType

类型

Uint8

范围

ECUM_WKSTATUS_NONE

ECUM_WKSTATUS_PENDING

ECUM_WKSTATUS_VALIDATED

ECUM_WKSTATUS_EXPIRED

描述

唤醒源的运行时状态

EcuM_ BootTargetType类型定义

名称

EcuM_BootTargetType

类型

Uint8

范围

ECUM_BOOT_TARGET_APP

ECUM_BOOT_TARGET_OEM_BOOTLOADER

ECUM_BOOT_TARGET_SYS_BOOTLOADER

描述

boot选择类型

EcuM_ ResetType类型定义

名称

EcuM_ResetType

类型

Uint8

范围

ECUM_RESET_MCU

ECUM_RESET_WDG

ECUM_RESET_IO

描述

EcuM支持的复位类型

EcuM_ ShutdownCauseType类型定义

名称

EcuM_ShutdownCauseType

类型

Uint8

范围

ECUM_CAUSE_UNKNOWN

ECUM_CAUSE_ECU_STATE

ECUM_CAUSE_WDGM

ECUM_CAUSE_DCM

描述

EcuM shutdown的原因类型

EcuM_ ShutdownModeType类型定义

名称

EcuM_ShutdownModeType

类型

Uint16

范围

依赖配置

描述

Shutdown 模式定义

EcuM_ TimeType类型定义

名称

EcuM_TimeType

类型

uint32

范围

描述

EcuM时钟类型

EcuM_ ShutdownTargetType类型定义

名称

EcuM_ShutdownTargetType

类型

Uint8

范围

ECUM_SHUTDOWN_TARGET_SLEEP

ECUM_SHUTDOWN_TARGET_RESET

ECUM_SHUTDOWN_TARGET_OFF

描述

Shutdown Target类型

输入函数描述

输入模块

API

BswM

BswM_Deinit

BswM_EcuM_CurrentWakeup

BswM_Init

CanSM

CanSM_StartWakeupSource

CanSM_StopWakeupSource

ComM

ComM_EcuM_PNCWakeUpIndication

ComM_EcuM_WakeUpIndication

Dem

Dem_Init

Dem_PreInit

Dem_Shutdown

Os

GetResource

ReleaseResource

SetEvent

WaitEvent

ClearEvent

StartOS

ShutdownOS

SchM

SchM_Init

SchM_Deinit

BSW模块

Bsw(xx)_Init

静态接口函数定义

EcuM_GetVersionInfo

函数名称:

Ec uM_GetVersionInfo

函数原型:

void Ec uM_GetVersionInfo (

Std_ VersionInfoType* versioninfo

)

服务编号:

0x00

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

versioninfo

返回值:

功能概述:

获取EcuM版本信息

EcuM_GoDownHaltPoll

函数名称:

Ec uM_GoDownHaltPoll

函数原型:

Std_ReturnType Ec uM_GoDownHaltPoll (

uint16 caller

)

服务编号:

0x2c

同步/异步:

同步

是 否可重入:

输入参数:

caller

值域:

依赖于配置的user个数

输入 输出参数:

输出参数:

返回值:

E_NOT_OK: The request was not accepted.

E_OK: If the S hutdownTargetType is SLEEP the call successfully

returns, the ECU has left the sleep again.

If the S hutdownTargetType is RESET or OFF this call will not return.

功能概述:

指示ECU状态 管理器模块进入睡 眠模式,根据先前 选择的关闭目标进 入重置或关闭状态

EcuM_Init

函数名称:

EcuM_Init

函数原型:

void EcuM_Init (

void

)

服务编号:

0x01

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

初始化E CUM并执行启动程序

EcuM_StartupTwo

函数名称:

EcuM_StartupTwo

函数原型:

void EcuM_StartupTwo (

void

)

服务编号:

0x1a

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

实现STARTUP II状态

EcuM_Shutdown

函数名称:

EcuM_Shutdown

函数原型:

void EcuM_Shutdown (

void

)

服务编号:

0x02

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

通常从 shutdown hook调用此 函数,该函数接管 执行控制并执行GO OFF II

EcuM_SetState

函数名称:

EcuM_SetState

函数原型:

void EcuM_SetState (

EcuM_S hutdownTargetType state

)

服务编号:

0x2b

同步/异步:

同步

是 否可重入:

输入参数:

state

值域:

0..255

输入 输出参数:

输出参数:

返回值:

功能概述:

由BswM调用, 用于切换EcuM状态

EcuM_RequestRUN

函数名称:

EcuM_RequestRUN

函数原型:

Std_ReturnType EcuM_RequestRUN (

EcuM_UserType user

)

服务编号:

0x03

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖于配置

输入 输出参数:

输出参数:

返回值:

E_OK: The request was accepted by EcuM.

E_NOT_OK: The request was not accepted by EcuM, a detailed

error condition was sent to DET (see Error Codes below).

功能概述:

发 出对RUN状态的请求

EcuM_ReleaseRUN

函数名称:

EcuM_ReleaseRUN

函数原型:

Std_ReturnType EcuM_ReleaseRUN (

EcuM_UserType user

)

服务编号:

0x04

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖于配置

输入 输出参数:

输出参数:

返回值:

E_OK: The release request was accepted by EcuM

E_NOT_OK: The release request was not accepted by EcuM, a

detailed error condition was sent to DET (see Error Codes below).

功能概述:

释 放对RUN状态的请求

EcuM_RequestPOST_RUN

函数名称:

Ecu M_RequestPOST_RUN

函数原型:

Std_ReturnType Ecu M_RequestPOST_RUN (

EcuM_UserType user

)

服务编号:

0x0a

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖于配置

输入 输出参数:

输出参数:

返回值:

E_OK: The request was accepted by EcuM

E_NOT_OK: The request was not accepted by EcuM, a detailed

error condition was sent to DET (see Error Codes below).

功能概述:

发出对P OST_RUN状态的请求

EcuM_ReleasePOST_RUN

函数名称:

Ecu M_ReleasePOST_RUN

函数原型:

Std_ReturnType Ecu M_ReleasePOST_RUN (

EcuM_UserType user

)

服务编号:

0x0b

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖于配置

输入 输出参数:

输出参数:

返回值:

E_OK: The release request was accepted by EcuM

E_NOT_OK: The release request was not accepted by EcuM, a

detailed error condition was sent to DET (see Error Codes below).

功能概述:

释放对POST RUN状态的请求

EcuM_SelectShutdownTarget

函 数名称:

EcuM_Select ShutdownTarget

函 数原型:

Std_ReturnType EcuM_Select ShutdownTarget (

EcuM_Shut downTargetType s hutdownTarget,

EcuM_Sh utdownModeType shutdownMode

)

服 务编号:

0x06

同 步/异步:

同步

是否 可重入:

输 入参数:

ShutdownTarget

值 域:

ECUM_SHUTDOWN_TARGET_SLEEP

ECUM_SHUTDOWN_TARGET_RESET

ECUM_SHUTDOWN_TARGET_OFF

shutdownMode

0..255

输入输 出参数:

输 出参数:

返回值:

E_OK: The new shutdown target was set

E_NOT_OK: The new shutdown target was not set

功 能概述:

设置 shutdown target

EcuM_GetShutdownTarget

函数名称:

EcuM_ GetShutdownTarget

函数原型:

Std_ReturnType EcuM_ GetShutdownTarget (

EcuM_Shu tdownTargetType* shutdownTarget,

EcuM_S hutdownModeType* shutdownMode

)

服务编号:

0x09

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

shutdownTarget

shutdownMode

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service has failed, e.g. due to NULL pointer being

passed

功能概述:

EcuM_GetShu tdownTarget返回由 EcuM_SelectShutd ownTarget设置的当 前选定的关闭目标

EcuM_GetLastShutdownTarget

函数名称:

EcuM_GetL astShutdownTarget

函数原型:

Std_ReturnType EcuM_GetL astShutdownTarget (

EcuM_Shu tdownTargetType* shutdownTarget,

EcuM_S hutdownModeType* shutdownMode

)

服务编号:

0x08

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

shutdownTarget

shutdownMode

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service has failed, e.g. due to NULL pointer being

passed

功能概述:

EcuM _GetLastShutdownT arget返回上一个关 闭过程的关闭目标

EcuM_SelectShutdownCause

函数名称:

EcuM_Se lectShutdownCause

函数原型:

Std_ReturnType EcuM_Se lectShutdownCause (

EcuM_ ShutdownCauseType target

)

服务编号:

0x1b

同步/异步:

同步

是 否可重入:

输入参数:

target

值域:

0..255

输入 输出参数:

输出参数:

E_OK: The new shutdown cause was set

E_NOT_OK: The new shutdown cause was not set

返回值:

ReturnType

功能概述:

选择shutdown原因

EcuM_GetShutdownCause

函数名称:

EcuM _GetShutdownCause

函数原型:

Std_ReturnType EcuM _GetShutdownCause (

EcuM_Sh utdownCauseType* shutdownCause

)

服务编号:

0x1c

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

shutdownCause

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service has failed, e.g. due to NULL pointer being passed

功能概述:

获取shutdown原因

EcuM_GetPendingWakeupEvents

函数名称:

EcuM_GetPe ndingWakeupEvents

函数原型:

EcuM _WakeupSourceType EcuM_GetPe ndingWakeupEvents (

void

)

服务编号:

0x0d

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

EcuM_Wake upSourceType:All wakeup events

功能概述:

获取EcuM所有pend ing状态的唤醒事件

EcuM_ClearWakeupEvent

函数名称:

EcuM _ClearWakeupEvent

函数原型:

void EcuM _ClearWakeupEvent (

EcuM _WakeupSourceType sources

)

服务编号:

0x16

同步/异步:

同步

是 否可重入:

输入参数:

sour ces:要清除的事件

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

清除 所有的wakeup事件

EcuM_GetValidatedWakeupEvents

函数名称:

EcuM_GetVali datedWakeupEvents

函数原型:

EcuM _WakeupSourceType EcuM_GetVali datedWakeupEvents (

void

)

服务编号:

0x15

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

EcuM_Wake upSourceType:All wakeup events

功能概述:

获取EcuM所有已 经过验证的唤醒源

EcuM_GetExpiredWakeupEvents

函数名称:

EcuM_GetEx piredWakeupEvents

函数原型:

EcuM _WakeupSourceType EcuM_GetEx piredWakeupEvents (

void

)

服务编号:

0x00

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

EcuM_Wake upSourceType:All wakeup events

功能概述:

获取Ecu M所有唤醒超时事件

EcuM_SetRelWakeupAlarm

函数名称:

EcuM_ SetRelWakeupAlarm

函数原型:

Std_ReturnType EcuM_ SetRelWakeupAlarm (

EcuM_UserType user,

EcuM_TimeType time

)

服务编号:

0x22

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖配置

time

输入 输出参数:

输出参数:

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service failed

ECUM_E _EARLIER_ACTIVE: An earlier alarm is already set

功能概述:

EcuM_Se tRelWakeupAlarm设 置相对于当前时间 点的用户唤醒警报

EcuM_SetAbsWakeupAlarm

函数名称:

EcuM_ SetAbsWakeupAlarm

函数原型:

Std_ReturnType EcuM_ SetAbsWakeupAlarm (

EcuM_UserType user,

EcuM_TimeType time

)

服务编号:

0x23

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

time

输入 输出参数:

输出参数:

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service failed

ECUM_E _EARLIER_ACTIVE: An earlier alarm is already set

ECUM_E_PAST: The given point in time has already passed

功能概述:

EcuM _SetAbsWakeupAlar m将用户的唤醒警报 设置为绝对时间点

EcuM_AbortWakeupAlarm

函数名称:

EcuM _AbortWakeupAlarm

函数原型:

Std_ReturnType EcuM _AbortWakeupAlarm (

EcuM_UserType user

)

服务编号:

0x24

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖配置

输入 输出参数:

输出参数:

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service failed

EC UM_E_NOT_ACTIVE: No owned alarm found

功能概述:

E cum_AbortWakeupAl arm中止该用户先前 设置的唤醒警报。

EcuM_GetCurrentTime

函数名称:

Ec uM_GetCurrentTime

函数原型:

Std_ReturnType Ec uM_GetCurrentTime (

EcuM_TimeType* time

)

服务编号:

0x25

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

time

返回值:

E_OK: The service has succeeded

E_NOT_OK: time points to NULL or the module is not

initialized

功能概述:

返回EcuM时钟的当 前值(即自连接电 池以来的时间)。

EcuM_GetWakeupTime

函数名称:

E cuM_GetWakeupTime

函数原型:

Std_ReturnType E cuM_GetWakeupTime (

EcuM_TimeType* time

)

服务编号:

0x26

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

time

返回值:

E_OK: The service has succeeded

E_NOT_OK: time points to NULL or the module is not initialized

功能概述:

Ecu M_GetWakeupTime返 回主闹钟的当前值 (所有用户闹钟的 最小绝对时间)。

EcuM_SetClock

函数名称:

EcuM_SetClock

函数原型:

Std_ReturnType EcuM_SetClock (

EcuM_UserType user,

EcuM_TimeType time

)

服务编号:

0x27

同步/异步:

同步

是 否可重入:

输入参数:

user

值域:

依赖配置

time

时间(S)

输入 输出参数:

输出参数:

返回值:

E_OK: The service has succeeded

E_NOT_OK: The service failed

功能概述:

设置 EcuM时钟为指定值

EcuM_SelectBootTarget

函数名称:

EcuM _SelectBootTarget

函数原型:

Std_ReturnType EcuM _SelectBootTarget (

Ec uM_BootTargetType target

)

服务编号:

0x12

同步/异步:

同步

是 否可重入:

输入参数:

target

值域:

输入 输出参数:

输出参数:

返回值:

E_OK: The new boot target was accepted by EcuM

E_NOT_OK: The new boot target was not accepted by Ecu

M

功能概述:

EcuM _SelectBootTarget selects a boot target.

EcuM_GetBootTarget

函数名称:

E cuM_GetBootTarget

函数原型:

Std_ReturnType E cuM_GetBootTarget (

Ec uM_BootTargetType * target

)

服务编号:

0x13

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

target

返回值:

功能概述:

E cuM_GetBootTarget returns the current boot target

EcuM_MainFunction

函数名称:

EcuM_MainFunction

函数原型:

void EcuM_MainFunction (

void

)

服务编号:

0x18

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

Ecum轮询函数, 主要做以下事情:

  1. 验证唤醒源。

  2. EcuM模式处理。

  3. 更新EcuM时钟。

EcuM_SetWakeupEvent

函数名称:

Ec uM_SetWakeupEvent

函数原型:

void Ec uM_SetWakeupEvent (

EcuM _WakeupSourceType sources

)

服务编号:

0x0C

同步/异步:

同步

是 否可重入:

输入参数:

sources

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

设置唤醒事件( 一般由驱动调用)

EcuM_ValidateWakeupEvent

函数名称:

EcuM_Va lidateWakeupEvent

函数原型:

void EcuM_Va lidateWakeupEvent (

EcuM _WakeupSourceType sources

)

服务编号:

0x14

同步/异步:

同步

是 否可重入:

输入参数:

Sources:需 要被验证的唤醒源

值域:

依赖配置

输入 输出参数:

输出参数:

返回值:

功能概述:

用于指示指定 的唤醒源已被验证

EcuM_CheckWakeup

函数名称:

EcuM_CheckWakeup

函数原型:

void EcuM_CheckWakeup (

EcuM _WakeupSourceType wakeupSource

)

服务编号:

0x42

同步/异步:

同步

是 否可重入:

输入参数:

wakeupSource

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

一般由驱动调用 ,用于检查唤醒源

可配置函数定义

EcuM_AL_DriverInitBswM_<x>

函数名称:

EcuM_AL_Dr iverInitBswM_<x>

函数原型:

void EcuM_AL_Dr iverInitBswM_<x> (

void

)

服务编号:

0x28

同步/异步:

同步

是 否可重入:

输入参数:

值域:

输入 输出参数:

输出参数:

返回值:

功能概述:

由BSWM调 用,初始化BSW模块

配置

EcuMGeneral

image10

图5-1EcuMGeneral容器配置图

表5-1 EcuMGeneral属性描述

UI名称

描述

EcuMDevE rrorDetect

取值范围

True/ False

默认取值

False

参数描述

是 否使能开发错误检测

依赖关系

Ec uMMainFunc tionPeriod

取值范围

0-100

默认取值

0.01

参数描述

Ecu m调度任务的执行周期

依赖关系

EcuMVers ionInfoApi

取值范围

True/False

默认取值

False

参数描述

是否使能版本获取API

依赖关系

EcuMCommonConfigration

image11

图5-2 EcuMCommonConfigration容器配置图

表5-2 EcuMCommonConfigration属性描述

UI名称

描述

EcuMC onfigConsi stencyHash

取值范围

0-1 8446744073709551615

默认取值

0

参数描述

所有 BSW 模块的所有PC和L C参数生成的哈希值。 该散列值与 EcuM_ConfigType 中的字段进行 比较,因此允许检查 整个配置的一致性。

依赖关系

EcuMDefa ultAppMode

取值范围

默认取值

参数描述

用于Sta rtOs中传入的APP模式

依赖关系

Reference to OsAppMode

EcuM OSResource

取值范围

默认取值

参数描述

用于使 ECU 进入睡眠模式的 OS 资源的引用

依赖关系

强制关 联到OS的调度表资源

EcuMDefaultShutdownTarget

image12

图5-3 EcuMDefaultShutdownTarget容器配置图

表5-3 EcuMDefaultShutdownTarget属性描述

UI名称

描述

EcuMDe faultState

取值范围

EcuMStateOff/

EcuMStateReset/

EcuMStateSleep

默认取值

参数描述

ECU 退出复位时选择的 默认关闭目标的状态

依赖关系

Ecu MDefaultRe setModeRef

取值范围

引 用到[EcuMResetMode]

默认取值

参数描述

默认复位模式

依赖关系

当 EcuMDefaultState配 置为EcuMStateReset

image13

Ecu MDefaultSl eepModeRef

取值范围

引 用到[EcuMSleepMode]

默认取值

参数描述

默认睡眠模式

依赖关系

当 EcuMDefaultState配 置为EcuMStateSleep

image14

EcuMDriverInitItem

此配置项用于:

  • EcuMDriverInitListZero

  • EcuMDriverInitListOne

  • EcuMDriverRestartList

  • EcuMDriverInitListBswM

image15

图5-4 EcuMDriverInitItem容器配置图

表5-4 EcuMDriverInitItem属性描述

UI名称

描述

EcuMModul eParameter

取值范围

NULL_PTR/

PO STBUILD_PTR/

VOID

默 认取值

VOID

参数描述

定义函 数原型和传递 给函数的参数

依赖关系

Bsw模块和MCA L一般选择POS TBUILD_PTR,

需要特 别注意地是DE M模块,当Ecu MModuleRef选 择为DEM时, EcuMModuleP arameter可以 配置为VOID和 POSTBUILD_PT R,当配置为V OID时,表示D em_PreInit; 当配置为POS TBUILD_PTR, 表示Dem_Init

EcuMMod uleService

取值范围

Init//

DeInit/

PreInit/

Start

默 认取值

Init

参数描述

要调用以 初始化该模块 的服务,例如 Init、Pr eInit、Start 等。

依赖关系

EditMod uleService

取值范围

True、False

默 认 取 值

F a l s e

参数描述

使能手动 修改要初始化 该模块的服务

依赖关系

该配置决定配 置EcuMModul eService是否 可以手动修改

Ec uMModulePb ConfigName

取值范围

默 认 取 值

无 |



参数描述

要 调用以初始化 该模块的参数

依赖关系

EditPb ConfigName

取值范围

True、False

默 认 取 值

F a l s e

参数描述

使能通 过手动修改要 调用以初始化 该模块的参数

依赖关系

该配 置决定配置Ec uMModulePbCo nfigName是否 可以手动修改

Include HeaderFile

取值范围

参数描述

要 调用初始化该 模块的头文件

依赖关系

Edit HeaderFile

取值范围

True、False

默 认 取 值

F a l s e

参数描述

使能要手 动修改调用该 模块的头文件

依赖关系

该配置决定配 置IncludeHe aderFile是否 可以手动修改

Ecu MModuleRef

取值范围

默 认取值

参数描述

外部引用应由 EcuM 初始化的模 块实例的配置 (引用到具体 某一个模块)

依赖关系

当配置在EcuM DriverInitLi stZero中时:

image16

在配置在Ecu MDriverInitL istOne中时:

image17

在配置在EcuM DriverInitLi stBswM中时:

此处选 择为BSW模块

EcuMSleepMode

image18

图5-5 EcuMSleepMode容器配置图

表5-5 EcuMSleepMode属性描述

UI名称

描述

EcuMS leepModeId

取值范围

0-255

默认取值

参数描述

在 EcuM_S electShutdownTarget 等服务中标识

依赖关系

这部分按照升序 方式从0开始默认生成

EcuMSleepM odeSuspend

取值范围

True/False

默认取值

False

参数描述

当配置为True时,进 入halt-sleep模式;

当配置为False时,进 入poll-sleep模式;

依赖关系

Ecu MSleepMode McuModeRef

取值范围

引用到 [McuModeSettingConf

默认取值

参数描述

引用 到MCU的某一睡眠模式

依赖关系

引用到MCU中定义 的SLEEP模式,需要保 证MCU驱动中Mcu_SetM ode能正常执行,并进 入相应的sleep模式;

EcuMWakeup SourceMask

取值范围

引用到 [EcuMWakeupSource]

默认取值

参数描述

当进 入Sleep模式后,仅只 有通过此项关联的唤 醒源才被认为是在此 模式下有效的唤醒源

依赖关系

EcuMWakeupSource

image19

图5-6 EcuMWakeupSource容器配置图

表5-6 EcuMWakeupSource属性描述

UI名称

描述

Ec uMCheckWak eupTimeout

取值范围

0-10

默 | 认 | 取 | 值 |

0

参数描述

EcuM_Ch eckWakeup的超时时间

依赖关系

E cuMValidat ionTimeout

取值范围

0-255

默 | 认 | 取 | 值 |

0

参数描述

EcuM_CheckV alidation的超时时间

依赖关系

EcuMWake upSourceId

取值范围

0-31

默 | 认 | 取 | 值 |

参数描述

唤醒源的标识符

依赖关系

无,填写限制为:5~ 31,0~4为默认唤醒源

Ecu MWakeupSou rcePolling

取值范围

True/False

默 | 认 | 取 | 值 |

False

参数描述

唤醒源是否需要轮询

依赖关系

当此EcuMW akeupSource被EcuMSl eepMode->EcuMWakeup SourceMask引用,且E cuMSleepMode->EcuMS leepModeSuspend配置 为FALSE(POLL模式) ,则此项EcuMWakeup SourcePolling应该配 置为TRUE,表示以轮 询的方式检测唤醒源

EcuMComM ChannelRef

取值范围

引用[ComMChannel][

默 认取值

参数描述

当配置此项 后,当唤醒源检测到 后,会调用ComM_EcuM _WakeUpIndication通 知EcuMComMChannelR ef引用的ComMChannel

依赖关系

EcuMRese tReasonRef

取值范围

引用到[ McuResetReasonConf]

默 | 认 | 取 | 值 |

参数描述

MCU 驱 动程序检测到的复位 原因到唤醒源的映射

依赖关系

EcuMFlexConfiguration

image20

图5-7 EcuMFlexConfiguration容器配置图

表5-7 EcuMFlexConfiguration属性描述

UI名称

描述

EcuMTime rSrcSelect

取值范围

OS/GPT

默认取值

OS

参数描述

选 择ECUM内部计时模块

依赖关系

依赖于OS和Tm模块

EcuMNormal McuModeRef

取值范围

引用到[ McuModeSettingConf]

默认取值

参数描述

当 MCU进入Normal状态时 ,需要设置的MCU模式

依赖关系

有 些MCU,当唤醒源产生 后,会自动进入Norma l模式,因此不需要额 外引用MCU的正常模式

EcuMPa rtitionRef

取值范围

引 用到[EcucPartition]

默认取值

参数描述

决定E CUM跑在哪一个分区中

依赖关系

EcuMAlarmClock

image21

图5-8 EcuMAlarmClock容器配置图

表5-8 EcuMAlarmClock属性描述

UI名称

描述

EcuMAl armClockId

取值范围

0-255

默认取值

参数描述

从0开始, 按升序方式自动生成

依赖关系

E cuMAlarmCl ockTimeOut

取值范围

0-255

默认取值

参数描述

当EcuM内部alarm计时 到达此EcuMAlarmClo ckTimeOut值后,内部 会产生一个alarm唤醒

依赖关系

EcuMAlar mClockUser

取值范围

引用到[ EcuMFlexUserConfig]

默 | 认 | 取 | 值 |

无 |



参数描述

将警 报分配给哪一个user

依赖关系

EcuMFlexUserConfig

image22

图5-9 EcuMFlexUserConfig容器配置图

表5-9 EcuMFlexUserConfig属性描述

UI名称

描述

Ec uMFlexUser

取值范围

0-255

默认取值

参数描述

定义user的id

依赖关系

EcuM FlexEcucPa rtitionRef

取值范围

0-255

默认取值

参数描述

表示 此user属于哪个分区

依赖关系

EcuMGoDownAllowedUsers

image23

图5-10 EcuMGoDownAllowedUsers容器配置图

表5-10 EcuMGoDownAllowedUsers属性描述

UI名称

描述

EcuM GoDownAllo wedUserRef

取值范围

引用到[ EcuMFlexUserConfig]

默认取值

参数描述

表示允许调用EcuM_G oDownHaltPoll的user

依赖关系

EcuMResetMode

image24

图5-11 EcuMResetMode容器配置图

表5-11 EcuMResetMode属性描述

UI名称

描述

EcuMR esetModeId

取值范围

0-255

默认取值

参数描述

创建后默认生成

依赖关系

EcuMSetClockAllowedUsers

image25

图5-12 EcuMSetClockAllowedUsers容器配置图

表5-12 EcuMSetClockAllowedUsers属性描述

UI名称

描述

EcuM GoDownAllo wedUserRef

取值范围

引用到[ EcuMFlexUserConfig]

默认取值

参数描述

允许调用 EcuM_SetClock 的user

依赖关系

EcuMShutdownCause

image26

图5-13 EcuMShutdownCause容器配置图

表5-13 EcuMShutdownCause属性描述

UI名称

描述

EcuMShutd ownCauseId

取值范围

0-255

默认取值

参数描述

创建后默认生成

依赖关系

EcuMFlexGeneral

image27

图5-14 EcuMFlexGeneral容器配置图

表5-14 EcuMFlexGeneral属性描述

UI名称

描述

E cuMAlarmCl ockPresent

取值范围

True/False

默认取值

False

参数描述

指 示是否存在Alarm功能

依赖关系

EcuMMo deHandling

取值范围

True/False

默认取值

False

参数描述

Run Request Protocol是否使能

依赖关系

Ec uMResetLoo pDetection

取值范围

True/False

默 | 认 | 取 | 值 |


F a l s e

参数描述

表示在StartPreOS 中EcuM_Loop Detection是否被调用

依赖关系

EcuMSetPr ogrammable Interrupts

取值范围

True/False

默认取值

False

参数描述

表示在StartPreOS 中EcuM_ AL_SetProgrammableI nterrupts是否被调用

依赖关系

E cuMAlarmWa keupSource

取值范围

默 | 认 | 取 | 值 |

无 |



参数描述

当 EcuMAlarm被作为唤醒 源时,需要配置此项

依赖关系

Reference to EcuMWakeupSource

EcuMAlarmClo ckPresent配置为TRUE