8.1 导入类型(Imported Types)
本节列出ECU管理器模块从相应的AUTOSAR模块导入的所有类型。
[SWS_EcuM_02810]⌈
| 模块 | 导入类型 |
|---|---|
| BSW模式管理器(BswM) | BswM_ConfigType |
⌋(SRS_BSW_00301)
[SWS_EcuM_03019]⌈ECUM_E_EARLIER_ACTIVE和ECUM_E_PAST应为Std_ReturnType类型,并表示以下值:
- ECUM_E_EARLIER_ACTIVE = 3
- ECUM_E_PAST = 4⌋()
8.2 类型定义(Type definitions)
8.2.1 EcuM_ConfigType
[SWS_EcuM_04038]⌈
| 名称: | EcuM_ConfigType | |
|---|---|---|
| 类型: | 结构体(Structure) | |
| 范围: | - | 此结构体的内容取决于EcuM的后构建配置。 |
| 描述: | 指向此类结构体的指针应提供给ECU状态管理器初始化程序以进行配置。 | |
| 通过以下方式可用: | EcuM.h |
⌋()
[SWS_EcuM_02801]⌈EcuM_ConfigType类型定义的结构体应包含ECU管理器模块的后构建配置参数,以及由ECU管理器模块初始化的所有模块的所有ConfigType结构体的指针。⌋()
ECU管理器模块配置工具必须针对包含ECU配置的一组给定基础软件模块,专门生成由EcuM_ConfigType类型定义的结构体。基础软件模块集派生自相应的EcuM参数。
[SWS_EcuM_02794]⌈EcuM_ConfigType类型中定义的结构体应包含一个附加的后构建配置变体标识符(根据计算标识符的算法,可为uint8/uint16/uint32)。另请参见第7.3.4节“配置一致性检查”。⌋()
[SWS_EcuM_02795]⌈EcuM_ConfigType类型定义的结构体应包含一个附加的哈希码,该哈希码会与配置参数EcuMConfigConsistencyHash(参见ECUC_EcuM_00102)进行测试,以检查配置数据的一致性。另请参见7.3.4节“配置一致性检查”。⌋()
对于每个给定的ECU配置,ECU管理器模块配置工具必须生成此结构体的一个实例,该实例填充有ECU管理器模块的后构建配置参数,以及指向上述模块的配置结构体实例的指针。这些指针派生自相应的EcuM参数。
8.2.2 EcuM_RunStatusType
[SWS_EcuM_04120]⌈
| 名称: | EcuM_RunStatusType | |
|---|---|---|
| 类型: | uint8 | |
| 范围: | ECUM_RUNSTATUS_UNKNOWN 0 | 未知状态。初始值。 |
| ECUM_RUNSTATUS_REQUESTED 1 | 来自EcuM的状态请求 | |
| ECUM_RUNSTATUS_RELEASED 2 | 来自EcuM的状态释放。 | |
| 描述: | 发送到BSW模式管理器的运行请求协议的结果 | |
| 通过以下方式可用: | EcuM.h |
⌋(SRS_ModeMgm_09116)
[SWS_EcuM_04121]⌈ECU管理器模块应按照EcuM_RunStatusType中列出的内容,将运行请求协议的状态通知给BSW模式管理器。⌋(SRS_ModeMgm_09116)
8.2.3 EcuM_UserType
[SWS_EcuM_04067]⌈
| 名称 | EcuM_UserType |
|---|---|
| 种类 | 类型(Type) |
| 派生自 | uint8 |
| 描述 | 每个用户的唯一值。 |
| 变体 | – |
| 通过以下方式可用 | Rte_EcuM_Type.h |
⌋()
[SWS_EcuM_00487]⌈集成商应在系统生成时为每个用户定义一个唯一值。参见ECUC_EcuM_00146⌋(SRS_ModeMgm_09122)
8.2.4 EcuM_WakeupSourceType
[SWS_EcuM_04040]⌈
| 名称: | EcuM_WakeupSourceType | ||
|---|---|---|---|
| 类型: | uint32 | ||
| 范围: | ECUM_WKSOURCE_POWER | – | 电源循环(位0) |
| ECUM_WKSOURCE_RESET(默认) | – | 硬件复位(位1)。如果MCU驱动无法区分电源循环和复位原因,则应将此作为默认唤醒源。 | |
| ECUM_WKSOURCE_INTERNAL_RESET | – | 微控制器的内部复位(位2)。内部复位通常仅复位微控制器内核,而不复位外设或内存控制器。确切行为取决于硬件。此源也可能表示未处理的异常。 | |
| ECUM_WKSOURCE_INTERNAL_WDG | – | 内部看门狗复位(位3) | |
| ECUM_WKSOURCE_EXTERNAL_WDG | – | 外部看门狗复位(位4),如果硬件支持检测 | |
| 描述: | EcuM_WakeupSourceType定义了一个位字段,具有5个预定义位置(参见范围)。该位字段为每个唤醒源提供一个位。在唤醒(WAKEUP)中,所有位清零表示未知唤醒源。在启动(STARTUP)中,所有位清零表示未知重启或复位原因。在这种情况下,应假定为ECUM_WKSOURCE_RESET。 | ||
| 通过以下方式可用: | EcuM.h |
⌋()
[SWS_EcuM_02165]⌈其他唤醒源(除预定义源外)应通过配置单独分配到位字段的5至31位。位分配应由配置工具完成。⌋()
[SWS_EcuM_02166]⌈EcuMWakeupSource容器中的EcuMWakeupSourceId(参见ECUC_EcuM_00151)字段应定义该唤醒源在所有EcuM_WakeupSourceType位字段实例中的对应位置。⌋()
8.2.5 EcuM_WakeupStatusType
[SWS_EcuM_04041]⌈
| 名称: | EcuM_WakeupStatusType | |
|---|---|---|
| 类型: | uint8 | |
| 范围: | ECUM_WKSTATUS_NONE | 0 未检测到未处理的唤醒事件 |
| ECUM_WKSTATUS_PENDING | 1 检测到唤醒事件但尚未验证 | |
| ECUM_WKSTATUS_VALIDATED | 2 唤醒事件有效 | |
| ECUM_WKSTATUS_EXPIRED | 3 唤醒事件未被验证并已过期 | |
| 描述: | 该类型描述唤醒源的可能状态。 | |
| 通过以下方式可用: | EcuM.h |
⌋()
注:此声明必须改为模式。名称必须更改。
8.2.6 EcuM_BootTargetType
[SWS_EcuM_04042]⌈
| 名称 | EcuM_BootTargetType | ||
|---|---|---|---|
| 种类 | 类型(Type) | ||
| 派生自 | uint8 | ||
| 描述 | 此类型表示ECU管理器模块可配置的引导目标。默认引导目标为ECUM_BOOT_TARGET_OEM_BOOTLOADER。 | ||
| 范围 | ECUM_BOOT_TARGET_APP | 0 | ECU将引导至应用程序 |
| ECUM_BOOT_TARGET_OEM_BOOTLOADER | 1 | ECU将引导至OEM引导加载程序 | |
| ECUM_BOOT_TARGET_SYS_BOOTLOADER | 2 | ECU将引导至系统供应商引导加载程序 | |
| 变体 | – | ||
| 通过以下方式可用 | Rte_EcuM_Type.h |
⌋()
8.2.7 EcuM_ResetType
[SWS_EcuM_04044]⌈
| 名称: | EcuM_ResetType | |
|---|---|---|
| 类型: | uint8 | |
| 范围: | ECUM_RESET_MCU 0 | 通过Mcu_PerformReset进行微控制器复位 |
| ECUM_RESET_WDG 1 | 通过WdgM_PerformReset进行看门狗复位 | |
| ECUM_RESET_IO 2 | 通过I/O线切换进行复位 | |
| 描述: | 此类型描述ECU状态管理器支持的复位机制。可通过配置进行扩展。 | |
| 通过以下方式可用: | EcuM.h |
8.2.8 EcuM_ShutdownCauseType
[SWS_EcuM_04045]⌈
| 名称 | EcuM_ShutdownCauseType | ||
|---|---|---|---|
| 种类 | 类型(Type) | ||
| 派生自 | uint8 | ||
| 描述 | 此类型描述ECU状态管理器关机的原因。可通过配置进行扩展。 | ||
| 范围 | ECUM_CAUSE_UNKNOWN | 0 未设置原因。 | |
| ECUM_CAUSE_ECU_STATE | 1 | ECU状态机进入关机状态 | |
| ECUM_CAUSE_WDGM | 2 看门狗管理器检测到故障 | ||
| ECUM_CAUSE_DCM | 3 | 诊断通信管理器因服务请求而请求关机 | |
| 变体 | – | ||
| 通过以下方式可用 | Rte_EcuM_Type.h |
⌋()
8.2.9 EcuM_ShutdownModeType
[SWS_EcuM_04101]⌈
| 名称 | EcuM_ShutdownModeType | ||
|---|---|---|---|
| 种类 | 类型(Type) | ||
| 派生自 | uint16 | ||
| 描述 | 此数据类型表示ECU管理器模块的模式。 | ||
| 范围 | {ecuc(EcuM/EcuMConfiguration/ EcuMFlexConfiguration/ EcuMResetMode.SHORT-NAME)} | {256 + ecuc(EcuM/ EcuMConfiguration/ EcuMFlexConfiguration/ EcuMResetMode.EcuMResetModeId)} | 已配置的复位模式 |
| {ecuc(EcuM/EcuMConfiguration/ EcuMCommonConfiguration/ EcuMSleepMode.SHORT-NAME)} | {ecuc(EcuM/ EcuMConfiguration/ EcuMCommonConfiguration/ EcuMSleepMode.EcuMSleepModeId)} | 已配置的睡眠模式 | |
| 变体 | – | ||
| 通过以下方式可用 | Rte_EcuM_Type.h |
⌋()
8.2.10 EcuM_TimeType
[SWS_EcuM_04102]⌈
| 名称 | EcuM_TimeType |
|---|---|
| 种类 | 类型(Type) |
| 派生自 | uint32 |
| 描述 | 此数据类型表示ECU管理器模块的时间。 |
| 变体 | – |
| 通过以下方式可用 | Rte_EcuM_Type.h |
8.2.11 EcuM_ShutdownTargetType
[SWS_EcuM_04136]⌈
| 名称 | EcuM_ShutdownTargetType | ||
|---|---|---|---|
| 种类 | 类型(Type) | ||
| 派生自 | uint8 | ||
| 描述 | – | ||
| 范围 | ECUM_SHUTDOWN_TARGET_SLEEP | 0x0 | – |
| ECUM_SHUTDOWN_TARGET_RESET | 0x1 | – | |
| ECUM_SHUTDOWN_TARGET_OFF | 0x2 | – | |
| 变体 | – | ||
| 通过以下方式可用 | Rte_EcuM_Type.h |
⌋()
8.3 函数定义(Function Definitions)
本节列出为上层模块提供的函数。
8.3.1 概述(General)
8.3.1.1 EcuM_GetVersionInfo
[SWS_EcuM_02813]⌈
| 服务名称: | EcuM_GetVersionInfo |
|---|---|
| 语法: | void EcuM_GetVersionInfo( Std_VersionInfoType* versioninfo ) |
| 服务ID[十六进制]: | 0x00 |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 可重入(Reentrant) |
| 输入参数: | 无 |
| 输入/输出参数: | 无 |
| 输出参数: | versioninfo:指向存储此模块版本信息的位置的指针。 |
| 返回值: | 无 |
| 描述: | 返回此模块的版本信息。 |
| 通过以下方式可用: | EcuM.h |
⌋(SRS_BSW_00407, SRS_BSW_00411)
8.3.2 初始化和关闭序列(Initialization and Shutdown Sequences)
8.3.2.1 EcuM_GoDownHaltPoll
[SWS_EcuM_91002]⌈
| 服务名称: | EcuM_GoDownHaltPoll | |
|---|---|---|
| 语法: | Std_ReturnType EcuM_GoDownHaltPoll( uint16 caller ) | |
| 服务ID[十六进制]: | 0x2c | |
| 同步/异步: | 同步(Synchronous) | |
| 可重入性: | 可重入(Reentrant) | |
| 输入参数: | caller:调用模块的模块ID。只有特定模块被允许调用此函数,且仅当关机目标为复位(RESET)或关闭(OFF)时有效。 | |
| 输入/输出参数: | 无 | |
| 输出参数: | 无 | |
| 返回值: | Std_ReturnType E_NOT_OK:请求未被接受。 E_OK:如果关机目标类型(ShutdownTargetType)为睡眠(SLEEP),则调用成功返回,ECU已再次离开睡眠状态。如果关机目标类型为复位(RESET)或关闭(OFF),则此调用不会返回。 | |
| 描述: | 指示ECU状态管理器模块根据先前选择的关机目标进入睡眠模式、复位或关闭状态。 | |
| 通过以下方式可用: | EcuM.h |
⌋()
8.3.2.2 EcuM_Init
[SWS_EcuM_02811]⌈
| 服务名称: | EcuM_Init |
|---|---|
| 语法: | void EcuM_Init( void ) |
| 服务ID[十六进制]: | 0x01 |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 可重入(Reentrant) |
| 输入参数: | 无 |
| 输入/输出参数: | 无 |
| 输出参数: | 无 |
| 返回值: | 无 |
| 描述: | 初始化ECU状态管理器并执行启动过程。该函数永远不会返回(它会调用StartOS) |
| 通过以下方式可用: | EcuM.h |
⌋(SRS_BSW_00358, SRS_BSW_00414, SRS_BSW_00101)
8.3.2.3 EcuM_StartupTwo
[SWS_EcuM_02838]⌈
| 服务名称: | EcuM_StartupTwo |
|---|---|
| 语法: | void EcuM_StartupTwo( void ) |
| 服务ID[十六进制]: | 0x1a |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 不可重入(Non Reentrant) |
| 输入参数: | 无 |
| 输入/输出参数: | 无 |
| 输出参数: | 无 |
| 返回值: | 无 |
| 描述: | 此函数实现启动II(STARTUP II)状态。 |
| 通过以下方式可用: | EcuM.h |
⌋()
[SWS_EcuM_02806]⌈EcuM_StartupTwo的注意事项:此函数必须从作为StartOS的结果而直接启动的任务中调用。也就是说,要么EcuM_StartupTwo函数必须从自动启动任务中调用,要么EcuM_StartupTwo函数必须从被显式启动的任务中调用。⌋()
对SWS_EcuM_02806的说明:操作系统提供了多种在启动时激活任务的机制。通常,EcuM_StartupTwo会被配置为默认应用模式下的自动启动任务。
集成商可以配置操作系统通过任何机制激活EcuM_StartupTwo任务,只要它在调用StartOS之后立即启动。该任务也可以从另一个任务中激活,而这个其他任务可以是自动启动任务。
将EcuM_StartupTwo作为自动启动任务启动是一种隐式激活。其他机制则是显式激活。
8.3.2.4 EcuM_Shutdown
[SWS_EcuM_02812]⌈
| 服务名称: | EcuM_Shutdown |
|---|---|
| 语法: | void EcuM_Shutdown( void ) |
| 服务ID[十六进制]: | 0x02 |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 可重入(Reentrant) |
| 输入参数: | 无 |
| 输入/输出参数: | 无 |
| 输出参数: | 无 |
| 返回值: | 无 |
| 描述: | 通常从关闭钩子调用,此函数接管执行控制并将执行GO OFF II活动。 |
| 通过以下方式可用: | EcuM.h |
⌋(SRS_ModeMgm_09114)
8.3.3 状态管理(State Management)
8.3.3.1 EcuM_SetState
[SWS_EcuM_04122]⌈
| 服务名称: | EcuM_SetState |
|---|---|
| 语法: | void EcuM_SetState( EcuM_ShutdownTargetType state ) |
| 服务ID[十六进制]: | 0x2b |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 可重入(Reentrant) |
| 输入参数: | state:BSW模式管理器指示的状态。 |
| 输入/输出参数: | 无 |
| 输出参数: | 无 |
| 返回值: | 无 |
| 描述: | BSW模式管理器调用此函数以通知状态切换。 |
| 通过以下方式可用: | EcuM.h |
⌋()
[SWS_EcuM_04123]⌈EcuM_SetState函数应将ECU管理器状态设置为state参数的值。
如果state参数不是有效值,且开发错误报告已启用,EcuM_SetState函数不应更改状态,还应向DET模块发送ECUM_E_STATE_PAR_OUT_OF_RANGE错误消息。⌋(SRS_ModeMgm_09116)
8.3.3.2 EcuM_RequestRUN
[SWS_EcuM_04124]⌈
| 服务名称: | EcuM_RequestRUN |
|---|---|
| 语法: | Std_ReturnType EcuM_RequestRUN( EcuM_UserType user ) |
| 服务ID[十六进制]: | 0x03 |
| 同步/异步: | 同步(Synchronous) |
| 可重入性: | 可重入(Reentrant) |
| 输入参数: | user:请求运行(RUN)状态的实体的ID。 |
| 输入/输出参数: | 无 |
| 输出参数: | 无 |
| 返回值: | Std_ReturnType E_OK:请求被ECU管理器接受。 E_NOT_OK:请求未被ECU管理器接受,详细错误条件已发送至DET(参见下文错误代码)。 |
| 描述: | 发出运行(RUN)状态请求。配置时在状态管理器中注册的每个用户都可发出请求。 |
| 通过以下方式可用: | EcuM.h |
⌋()
[SWS_EcuM_04125]⌈EcuM_RequestRUN的请求不能嵌套,即一个用户只能发出一个请求,不能多个。同一用户的额外或重复请求应向DET报告。当然,仅在开发环境下才会通知DET。⌋(SRS_ModeMgm_09116)
[SWS_EcuM_04126]⌈实现必须跟踪ECU上已知的每个用户的请求。运行请求特定于用户。⌋(SRS_ModeMgm_09116)
EcuM_RequestRUN的错误代码:ECUM_E_MULTIPLE_RUN_REQUESTS:同一用户ID发出多个请求时
8.3.3.3 EcuM_ReleaseRUN
[SWS_EcuM_04127]⌈
| 服务名称: | EcuM_ReleaseRUN | |
|---|---|---|
| 语法: | Std_ReturnType EcuM_ReleaseRUN( EcuM_UserType user ) | |
| 服务ID[十六进制]: | 0x04 | |
| 同步/异步: | 同步(Synchronous) | |
| 可重入性: | 可重入(Reentrant) | |
| 输入参数: | user:释放运行(RUN)状态的实体的ID。 | |
| 输入/输出参数: | 无 | |
| 输出参数: | 无 | |
| 返回值: | Std_ReturnType E_OK:释放请求被ECU管理器接受 E_NOT_OK:释放请求未被ECU管理器接受,详细错误条件已发送至DET(参见下文错误代码)。 | |
| 描述: | 释放先前通过调用EcuM_RequestRUN发出的运行(RUN)请求。该服务用于实现AUTOSAR端口。 | |
| 通过以下方式可用: | EcuM.h |
⌋(SRS_ModeMgm_09116)
EcuM_ReleasePOST_RUN的配置:有关用户ID及其生成的更多信息,请参见8.2.3节“EcuM_UserType”。
EcuM_ReleasePOST_RUN的错误代码:ECUM_E_MISMATCHED_RUN_RELEASE:在没有匹配请求的情况下执行释放操作时。
6708

被折叠的 条评论
为什么被折叠?



