AUTOSAR EcuM规范解析(三)

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_NONE0 未检测到未处理的唤醒事件
ECUM_WKSTATUS_PENDING1 检测到唤醒事件但尚未验证
ECUM_WKSTATUS_VALIDATED2 唤醒事件有效
ECUM_WKSTATUS_EXPIRED3 唤醒事件未被验证并已过期
描述:该类型描述唤醒源的可能状态。
通过以下方式可用:EcuM.h

⌋()

注:此声明必须改为模式。名称必须更改。

8.2.6 EcuM_BootTargetType

[SWS_EcuM_04042]⌈

名称EcuM_BootTargetType
种类类型(Type)
派生自uint8
描述此类型表示ECU管理器模块可配置的引导目标。默认引导目标为ECUM_BOOT_TARGET_OEM_BOOTLOADER。
范围ECUM_BOOT_TARGET_APP0ECU将引导至应用程序
ECUM_BOOT_TARGET_OEM_BOOTLOADER1ECU将引导至OEM引导加载程序
ECUM_BOOT_TARGET_SYS_BOOTLOADER2ECU将引导至系统供应商引导加载程序
变体
通过以下方式可用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_UNKNOWN0 未设置原因。
ECUM_CAUSE_ECU_STATE1ECU状态机进入关机状态
ECUM_CAUSE_WDGM2 看门狗管理器检测到故障
ECUM_CAUSE_DCM3诊断通信管理器因服务请求而请求关机
变体
通过以下方式可用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_SLEEP0x0
ECUM_SHUTDOWN_TARGET_RESET0x1
ECUM_SHUTDOWN_TARGET_OFF0x2
变体
通过以下方式可用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:在没有匹配请求的情况下执行释放操作时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值