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软件层级架构如下图
图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为配置参数的模块初始化;两者的初始化列表示例如下图
图2-1 初始化列表
:mark:`注1`:若需要初始化其他模块,需要由修改发布配置工具
EcuMDriverRestartList则为唤醒后支持的初始化列表。
睡眠唤醒功能
睡眠唤醒功能介绍
睡眠唤醒是常用的Bsw功能之一,此部分功能的处理核心部分在EcuM是实现;对于睡眠唤醒的几种方式描述如下:
方式一:Mcu休眠,由中断唤醒
方式二:Mcu休眠,但周期性唤醒
方式三:Mcu掉电,由外部设备检测到唤醒事件直接给Mcu供电
睡眠:
睡眠可以降低Ecu的功耗,EcuM对于上述方式一,二都需要Mcu休眠,需要调用EcuM的Api:EcuM_GoDownHaltPoll,对应的处理流程如下图:
注:本节描述的时序图仅考虑单核情况,多核的睡眠时序需要参考EcuM的SWS文档。
图2-2 EcuM_GoDownHaltPoll处理流程
其中GoSleep Sequence如下图:
图2-3 GoSleep处理流程
对于方式三,睡眠的时候Mcu直接掉电,涉及到Shutdown状态的处理。
图2-4 Shutdown处理流程
其中OffPreOS Sequence如下图:
图2-5 OffPreOS处理流程
OffPostOS Sequence如下图:
图2-6 OffPostOS处理流程
唤醒:
对于每个唤醒源Wakeup Source的状态与对应的描述如下所示:
表2-1 唤醒源状态描述
状态 |
描述 |
NONE |
唤醒事件未检测到,或者已经被清除 |
PENDING |
唤醒事件检测到,但是还未验证 |
VALIDATED |
唤醒事件检测到,并且已经验证成功 |
EXPIRED |
唤醒事件检测到,但是已经校验超时 |
对于状态的流转如下:
图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配置数据刷写,有两种方式:
Loadable。PB配置数据存放在固定某一个地址段,通过Bootload等方式在运行时去修改PB配置。
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 |
依赖配置生成的宏定义、数据结构等 |
图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轮询函数, 主要做以下事情:
|
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
图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
图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
图5-3 EcuMDefaultShutdownTarget容器配置图
表5-3 EcuMDefaultShutdownTarget属性描述
UI名称 |
描述 |
|||
EcuMDe faultState |
取值范围 |
EcuMStateOff/ EcuMStateReset/ EcuMStateSleep |
默认取值 |
无 |
参数描述 |
ECU 退出复位时选择的 默认关闭目标的状态 |
|||
依赖关系 |
无 |
|||
Ecu MDefaultRe setModeRef |
取值范围 |
引 用到[EcuMResetMode] |
默认取值 |
无 |
参数描述 |
默认复位模式 |
|||
依赖关系 |
当 EcuMDefaultState配 置为EcuMStateReset |
|||
Ecu MDefaultSl eepModeRef |
取值范围 |
引 用到[EcuMSleepMode] |
默认取值 |
无 |
参数描述 |
默认睡眠模式 |
|||
依赖关系 |
当 EcuMDefaultState配 置为EcuMStateSleep |
EcuMDriverInitItem
此配置项用于:
EcuMDriverInitListZero
EcuMDriverInitListOne
EcuMDriverRestartList
EcuMDriverInitListBswM
图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中时: 在配置在Ecu MDriverInitL istOne中时: 在配置在EcuM DriverInitLi stBswM中时: 此处选 择为BSW模块 |
EcuMSleepMode
图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
图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
图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
图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
图5-9 EcuMFlexUserConfig容器配置图
表5-9 EcuMFlexUserConfig属性描述
UI名称 |
描述 |
|||
Ec uMFlexUser |
取值范围 |
0-255 |
默认取值 |
无 |
参数描述 |
定义user的id |
|||
依赖关系 |
无 |
|||
EcuM FlexEcucPa rtitionRef |
取值范围 |
0-255 |
默认取值 |
无 |
参数描述 |
表示 此user属于哪个分区 |
|||
依赖关系 |
无 |
EcuMGoDownAllowedUsers
图5-10 EcuMGoDownAllowedUsers容器配置图
表5-10 EcuMGoDownAllowedUsers属性描述
UI名称 |
描述 |
|||
EcuM GoDownAllo wedUserRef |
取值范围 |
引用到[ EcuMFlexUserConfig] |
默认取值 |
无 |
参数描述 |
表示允许调用EcuM_G oDownHaltPoll的user |
|||
依赖关系 |
无 |
EcuMResetMode
图5-11 EcuMResetMode容器配置图
表5-11 EcuMResetMode属性描述
UI名称 |
描述 |
|||
EcuMR esetModeId |
取值范围 |
0-255 |
默认取值 |
无 |
参数描述 |
创建后默认生成 |
|||
依赖关系 |
无 |
EcuMSetClockAllowedUsers
图5-12 EcuMSetClockAllowedUsers容器配置图
表5-12 EcuMSetClockAllowedUsers属性描述
UI名称 |
描述 |
|||
EcuM GoDownAllo wedUserRef |
取值范围 |
引用到[ EcuMFlexUserConfig] |
默认取值 |
无 |
参数描述 |
允许调用 EcuM_SetClock 的user |
|||
依赖关系 |
无 |
EcuMShutdownCause
图5-13 EcuMShutdownCause容器配置图
表5-13 EcuMShutdownCause属性描述
UI名称 |
描述 |
|||
EcuMShutd ownCauseId |
取值范围 |
0-255 |
默认取值 |
无 |
参数描述 |
创建后默认生成 |
|||
依赖关系 |
无 |
EcuMFlexGeneral
图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 |