1 图示
2 数据类型
查看数据类型的原因是:这里面方便调试,通过上位机查询很方便。
WdgM_ConfigType |
结构WdgM_ConfigType应该包含Watchdog Manager模块的所有构建后可配置参数。该结构的确切内容取决于所选的配置变体。
WdgM_SupervisedEntityIdType |
此类型为看门狗管理器标识单个受监视实体。
WdgM_CheckpointIdType |
这种类型在看门狗管理器的受监督实体上下文中标识检查点。注意,单个检查点只能由受监督实体ID和检查点ID这对组合识别。
注意,Checkpoint ID本身并不是唯一的。只有监督实体ID和检查点ID唯一标识一个检查点。
WdgM_ModeType |
这种类型区分为看门狗管理器配置的不同模式
WdgM_LocalStatusType: WDGM_LOCAL_STATUS_OK :本监督实体的监督没有显示出任何失败 WDGM_LOCAL_STATUS_FAILED :这个被监督实体的监督已经失败了,但仍然可以被“治愈”。也就是说,如果被监管实体恢复到正常行为,它的监管状态也将返回到WDGM_LOCAL_STATUS_OK。此外,监视失败的次数还没有超过可配置的限制。当超过此限制时,状态将更改为WDGM_LOCAL_STATUS_EXPIRED。 WDGM_LOCAL_STATUS_EXPIRED :对这个被监督实体的监督已经永久失效。这种状态不能被保留。 WDGM_LOCAL_STATUS_DEACTIVATED :对该被监督实体的监督暂时失效。 |
此类型应使用用于表示单个受监管实体的监管当前状态的变量。
WdgM_GlobalStatusType :这个和上个的定义含义一样,只不过一个全局一个局部。 有一个需要注意: WDGM_GLOBAL_STATUS_STOPPED :监视失败,已超过允许的失败限制,看门狗驱动程序已被指示停止触发。看门狗要重置了。 |
类型为应使用的变量表示Watchdog Manager模块的全局监控状态。
3 API
指示看门狗管理器已到达监视实体中的检查点。
WdgM_CheckpointReached |
Std_ReturnType WdgM_CheckpointReached ( |
SEID | 报告检查点的受监督实体的标识符 |
CheckpointID | 已到达的受监督实体中检查点的标识符。 |
函数WdgM_CheckpointReached()将增加所报告Checkpoint的活动计数器。
函数WdgM_CheckpointReached()将使用所报告的检查点对所报告的受监督实体执行截止日期监督。输出应为被监督实体的期限监督的更新结果。
返回单个受监管实体的监管状态。
Service name: | WdgM_GetLocalStatus |
Syntax: | Std_ReturnType WdgM_GetLocalStatus ( |
SEID | 应返回其监管状态的被监管实体标识符。 |
CheckpointID | 被监督单位的监督状况。 |
返回看门狗管理器的全局监视状态
Service name: | WdgM_GetGlobalStatus |
Syntax: | Std_ReturnType WdgM_GetGlobalStatus ( |
Status | 看门狗管理器的全局监督状态。 |
指示看门狗管理器复位看门狗
Service name: | WdgM_PerformReset |
Syntax: | void WdgM_PerformReset( void ) |
当此服务被调用时,看门狗管理器将为所有配置的看门狗驱动程序设置触发条件为0(0)。
因此,硬件看门狗将导致外部硬件重置
调用此服务后,看门狗管理器将不再更新触发条件
当调用此API时,不再考虑全局监视状态
返回第一个达到状态WDGM_LOCAL_STATUS_EXPIRED的SEID
注释一下上面的描述:WDGM_LOCAL_STATUS_EXPIRED :对这个被监督实体的监督已经永久失效。这种状态不能被保留。
Service name: | WdgM_GetFirstExpiredSEID |
Syntax: | Std_ReturnType WdgM_GetFirstExpiredSEID ( |
Parameters (out): | SEID | 第一次到达该状态的受监管实体的标识符 注意:这是一个输出的参数 |
WDGM是没有回调的
不理解的点:WdgM_MainFunction()里面
对于自上次调用WdgM_Init()以来切换到状态为WDGM_LOCAL_STATUS_EXPIRED的第一个监督实体,函数WdgM_MainFunction()应该将该监督实体的SEID存储在一个未初始化的RAM中,作为双倒置值(即SEID和~SEID)。
预期的接口如下图:
强制性接口:
4 服务接口
看门狗管理器服务的SW-C描述将定义可供SW-Cs和cdd使用的看门狗管理器端口。每个使用服务的AUTOSAR SW-C或CDD必须在自己的描述中包含服务端口。这些端口具有相同的接口类型,必须连接到Watchdog Manager模块的端口,以便RTE能够生成适当的id和所需的符号。
Watchdog Manager模块的“本地监控状态”和“全局监控状态”通过模式端口上报给SW-Cs和cdd。SW-C和CDD可以定义自己的模式端口,其接口与看门狗管理器模块的模式端口相同。之后,SW-C或CDD可以查询状态,并通过模式端口得到状态更改的通知。此外,SW-C可以定义由于状态更改而由RTE启动或停止的可运行表。
BSW模块应该直接调用API函数,并考虑RTE的映射。
为了减少看门狗管理器模块提供的端口数量,SW-Cs / CDD和服务之间的所有接口都建模为客户端/服务器通信。
唯一的监管实体id用于识别ECU内的监管实体。为了使应用程序代码独立于依赖ecu的受监督实体id的配置,没有将SW-C和cdd使用的id显式建模为在SW-C和服务之间传递的数据元素。这些id被建模为Watchdog Manager模块的提供端口的端口定义参数值。因此,受监督实体id将不会作为参数显示在客户机-服务器接口的操作中。作为这种方法的进一步结果,每个受监督实体将有单独的端口。
为了减少看门狗管理器模块提供的端口数量,SW-Cs / CDD和服务之间的所有接口都建模为客户端/服务器(CSI)通信。
唯一的监管实体id用于识别ECU内的监管实体。为了使应用程序代码独立于依赖ecu的受监督实体id的配置,没有将SW-C和cdd使用的id显式建模为在SW-C和服务之间传递的数据元素。这些id被建模为Watchdog Manager模块的提供端口的端口定义参数值。因此,受监督实体id将不会作为参数显示在客户机-服务器接口的操作中。作为这种方法的进一步结果,每个受监督实体将有单独的端口。
5 服务接口
下图显示了AUTOSAR软件组件(单个或多个实例)如何通过服务端口连接到Watchdog Manager模块。左边是组件SWC Type A的两个实例(swc1和swc2)和组件SWC Type B的一个实例(swc3)。
在看门狗管理器端,每个受监管实体都有一个端口,提供上面描述的接口WdgM_AliveSupervision的所有服务。每个受监管实体都有一个端口,用于为与该应用程序相关联的每个受监管实体要求这些服务。
看门狗管理模块应该为每个被配置的被监控实体提供一个活动监控的服务端口,为了能够将活动监视端口与其对应的状态报告模式端口相匹配,需要一个命名约定。
Watchdog Manager模块的Alive Supervision端口名称如下:
下图显示了AUTOSAR软件组件(单个或多个实例)如何通过模式和服务端口连接到Watchdog Manager模块。在左侧,有两个SWC Type A组件的实例(swc1和swc2)和一个SWC Type b组件的实例(swc3)。每个组件都连接到对应于其自己的受监督实体的模式端口。此外,swc3连接到全局模式端口,因此可以对所有受监管实体的联合监管状态的变化做出反应。