目录
12 Platform Health Management
12.1 What is Platform Health Management
12.1.1 Responsibilities
12.1.2 Deadline Supervision
12.1.3 Alive Supervision
12.1.4 Logical Supervision
12.1.5 Local Supervision status
12.1.6 Global Supervision Status
12.2 Supervision
12.3 Configuration
12.3.1 Supervised Entity
2.3.1.1 Template
12.3.1.2 Name and Numeric Identifier
12.4 AUTOSAR API
12.4.1 PHM
12.4.2 SupervisedEntity
12.5 Types
12.5.1 SE_LocalSupStatusType
平台健康管理(PHM)是自适应平台体系结构中的一个功能集群,用于监管软件的执行。平台运行状况管理支持对单个应用程序实例执行的监视,以确定应用程序的本地状态,并根据所有报告应用程序的状态派生全局平台运行状况。
作为一个功能集群,平台管理包括一个库,它向应用程序提供C++ API,使应用程序的执行得以监视并监视其状态。功能集群还包括一个运行时进程守护进程,该守护进程支持基于每个受监控应用程序实例的本地状态派生全局平台健康状态。C++ API在AUSOSAR标准命名空间AR::PHM中实现。平台健康管理API通常与AUTOSAR标准一致。
平台健康管理(PHM)支持通过受监督的实体监视应用程序实例。自适应应用程序可以在一个应用程序中包含零个、一个或多个受监控实体,并且每个受监控实体可以被监控:
- Deadline Supervision——检查“开始”和“结束”检查点之间的响应时间。(检查被监管实体的步骤是否被在配置的最大和最小限定事件内执行。)
- Alive Supervision(版本中不支持)——检查给定时间段内的预期执行次数。
- Logical Supervision(版本中不支持)——检查程序遵循预期路径(即从检查点到检查点)。检查执行期间的控制流是否和设计的控制流一致
类似地,平台健康管理提供了监控整个平台健康状态的机制,例如监控“正常”、“过电压”或“欠电压”的状态。运行状况状态通过一个或多个由应用程序实例更新的运行状况通道进行监视。
此版本的RTA-VRTE只支持最后期限监督。单个全局监管状态是从每个本地监管实体的状态汇总而来的
如果在被监管的实体中检测到失败,平台健康管理可以出发一个可配置的恢复动作。
截止期监督验证两个检查点之间的执行时间是否在“截止期最小值”和“截止期最大值”定义的允许范围内。
最后期限监督验证总执行时间(也称为响应时间),即两个检查点之间经过的时间。因此,响应时间包括来自其他应用的任何干扰。
自适应应用程序使用ReportCheckpoint来指示何时达到所测量的执行时间的开始和结束。到达结束检查点后,平台健康管理将根据两个报告之间观察到的时间来确定结果。
图12.1说明了可能的结果:
活动监视用于检测无响应的自适应应用程序。受监管实体通常在执行开始时报告一个检查点,作为有效性指示。如果错过了可配置数量的指示,则活动监视将失败。
逻辑监视验证受监视的实体是否遵循有效的执行路径。实体在执行和平台健康管理中报告一个检查点,并验证执行路径是否与配置的有效路径一致。
平台健康管理为每个受监管实体维护本地监管状态。状态将各种监督类型(活动、截止日期或逻辑监督)的结果合并为受监督实体的总体状态。
如果为受监管实体配置的任何最后期限监管没有失败,则本地监管状态被视为“正常”;如果至少有一个最后期限监管失败,则本地监管状态被视为“过期”。
此版本仅基于最后期限监督的结果评估受监督实体的本地监督状态。
全球监管汇总了所有受监管实体的本地监管状况。如果所有本地监控状态都处于令人满意的状态,则认为状态为“正常”,否则认为状态为“过期”。
此版本仅支持最后期限监督。因此,在评估全球地位时,不考虑活的和逻辑的监督。同样,不支持对健康状况的监测,因此不考虑对全球状况进行评估。
Note: 在此版本中,可以在控制台上查看截止日期监督结果和本地监督状态。全局监督状态(仅在状态更改时更新)可以在日志文件中看到(phmd.log)。
受监督实体可以是应用实例中的任何元素,例如单个函数,一个线程、一系列函数调用等。
应用程序实例使用SupervisedEntity的ReportCheckpoint方法报告检查点。呼叫时间取决于监督类型:
最后期限监督Deadline supervision–实体必须进行两个检查点API调用以指示
监督部分的开始和结束。
RTA-VRTE的这个版本不包括PHM的自动配置支持。相反,配置是基于对模板和配置文件的手动修改:
•监督实体配置Supervised Entity Configuration –配置基于模板定义的类。因此,配置需要复制每个受监督实体的模板,重命名然后修改以定义受监督实体的名称、标识符和检查点。
•截止日期配置Deadline Configuration–创建定义截止日期的描述文件。
•运行时配置Run-time Configuration-在运行时,在使用PHM ReportCheckpoint API之前加载并处理JSON文件。
在本版本的RTA-VRTE中,每个受监管实体的配置都基于对模板文件的手动修改,需要复制、重命名和修改每个受监管实体的模板。
第一步是从以下位置复制模板:
/
to the build project and rename as
在模板文件中,使用受监督实体名称的位置由字符串“
接下来,在模板文件中设置受监督实体的数字标识符,例如10。例如,使用数字标识符的位置由字符串“
#define PHM_SupervisedEntity_SE0 ((InterfaceType)(10))
12.3.13 Checkpoints
监督实体模板定义了一个空的枚举类型检查点。在枚举类型中定义检查点,例如CP_Start, CP_End,及其数值。
enum class Checkpoints : EnumUnderlyingType
{
SE0_CP_Start = 0U,
SE0_CP_End = 1U,
};
12.3.1.4 Prototypes
为受监督的实体原型报告检查点,但在创建一个或多个原型之前,必须使用helper Identifier<…>模板定义SE模板。SE模板定义基于受监督实体名称(第一个模板参数)和检查点枚举(第三个模板参数)。
template using
using SE = Identifier;
最后,受监督实体模板使用SE模板来定义应用程序可用的受监督实体原型。由于SE模板是使用helper Identifier的公共定义定义定义的,因此所有原型都将具有相同的属性,例如检查点名称等。
using Prototype0 = SE;
在自适应应用程序中实例化受监督实体模板时,将使用受监督实体原型定义。
SupervisedEntity se0_prototype0 {phm};
12.3.2 Deadline Definition
在运行时,必须加载定义受监督实体的截止日期定义的JSON文件,并使用该文件更新受监督实体原型的配置。
每个受监督的实体原型都需要一个单独的JSON截止日期定义文件。截止日期定义文件指定了截止日期监视的最小和最大时间(以纳秒为单位)以及相关的检查点标识符,例如:
定义文件中的字段指定了截止日期监视参数:
minDeadline和maxDeadline指定了最小和最大时间限制分别(以纳秒为单位配置)。在上面的例子中,这些是0.8ms和2.0ms
source and target 源和目标定义了开始和结束检查点,在这些检查点之间测量截止时间。这些检查点的数值应与头文件中配置的检查点的数值匹配。在第12.3.1节的配置头文件摘录中,source:0对应于checkpoint SE0_ CP_ Start,target:1对应于checkpoint SE0_ CP_ Final。
JSON文件必须部署到目标ECU。见第12.3.4节。
12.3.3 Run-time Configuration
自适应应用程序使用截止日期配置文件来配置受监控的实体原型。
首先,如果尚未在应用程序中出现,则必须创建PHM类的实例。PHM实例将建立到PHM守护进程的链接,以评估全局监视状态并执行本地监视状态的评估。
// Create PHM daemon link
PHM phm;
其次,必须创建一个SupervisedEntity类的实例,该实例定义了受监控的实体原型。
在构造过程中,实例链接到PHM对象实例,从而链接到PHM守护进程。
// Create supervised entity
SupervisedEntity < se0 :: prototype0> se0_prototype0{phm};
接下来,读取JSON截止日期配置文件(使用BOOST库中的helper函数),并使用rb_SEUpdateConfig API初始化受监控的实体原型。
// Read the configurations of SE0 from the JSON file
boost::property_tree::ptree se_config; boost::property_tree::read_json(json_deadline_conf_path,se_config);
// Pass the JSON file tree to PHM for deadline supervision se0_prototype0.rb_SEUpdateConfig(&se_config);
然后,受监督实体原型可以使用ReportCheckpoint API报告检查点,并传递来自在受监督实体的头文件中定义的枚举类型的定义,例如:
se0_prototype0.ReportCheckpoint(se0::Checkpoints::SE0_CP_Initial);
原型的本地监控状态可以使用rb_SEGetLocalStatus API访问应用程序编程接口。返回值表示被监管实体的截止监管状态:
• OK – No failure
• EXPIRED – Deadline supervision failed
12.3.4 Deployment
JSON截止日期定义文件必须可以在目标ECU上访问。目标上的位置完全由用户控制,但必须与自适应应用程序中指定的路径一致。
目标ECU文件系统在host VM上以/var/etas/vrte/export/
/var/etas/vrte/export/
第3.8节详细介绍了主机VM和目标ECU之间的文件传输。
PHM JSON文件的部署位置必须使用“-c”命令行选项传递给PHM守护程序rb-phmd。命令行配置为守护进程执行管理配置的一部分:
RTA-VRTE支持AUTOSAR定义的平台健康管理,以进行最后期限监督。所有API都包含在ara::phm命名空间中。
AUTOSAR API增加了非标准API来定义截止时间监督。
这些API包含在SupervisedEntity模板类中,因此也包含在ara::phm命名空间中。
Name ara::phm::PHM
Entity Type class
Header ara/phm/phm.hpp
Methods None
平台健康管理的根类。自适应应用程序使用PHM类的实例与平台健康管理守护进程建立链接(用于全局监视状态评估)、报告检查点并启用本地监视评估。
Example
#include
PHM phm;
监督实体的模板类。
该模板具有单个模板参数,该参数是在配置受监督实体时创建的受监督实体原型之一。由于特定受监督实体的所有原型都是使用公共标识符模板定义创建的,因此它们共享公共属性,例如检查点。
当实例化模板时,一个参数将在受监控实体和自适应应用程序的PHM实例之间建立链接。
12.4.2.1 ReportCheckpoint
Name SupervisedEntity::ReportCheckpoint
报告受监管实体的检查点chkPtId。
当受监督实体模板类被创建为受监督实体内的检查点枚举时,将设置check point参数的数据类型。
12.4.2.2 rb_SEGetLocalStatus
返回被监督实体的本地监督状态。
12.4.2.3 rb_SEUpdateConfig
基于从JSON文件读取的配置,为受监视的实体配置截止时间监视。
Name ara::phm::SE_LocalSupStatusType
Entity Type Strongly typed enumeration
Description Local supervision status for a supervised entity.
受监管实体的本地监管状态。
Defined values are:
• OK → No Deadline Supervision failure
• FAILED → General error
• EXPIRED → Deadline supervision failure
Example
auto status = se0.rb_SEGetLocalStatus();
if ( status == SE_LocalSupStatusType::EXPIRED )
{
// ...