<sa8650>Safety Monitor 之 API介绍 (第二部分)
<sa8650>Safety Monitor 之 API介绍
- 4.由APSS安全监视器支持的接口
- 4.1数据结构文件
- 4.2 Enumeration documentation
- 4.3消息格式
- 4.4 Function documentation
- 4.4.1 sm_register_client ()
- 4.4.2 sm_notify_fault()
- 4.4.3 sm_report_health()
- 4.4.4 sm_subscribe_faults()
- 4.4.5 sm_add_fault_subscription_filter()
- 4.4.6 sm_add_fault_sev_bitmask()
- 4.4.7 sm_unregister_client()
- 4.4.8 sm_unsubscribe_faults()
- 4.4.9 sm_print_fault_msg()
- 4.4.10 sm_get_soc_health_status()
- 4.4.11 sm_send_err_fatal()
- 4.4.12 sm_get_subsystem_health_status()
- 4.4.13 sm_set_debug_mode()
- 4.5 Header files
- 5由SAIL安全监视器支持的接口
- 6用户指南
- A References
4.由APSS安全监视器支持的接口
4.1数据结构文件
4.1.1 struct sm_handle
安全手柄由安全客户端分配,并提供给安全监控客户端库。
struct sm_handle
{
int fd;
volatile unsigned registered;
safety_fault_subsystem subsys;
safety_fault_subscriber subs_id;
int chid;
sm_fault_rx_cb f_cb;
osal_thread_handle_t subs_thread;
safety_health_timer_group h_grp;
osal_queue_t queue;
uint8_t fault_subs_seq_no;
};
4.1.2 struct safety_msg_initial_fault
typedef struct
{
safety_msg_bcs_header hdr;
safety_msg_common_hdr_type safety_common_hdr;
safety_msg_fault_common_hdr_type fault_common_hdr;
} safety_msg_initial_fault;
safety_msg_initial_fault的成员包含了系统中所有故障的通用信息。有关这些头结构的详细信息,请参阅第4.5.1节中提到的头文件。
4.1.3 struct safety_msg_notify_fault
typedef struct
{
safety_msg_common_hdr_type safety_common_hdr;
safety_msg_fault_common_hdr_type fault_common_hdr;
safety_msg_fault_specific_hdr_type fault_specific_hdr;
safety_fault_msg_type safety_msg_fault_item;
} safety_msg_notify_fault;
safety_msg_notify_fault的前3个成员(safety_common_hdr、fault_common_hdr和fault_specific_hdr)包含了系统中所有故障的常见信息。有关这些头结构的详细信息,请参阅第4.5.1节中提到的头文件。
最后一个元素safety_fault_msg_type是系统中定义的故障的联合。
子系统fauft_info结构的声明由子系统所有者在其子系统头文件中提供。
有关将子系统故障信息结构添加到safety_fault_msg_type联合系统中的详细步骤,请参见第4.5.4节。
例如,在notint_fault中使用的safety_msg_xNOC_fault xnoc_fault示例可以在头文件中找到(参见第4.5.1节)。
4.2 Enumeration documentation
下面的部分描述了接口中的一些枚举的示例值。
4.2.1 safety_fault_subsystem
typedef enum
{
CAM,
NOC,
APSS,
VSENSE,
SMMU,
PCIE,
OCIMEM,
DDR,
APSS_XPU,
EMAC0,
EMAC1,
NSP,
TSENSE,
TCSR,
SA9000,
TZ,
SMSS,
UFS,
EVA,
GIC,
NSP_RM,
AVP5_FWP,
APSS_EDAC,
APSS_STL,
DUMMY1,
DUMMY2,
DUMMY3,
/* NOTE: Any new subsystems should be added after DUMMY3 /
PFM,
TSC0,
GFX_GPU,
SAIL_EMAC,
SAIL_CAN,
SAIL_TSC0,
SAIL_TESTCLIENT1,
SAIL_TESTCLIENT2,
/ Customer subsystems start here */
CUSTOM0,
CUSTOM1,
CUSTOM2,
CUSTOM3,
CUSTOM4,
CLIENT_SUBSYS_MAX
} safety_fault_subsystem;;
4.2.2 safety_health_status
typedef enum
{
NOT_REPORTED,
HEALTHY,
NOT_HEALTHY,
NOT_REGISTERED,
} safety_health_status;
4.2.3 msg_id
typedef enum
{
FAULT_MSG = 0x1,
HEALTH_MSG,
INITIAL_FAULT_MSG,
PASSTHROUGH_MSG,
/Used between APSS and SMSS/
SMSS_CONFIG_MSG,
BIST_RESULT_MSG,
/* For use on APSS */
REGISTER_APP_MSG,
UNREGISTER_APP_MSG,
FAULT_SUBSCRIBE,
FAULT_UNSUBSCRIBE
} msg_id ;
4.2.4 safety_health_timer_group
typedef enum
{
SM_HEALTH_TIMER_25MS,
SM_HEALTH_TIMER_50MS,
SM_HEALTH_TIMER_100MS,
SM_HEALTH_TIMER_200MS,
SM_HEALTH_TIMER_500MS,
SM_HEALTH_TIMER_1000MS,
SM_HEALTH_NO_TIMER,
SM_HEALTH_TIMER_MAX,
} safety_health_timer_group;
4.2.5 safety_fault_severity
typedef enum
{
SAFETY_WARNING,
/*
- SAFETY_ERROR is not be used by subsystems and is
- to be used between SAIL and VIP/MCU only
*/
SAFETY_ERROR,
SAFETY_RECOVERABLE_ERROR,
SAFETY_SOC_FATAL_ERROR,
SAFETY_SUBSYSTEM_FATAL_ERROR,
SAFETY_SUBSYSTEM_DEGRADED,
SAFETY_SUBSYSTEM_NONFATAL,
SAFETY_FAULT_SEV_MAX
} safety_fault_severity;
注意:在当前的设计中不支持SAFETY_RECOVERABLE_ERROR。
4.2.6 safety_fault_subscriber
typedef enum
{
FAULT_SUBS_0,
FAULT_SUBS_1,
FAULT_SUBS_2,
FAULT_SUBS_3,
FAULT_SUBS_4,
FAULT_SUBS_RSM,
FAULT_SUBS_QAIC,
FAULT_SUBS_TSENSE,
/* Customer subscriber applications start here */
FAULT_SUBS_CUSTOM0,
FAULT_SUBS_MAX
} safety_fault_subscriber;
4.2.7 safety_msg_bcs_header
此结构用于存储消息的报头信息。
typedef struct
{
uint8 crc;
uint8 cmd;
uint8 version;
uint8 len;
uint8 seq;
} attribute((packed)) safety_msg_bcs_header;
4.3消息格式
运行状况消息和故障消息的消息格式如下所述。
4.3.1运行状况消息
图4-1运行状况消息布局
声明:
typedef struct
{
safety_msg_bcs_header hdr;
uint8 id;
safety_msg_common_hdr_type safety_common_hdr;
uint8 aggregated_health[SAFETY_HEALTH_SIZE_BYTES];
} attribute((packed)) safety_msg_soc_aggregated_health_status;
运行状况消息由safety_msg_bcs_header和aggregated_health状态组成。aggregated_health提供了所有应用程序的运行状况状态。任何应用程序的运行状况状态都被定义为第4.2.2节中描述的枚举safety_soc_health_status。
4.3.2故障消息
4.3.2.1初始故障消息
图4-2初始故障消息信息布局
初始故障信息的描述见第4.1.1节。
4.3.2.2详细故障信息
图4-3详细的故障信息布局
详细的故障信息详见第4.1.3节。
4.4 Function documentation
4.4.1 sm_register_client ()
函数原型:
int sm_register_client(safety_fault_subsystem subsys,
safety_health_timer_group h_grp,
apss_client_bist_publish *r_bist,
struct sm_handle *sm_h)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端ID应存在于safety_fail_system枚举中,以便能够成功调用sm_register_Client API。
4.4.2 sm_notify_fault()
向安全监测器报告故障。
函数原型:
int sm_notify_fault(struct sm_handle *sm_handle,
safety_msg_notify_fault *fmsg,
uint32_t fault_len)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应已向安全监视器注册。
4.4.3 sm_report_health()
向安全监视器报告健康状态。
函数原型:
int sm_report_health(struct sm_handle *sm_handle,
safety_health_status hstatus,
boolean faultclr_flag)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应已向安全监视器注册
注意:
已使用计时器组(Safety_health_timer_group)<FDTI(75毫秒)注册到安全监视器的客户端将收到用于健康报告的宽限窗口FDTI-Safety_heart_timer_group。
因此,FDTI内的客户应报告最新的健康状况。
而对于在(safety_health_timer_group)>FDTI注册的客户端,则会授予额外的宽限期(12.5毫秒)。因此,客户端应在safety_health_timer_group+宽限期(12.5ms)内报告运行状况更新。
当客户端未能在指定的限制内发送运行状况更新时,将在下一个周期中引发严重级别为(SAFETY_SOC_FATAL_ERROR/SAFETY_SUBSYSTEM_FATAL_ERR)的故障,具体取决于客户端的关键性。
FDTI为75 ms,是针对当前的系统设计,是一个可配置的实体。
下表列出了所有safety_health_timer_group成员的宽限期:
4.4.4 sm_subscribe_faults()
从安全监控器中订阅故障。
函数原型:
int sm_subscribe_faults(struct sm_handle *sm_h,
sm_fault_rx_cb f_cb,
safety_fault_subscriber subs_id,
sm_subs_msg_filter *sm_filter)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
None
示例用法:
fault_sev_bitmask fault_sev = 0;
sm_subs_msg_filter sm_filter = {0};
fault_sev = sm_add_fault_sev_bitmask(SAFETY_SOC_FATAL_ERROR) |
sm_add_fault_sev_bitmask(SAFETY_SUBSYSTEM_FATAL_ERROR);
ret = sm_add_fault_subscription_filter(&sm_filter, APSS, fault_sev);
ret = sm_add_fault_subscription_filter(&sm_filter, SA9000, fault_sev);
sm_subscribe_faults(&sub_fault_handle, fault_cb, FAULT_SUBS_0, &sm_filter);
4.4.5 sm_add_fault_subscription_filter()
为子系统添加故障订阅筛选器。使用故障订阅,应用程序可以订阅来自特定子系统和特定严重程度的故障。
函数原型:
int sm_add_fault_subscription_filter(sm_subs_msg_filter *sm_filter,
safety_fault_subsystem subsys,
fault_sev_bitmask fault_sev_bitmask)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
None
4.4.6 sm_add_fault_sev_bitmask()
函数原型:
fault_sev_bitmask sm_add_fault_sev_bitmask(safety_fault_severity sev)
参数:
返回值:
fault_sev_bitmask为输入参数safety_fallt_severity sev启用掩码的位掩码。
4.4.7 sm_unregister_client()
从安全监控器中注销应用程序的故障/运行状况报告。
函数原型:
int sm_unregister_client(struct sm_handle *sm_handle)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应已向安全监视器注册。
4.4.8 sm_unsubscribe_faults()
取消对安全监控器的故障的订阅。
函数原型:
int sm_unsubscribe_faults(struct sm_handle *sm_handle)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应已订阅故障。
注意:此API不应从故障回调中调用。请参考testapp实现作为示例。
4.4.9 sm_print_fault_msg()
打印故障消息的内容。
函数原型:
int sm_print_fault_msg(safety_msg_publish_fault *fmsg);
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
4.4.10 sm_get_soc_health_status()
从安全监控器中获取所有子系统/客户端的运行状况状态
函数原型:
int sm_get_soc_health_status(struct sm_handle *sm_h,
safety_aggregated_health *agg_health);
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应该已经注册或订阅了故障。
4.4.11 sm_send_err_fatal()
本API仅适用于非安全监视器客户端,不应由安全监视器客户端使用。此API用于软件进程向安全监视器发送故障消息,以指示safety_SOC_FATAL消息,从而可以通过致命处理路径立即关闭SOC。
函数原型:
int sm_send_err_fatal(void);
参数:
没有输入参数
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
None
4.4.12 sm_get_subsystem_health_status()
从安全监视器中获取客户端的运行状况状态。
函数原型:
int sm_get_subsystem_health_status(struct sm_handle *sm_h,
safety_fault_subsystem subsys,
safety_health_status *hstatus)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
依赖项:
客户端应用程序应已注册以进行健康报告。
4.4.13 sm_set_debug_mode()
将APSS或/和SAIL上的安全监视器置于调试模式。
函数原型:
int sm_set_debug_mode(safety_debug_type debug_state)
参数:
返回值:
成功后,返回EOK,否则,返回错误代码(EINVAL,EIO)
注意:
在APSS上启用调试模式时,安全状态和非安全看门狗咬的触发被禁用。
在SAIL上启用调试模式时,禁用sm_err引脚和看门狗的触发。
调试模式是互斥的,即一次只能调用一个调试模式。详见第6.4节。
4.5 Header files
4.5.1 FUSA头文件
?位置-<构建根目录> /qnx_ap/AMSS/safety_shared/inc/fusa_msg_interface.h
?描述-包含在第4.1节和第4.2节中所述的故障和运行状况消息的结构和枚举声明。
4.5.2安全监视器客户端库头文件
?位置-<安全监控源根>/sm_client/public/amss/sm_client.h
?描述-包含由客户端/子系统用于与安全监视器接口的函数原型、结构和枚举声明。
4.5.3子系统头文件
以下子系统头文件是安全共享公用文件夹的一部分:
位置-<构建根目录>/qnx_ap/AMSS/safety_shared/inc/
fusa_bist_types.h
fusa_fault_msg_apss_edac.h
fusa_fault_msg_ddrss.h
fusa_fault_msg_eva.h
fusa_fault_msg_gpu.h
fusa_fault_msg_noc.h
fusa_fault_msg_nsp_rm.h
fusa_fault_msg_smmu.h
fusa_msg_apss_def.h
fusa_msg_avp5.h
fusa_msg_camera.h
fusa_msg_camera_mcu.h
fusa_msg_camera_SA8650.h
fusa_msg_interface.h
fusa_msg_pfm.h
sa9000_safety_msgs_fusa.h
4.5.4向safety_fault_msg_type联合子系统添加故障信息结构
1.子系统创建一个新的头文件,其中包含fault_info结构的声明。
2.新的头文件应该复制到公共位置-<构建根目录>/qnx_ap/AMSS/safety_shared/inc/
3.报头文件还声明了故障源代码和故障代码的枚举。
4.此头文件包含在安全监控器fusa_msg_interface.h头文件中,子系统故障_info结构变量将被添加到safety_fault_msg_type联合中。
5由SAIL安全监视器支持的接口
5.1数据结构文件
请参见第4.1.2节和第4.1.3节。
5.2 Enumeration documentation
以下部分介绍接口中某些枚举的示例值。
关于APSS和SAIL安全监测器之间常见的列举,请参阅第5.2节。
5.2.1 msg_id
参见第4.2节。
typedef enum
{
FAULT_MSG = 0x1,
HEALTH_MSG,
INITIAL_FAULT_MSG,
PASSTHROUGH_MSG,
BIST_TYPE_MSG,
/Used between APSS and SMSS/
SAIL_CONFIG_MSG,
BIST_RESULT_MSG,
/* For use on APSS */
REGISTER_APP_MSG,
UNREGISTER_APP_MSG,
FAULT_SUBSCRIBE,
FAULT_UNSUBSCRIBE
} msg_id ;
5.2.2 safety_health_timer_group
typedef enum
{
SM_HEALTH_TIMER_25MS,
SM_HEALTH_TIMER_MAX,
} safety_health_timer_group;
5.2.3 safety_fault_severity
typedef enum
{
SAFETY_WARNING,
/*
- SAFETY_ERROR is not be used by subsystems and is
- to be used between SAIL and VIP/MCU only
*/
SAFETY_ERROR,
SAFETY_RECOVERABLE_ERROR,
SAFETY_SOC_FATAL_ERROR,
SAFETY_SUBSYSTEM_FATAL_ERROR,
SAFETY_SUBSYSTEM_DEGRADED,
SAFETY_SUBSYSTEM_NONFATAL,
SAFETY_FAULT_SEV_MAX
} safety_fault_severity;
注意:在当前的设计中不支持SAFETY_RECOVERABLE_ERROR。
5.2.4 safety_fault_subscriber
typedef enum
{
SAILFAULT_SUBS_0,
SAILFAULT_SUBS_1,
SAILFAULT_SUBS_2,
SAILFAULT_SUBS_3,
SAILFAULT_SUBS_4,
/* Customer subscriber applications start here */
SAILFAULT_SUBS_CUSTOM0,
SAILFAULT_SUBS_MAX
} sail_safety_fault_subscriber;
5.2.5 safety_msg_bcs_header
此结构用于存储消息的报头信息。
typedef struct
{
uint8 crc;
uint8 cmd;
uint8 version;
uint8 len;
uint8 seq;
} attribute((packed)) safety_msg_bcs_header;
5.3 Message format
请参见第4.3节。
5.4 Function documentation
5.4.1 ssm_client_register ()
向SAIL安全监控器登记。
函数原型:
int ssm_client_reg(safety_fault_subsystem subsys, safety_health_timer_group h_grp)
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
客户端ID应存在于safety_falt_system枚举中,以便可以成功调用ssm_Client_register API。
5.4.2 ssm_notify_fault()
向SAIL安全监视器报告故障。
函数原型:
int ssm_notify_fault(safety_fault_subsystem subsys ,
safety_msg_notify_fault *fmsg,
uint32_t fault_len)
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
客户端应用程序应已向安全监视器注册。
5.4.3 ssm_health_report()
向安全监视器报告健康状态。
函数原型:
int ssm_health_report(safety_fault_subsystem subsys,
safety_health_status hstatus,
boolean faultclr_flag)
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
客户端应用程序应已向安全监视器注册。
注意:
客户端已使用计时器组(Safety_health_timer_group)注册到安全监视器。
当客户端未能在指定的限制内发送运行状况更新时,客户端的运行状况状态将更改为UNHEALTHY。
下表列出了所有safety_health_timer_group成员的宽限期:
5.4.4 ssm_client_dereg()
从SAIL安全监视器中注销应用程序的故障/运行状况报告。
函数原型:
int ssm_client_dereg(safety_fault_subsystem subsys);
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
客户端应用程序应该已经注册了故障和健康监控。
5.4.5 ssm_subscribe_faults()
从安全监控器中订阅故障。
函数原型:
int ssm_subscribe_faults(subscriberCallbackFnptr pCB,
sail_safety_fault_subscriber subs_id,
sm_subs_msg_filter *sm_filter)
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
None
5.4.6 ssm_unsubscribe_faults()
取消对安全监控器的故障的订阅。
函数原型:
int ssm_unsubscribe_faults(sail_safety_fault_subscriber subs_id)
参数:
返回值:
成功后,返回1,否则,返回错误代码
依赖项:
客户端应用程序应该已经订阅了错误。
6用户指南
6.1安全监视器的命令行选项
6.1.1在安全监视器中启用调试模式
在启动时启动安全监视器时,可以通过添加-<0、1、2、3>参数来启用调试模式。
$ safetymonitor safetymonitor -a 1 &
此参数使SAIL和APSS安全监视器处于调试模式。支持的调试模式:
0–Debug mode is OFF
1-调试模式都开启
2-调试模式仅适用于APSS
3-调试模式仅为SAIL打开
6.1.2在安全监控器中启用生产模式
生产模式允许检查所有关键客户端的注册情况。如果任何关键客户端未能在指定的时间段内注册,则会显示严重性为Soc_catal的故障类型。它由adding-d参数启用,同时在启动时启动安全监视器。
$ safetymonitor safetymonitor -d &
以下是关键的客户端子系统:
APSS
TSENSE
6.1.3如何将子系统标记为关键子系统
在sm_cfg.h文件的数组critical_subs_list[]中添加枚举数据类型safety_fallt_system中的子系统ID。例如,将CUSTOM0添加到关键子系统列表中:
critical_subs_list[] ={…, CUSTOM0,… };
注:目前列表critical_subs_list[]包含两个子系统:APSS和Tsense。
6.1.4 如何添加新的子系统
在数据类型safety_fail_system中添加新的枚举成员。例如,要在枚举列表中添加新的子系统CUSTOM5:
typedef enum
{
…
DUMMY3,
/* Customer subsystems start here */
CUSTOM0,
…
CUSTOM5,
CLIENT_SUBSYS_MAX
} safety_fault_subsystem;
6.1.5如何添加新的故障订阅户
在数据类型safety_fail_subscriber中添加新的枚举成员。
要在枚举列表中添加新的子系统FAULT_SUBS_CUSTOM1,请执行以下操作:
typedef enum
{
…
FAULT_SUBS_4,
/* Customer subscriber applications start here */
FAULT_SUBS_CUSTOM0,
FAULT_SUBS_CUSTOM1,
FAULT_SUBS_MAX
} safety_fault_subscriber;
6.2 测试应用程序的命令行选项
testapp options
6.3客户端应用程序开发
客户端应用程序可以基于随发行版提供的testapp进行开发。
testapp代码位于第6.6.节中列出的位置。
在common.mk文件中,添加以下内容以链接到sm_client库:
LIBS+= ^sm_client
客户端代码必须包含标头文件:
#include “sm_client.h”
6.4测试应用程序使用示例
6.4.1 发送故障信息
命令:$testapp -r -i 24 -f
Testapp向安全监视器注册(-r选项)客户端应用程序id 24(-i选项),并向AURIX发送故障消息(-f选项)。testapp生成与客户端应用程序id 24相对应的硬编码故障消息。
6.4.2正在发送运行状况消息
命令:$ testapp -r -i 24 -h 1
Testapp向安全监视器注册(-r选项)客户端应用程序id 24(-i选项),并向AURIX发送健康状态(-h选项)。在本例中,它将健康状态更新消息发送为健康。
6.4.3订阅错误(使用s选项)
这个测试可以通过运行两个测试应用程序客户端应用程序来执行。
?应用程序ID为24的客户端,订阅并等待故障60秒
$on -u 0:1002 testapp -r -i 24 10 -s 1 -b 60
?从应用程序ID为: 25的客户端发送故障。
$testapp -r -i 25 -f
在发送故障之后,具有应用ID 24的testapp的第一实例接收具有故障有效载荷的故障指示。
上例中打印的故障内容:
buf_len = 0x16
Msg_id = FAULT_MSGapp_id = DUMMY1
fault_severity = SAFETY_ERROR
6.4.4通过测试-app命令行设置调试模式
APSS和SAIL可以使用测试应用程序命令进入调试模式。
命令:testapp -e <调试模式>,其中调试模式可以是以下模式之一:
0–Debug mode is OFF
1-调试模式都开启
2-调试模式仅适用于APSS
3-调试模式仅为SAIL打开
注意:调试模式是相互排斥的,即:一次只能调用一个调试模式。
例如,如果将调试模式设置为1,则APSS和SAIL都将处于调试模式。但是现在,如果调试模式被设置为2,这将导致只有APSS保持在调试模式下,而在SAIL上的调试模式将被禁用。
同样,如果调试模式设置为3,这将导致APSS的调试模式被禁用,SAIL的调试模式将被启用。
此外,在当前的生产构建中验证调试模式2和3具有挑战性,因为APSS和SAIL相互依赖,并且有自己的安全状态机制。因此,建议今后只验证调试模式1(同时用于APSS和SAIL)选项。
6.5 AURIX串行控制台打印
6.5.1消息摘要
两个soc每1秒就会在AURIX串行控制台上连续打印一次摘要。
在串行控制台上打印的摘要如下所示:
AURIX上的安全应用程序连续打印了SOC1和SOC2的以下摘要:
?串行控制台打印“Info:SOC1[T:] / info:SOC2[T:]”,描述摘要是来自SOC1还是SOC2,时间以秒为单位。
?在最近1秒内收到的运行状况消息总数。
?客户端在1秒的时间间隔内变得不健康的次数将出现在“不健康的状态”中。
?在1秒的时间间隔内,每个客户端ID的最新健康状态将出现在“健康状况”中。
?在过去1秒内收到的总故障消息和任何客户端特定的警告/错误数将出现在“总故障”中。
?故障序列扩展了总故障总数的定义。它表示来自特定子系统的故障发生的顺序,也表示故障的严重程度。
6.5.2运行状况消息摘要
在串行控制台上打印的运行状况消息摘要如下所示:
在MCU上收到的总结包括:
?“总健康状况”表示在过去1秒内收到的健康状况总数。
?不健康:这将显示客户是不健康的。这只打印给那些不健康的客户端(UH)。
?此快照显示“不健康”下的“[12:40]”,其中“12”是客户端ID,“40”是客户端报告为不健康的次数。
?“健康状况”将显示健康状况为不健康(UH)、未注册(NREG)或未报告(NREP)的客户端的健康状态。
?健康的(H)客户将不会出现在“健康状况”的打印版中。
?要向APSS安全监视器注册客户端,并将健康状态发送为健康和不健康,请参见第6.1.3节。
6.5.3故障消息摘要
在串行控制台上打印的故障消息摘要如下所示:
在MCU上收到的总结包括:
?“故障总数”显示了在最近1秒内接收到的故障总数。
?“客户端”显示故障严重程度的客户端编号和1秒内接收故障的次数
?此快照显示“0[2:20]”,其中“0”是客户端,“2”是故障的严重程度,“20”是在1秒内接收到的故障次数。
?故障序列扩展了总故障总数的定义。它表示来自特定子系统的故障发生的顺序,也表示故障的严重程度。在“[0,2]”快照中,这里“0”是客户端ID,“2”是故障严重程度。
6.6 Source structure
?/qnx_ap/AMSS/safety/safetymonitor/safetymonitor/src/-安全监控源
?/qnx_ap/AMSS/safety/safetymonitor/public/AMSS/–安全监视器FUSA头文件。
?/safetymonitor/sm_client–安全监视器客户端库
?/safetymonitor/testapp–样本测试应用程序
6.7 AURIX source structure
列出的文件可以在META构建中的qnx_ap\AMS\vip\aurix\src\AppSw\Tricore中找到。
A References
A.1首字母缩略词和术语
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!