欢迎光临
我们一直在努力

【IF-SAFE-07】SMU故障管理 - 双域架构与FSP

IF-SAFE-07 SMU故障管理

【IF-SAFE-07】SMU故障管理 – 双域架构与FSP

英飞凌AURIX™ TC3xx功能安全专题第七篇。本文深入解析Safety Management Unit (SMU)的工作原理,涵盖双域架构设计、FSP故障信号协议、告警分类与响应机制、MCAL配置实践,为构建符合ISO 26262要求的故障管理系统提供完整指南。本文约12000字,建议收藏。

系列导航

序号文章状态
IF-SAFE-01 功能安全入门:ISO 26262与TC3xx安全架构 已发布
IF-SAFE-02 基础设施安全:电源/时钟/SCU的守护 已发布
IF-SAFE-03 Lockstep双核锁步:ASIL-D核心保障 已发布
IF-SAFE-04 ECC全覆盖:从CPU到外设的数据完整性 已发布
IF-SAFE-05 MTU内存测试:启动与运行时的自检 已发布
IF-SAFE-06 安全IO:采集/执行/通信保护链 已发布
IF-SAFE-07 SMU故障管理:双域架构与FSP 本文
IF-SAFE-08 系统级安全:PMIC联动与安全路径 规划中
IF-SAFE-09 共因失效与FMEDA 规划中
IF-SAFE-10 安全认证实战:从需求到交付 规划中

SMU故障管理思维导图

图0:本文内容思维导图

一、为什么需要SMU

1.1 功能安全对故障管理的要求

根据ISO 26262标准,安全关键系统必须具备故障检测、故障响应、故障恢复三大能力:

┌─────────────────────────────────────────────────────────────────────┐
│ ISO 26262 故障管理要求 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 故障检测 (Fault Detection) │
│ └─ 硬件自检、软件监控、冗余比较 │
│ │
│ 2. 故障响应 (Fault Reaction) │
│ ├─ 立即动作:复位、看门狗触发 │
│ ├─ 延迟动作:NMI、应用层回调 │
│ └─ 报告机制:日志记录、状态上报 │
│ │
│ 3. 故障恢复 (Recovery) │
│ ├─ 自动恢复:故障清除后恢复正常 │
│ └─ 诊断恢复:软件介入处理 │
│ │
└─────────────────────────────────────────────────────────────────────┘

1.2 SMU在系统中的位置

SMU在系统中的位置

图1:SMU双域架构全景图

SMU (Safety Management Unit) 是TC3xx芯片内部的集中式故障管理模块,负责:

职责描述
统一收集 汇聚所有模块的故障信号
分类处理 按告警类型执行对应响应
外部通信 通过ErrorPin向PMIC报告
状态监控 提供运行时状态查询

1.3 与SCU/PMIC的联动

┌─────────────────────────────────────────────────────────────────────┐
│ TC3xx 故障管理联动机制 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ CPU │ │ DMA │ │ ADC │ │ CAN │ │
│ │ Trap │ │ Error │ │ Error │ │ Error │ │
│ └───┬─────┘ └───┬─────┘ └───┬─────┘ └───┬─────┘ │
│ │ │ │ │ │
│ └───────────────┴───────────────┴───────────────┘ │
│ │ │
│ ┌──────────▼──────────┐ │
│ │ SMU │ │
│ │ Safety Management │ │
│ │ Unit │ │
│ └──────────┬──────────┘ │
│ │ │
│ ┌──────────────────┼──────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ SCU │ │ ErrorPin │ │ Application│ │
│ │ System Reset│ │ (External)│ │ Callback │ │
│ └─────────────┘ └──────┬──────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ PMIC │ │
│ │ TLF35584等 │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘

二、双域架构详解

2.1 Safety Domain vs Application Domain

TC3xx双域架构

图2:TC3xx Safety Domain与Application Domain架构

TC3xx采用双域架构实现安全与应用分离:

特性Safety Domain (安全域)Application Domain (应用域)
定位 负责系统安全监控 负责应用功能执行
资源 Safety Island, HSM CPU0~CPU5, 外设
访问权限 受限配置,仅安全关键访问 全功能配置
独立性 与应用域物理隔离 可被Safety Domain干预
典型模块 Safety WDT, PMIC接口 CAN, GTM, ADC等

2.2 Safety Island安全岛

Safety Island是TC3xx芯片内部的一个独立子系统:

┌─────────────────────────────────────────────────────────────────────┐
│ Safety Island 内部结构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Safety Island │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ HSM │ │ Safety │ │ PMIC │ │ │
│ │ │ (ARM │ │ SCU │ │ Interface │ │ │
│ │ │ Cortex-M) │ │ │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │ │ │
│ │ └──────────────────┼──────────────────┘ │ │
│ │ │ │ │
│ │ ┌──────▼──────┐ │ │
│ │ │ Safety │ │ │
│ │ │ WDT x2 │ │ │
│ │ └─────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 主要功能: │
│ • 独立于主CPU的安全监控 │
│ • 加密/解密、安全通信 │
│ • 完整性校验 (Secure Boot) │
│ • 看门狗喂狗 │
│ │
└─────────────────────────────────────────────────────────────────────┘

2.3 域间通信机制

双域之间通过受控接口进行通信:

接口类型方向用途
RIF (Register Interface) App→Safety 配置安全功能
SRI (Safety Island Response) Safety→App 安全事件通知
ErrorPin 双向 故障状态同步

2.4 硬件隔离机制

┌─────────────────────────────────────────────────────────────────────┐
│ 硬件隔离层级 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Level 1: 电源/时钟隔离 │
│ ├─ Safety Domain 可独立供电 │
│ └─ Safety Domain 可独立时钟 │
│ │
│ Level 2: 总线访问隔离 │
│ ├─ Safety域寄存器映射到独立地址空间 │
│ └─ 应用域无法直接访问Safety关键寄存器 │
│ │
│ Level 3: 中断/陷阱隔离 │
│ ├─ Safety域产生独立的NMI/Trap │
│ └─ 与应用域中断向量表物理分离 │
│ │
│ Level 4: 复位隔离 │
│ ├─ Safety域可独立复位应用域 │
│ └─ 应用域无法复位Safety域 │
│ │
└─────────────────────────────────────────────────────────────────────┘

三、FSP故障信号协议

3.1 FSP概述

FSP (Fault Signaling Protocol) 是SMU与外部PMIC通信的标准协议,用于:

  • 通知外部PMIC芯片内部故障状态
  • 触发PMIC进入安全状态(如 Limp Home 模式)
  • 实现系统级安全响应协同

3.2 FSP状态机

SMU FSP状态机

图3:FSP状态机与时序图

状态定义:

状态ErrorPin含义后续动作
Normal High 正常工作 继续监控
Active Low 检测到故障 等待T1超时
Pending Low 故障确认,等待清除 等待清除命令
Recovery Toggle 恢复中 检测恢复成功

状态转换条件:

// FSP状态转换伪代码
typedef enum {
SMU_FSP_NORMAL = 0,
SMU_FSP_ACTIVE,
SMU_FSP_PENDING,
SMU_FSP_RECOVERY
} SmuFspState;

// 故障发生
if (fault_detected && current_state == SMU_FSP_NORMAL) {
set_state(SMU_FSP_ACTIVE);
start_timer(T1);
}

// T1超时
if (timer_T1_expired && current_state == SMU_FSP_ACTIVE) {
set_state(SMU_FSP_PENDING);
notify_pmic(); // ErrorPin拉低
}

// 故障清除
if (fault_cleared && current_state == SMU_FSP_PENDING) {
set_state(SMU_FSP_RECOVERY);
start_timer(T2);
}

// 恢复成功
if (timer_T2_expired && no_new_fault && current_state == SMU_FSP_RECOVERY) {
set_state(SMU_FSP_NORMAL);
release_pmic(); // ErrorPin恢复
}

3.3 ErrorPin时序要求

参数典型值说明
T1 1ms ~ 32ms 故障激活到Pending的时间
T2 应用定义 恢复检测时间
ErrorPin Low Width > 100μs PMIC检测最小脉宽

3.4 PMC联动配置

// ErrorPin与PMIC联动配置
typedef struct {
uint8 enable; // 使能ErrorPin功能
uint8 active_high; // 极性:High=故障 / Low=故障
uint16 t1_delay; // T1延迟 (ms)
uint16 t2_timeout; // T2超时 (ms)
uint8 failure_counter; // 连续失败阈值
} Smu_FspConfigType;

// PMC联动场景
typedef enum {
PMC_ACTION_NONE = 0, // 无动作
PMC_ACTION_LIMP_HOME, // 进入跛行模式
PMC_ACTION_SHUTDOWN, // 关闭系统
PMC_ACTION_RESET // 触发系统复位
} Smu_PmcActionType;

四、告警组与错误分类

4.1 SMU告警组

SMU告警组

图4:SMU告警组分类全景图

SMU将故障源划分为多个告警组 (Alarm Group):

告警组描述故障源
AG0 CPU陷阱 取指异常、数据异常、系统异常
AG1 PMU/存储 ECC错误、MPU违规
AG2 时钟/PLL PLL失锁、时钟监测失败
AG3 温度/电压 过温、过压、欠压
AG4 通信错误 CAN超时、SPI错误
AG5 自定义 用户定义的故障条件
AG6 通信安全 SafetyCAN错误
AG7 执行器 PWM监控、输出短路

4.2 AG0 CPU陷阱告警详解

// CPU陷阱告警映射
typedef enum {
SMU_CPU_TRAP_ILLOPR = 0, // 非法操作码
SMU_CPU_TRAP_MUNADD = 1, // 未对齐访问
SMU_CPU_TRAP_MEM = 2, // 内存访问权限违规
SMU_CPU_TRAP_GEN = 3, // 通用陷阱
SMU_CPU_TRAP_IOPR = 4, // I/O访问违规
SMU_CPU_TRAP_CONTEXT = 5, // 上下文管理错误
SMU_CPU_TRAP_STACK = 6, // 栈溢出/下溢
SMU_CPU_TRAP_SYSCALL = 7, // 系统调用错误
} Smu_CpuTrapType;

4.3 AG1 PMU/存储告警

错误类型来源SMU响应
单比特错误 (SED) ECC 自动纠正,记录日志
双比特错误 (DED) ECC 触发NMI,复位可选
地址解码错误 总线 触发系统复位
MPU违规 CPU 触发Trap,通知SMU

4.4 告警配置结构

// SMU告警配置
typedef struct {
uint8 enable; // 告警使能
uint8 sensitivity; // 触发灵敏度
uint16 debounce_time; // 去抖时间
uint8 reaction; // 响应动作
uint8 action_counter; // 动作计数器阈值
void (*callback)(uint8 ag, uint8 ai); // 回调函数
} Smu_AlarmConfigType;

// 响应动作枚举
typedef enum {
SMU_ACTION_NONE = 0, // 无动作
SMU_ACTION_NMI = 1, // 触发NMI
SMU_ACTION_RESET = 2, // 系统复位
SMU_ACTION_WDT_TRIGGER = 3, // 触发看门狗
SMU_ACTION_CALLBACK = 4, // 应用回调
SMU_ACTION_ERRPIN = 5, // ErrorPin报告
SMU_ACTION_ALL = 6, // 所有动作
} Smu_ReactionType;

五、故障响应与恢复机制

5.1 分级响应策略

SMU采用分级响应机制,根据故障严重程度执行不同动作:

┌─────────────────────────────────────────────────────────────────────┐
│ SMU 故障响应分级 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Level 1: 警告级别 (Warning) │
│ ├─ 响应:应用回调 + 日志记录 │
│ └─ 系统:继续运行 │
│ │
│ Level 2: 错误级别 (Error) │
│ ├─ 响应:NMI中断 + 状态保存 │
│ └─ 系统:进入安全模式 │
│ │
│ Level 3: 严重级别 (Critical) │
│ ├─ 响应:系统复位 + PMIC联动 │
│ └─ 系统:重启恢复 │
│ │
│ Level 4: 致命级别 (Fatal) │
│ ├─ 响应:进入LimpHome + 禁止重启 │
│ └─ 系统:跛行回家 │
│ │
└─────────────────────────────────────────────────────────────────────┘

5.2 NMI不可屏蔽中断

NMI是SMU触发最高优先级错误处理的方式:

// NMI处理函数示例
void SMU_NMI_Handler(void)
{
// 获取触发告警信息
Smu_AlarmInfoType alarm_info;
SMU_GetCurrentAlarm(&alarm_info);

// 保存关键状态
save_critical_context();

// 记录故障日志
log_fault_event(alarm_info.alarm_group, alarm_info.alarm_index, alarm_info.timestamp);

// 根据告警类型执行对应处理
switch (alarm_info.alarm_group) {
case SMU_AG0_CPU_TRAP:
handle_cpu_trap(alarm_info);
break;
case SMU_AG1_PMU_MEM:
handle_memory_error(alarm_info);
break;
case SMU_AG2_CLOCK:
handle_clock_failure();
break;
default:
handle_generic_error(alarm_info);
break;
}

// 触发系统复位或进入安全模式
if (should_reset_system()) {
SCU_SystemReset(RESET_ORIGIN_SMU);
}
}

5.3 复位机制

复位类型触发源影响范围典型用途
Application Reset SW 单核/模块 recoverable errors
System Reset SCU 全系统 SMU告警、WD超时
Chip Reset PMIC 全芯片 严重故障、VBAT复位

// SMU触发系统复位
void SMU_TriggerSystemReset(void)
{
// 设置复位原因
SCU_RST->RSTSTAT.B.RST = RST_CAUSE_SMU;

// 触发复位
SCU->PRST0.B.CRST0 = 1;

// 等待复位生效
while(1);
}

// 复位后诊断
void POST_Reset_Diagnosis(void)
{
// 读取复位原因
uint32 rst_cause = SCU_RST->RSTSTAT.U;

if (rst_cause & RST_CAUSE_SMU) {
// SMU触发的复位 – 需要分析日志
log_reset_reason();
run_postmortem();
}
}

5.4 看门狗联动

// SMU与看门狗联动
void SMU_WDT_Coordination(void)
{
// 发生严重故障时,立即触发看门狗
if (critical_fault_detected) {
// 停止喂狗,让看门狗超时复位
disable_wdt_service();

// 或者直接触发看门狗复位
trigger_wdt_reset();
}

// 恢复过程中,延长看门狗超时时间
if (recovery_in_progress) {
set_wdt_timeout(RECOVERY_TIMEOUT);
}
}

六、配置与编程实践

6.1 MCAL接口层

SMU的MCAL层提供标准化的API接口:

// SMU MCAL 头文件
#include "Smu.h"

// 初始化
void Smu_Init(const Smu_ConfigType *ConfigPtr);

// 配置告警
void Smu_SetAlarmConfig(uint8 AlarmGroup, uint8 AlarmIndex,
const Smu_AlarmConfigType *AlarmConfig);

// 触发告警 (软件方式)
void Smu_SetAlarm(uint8 AlarmGroup, uint8 AlarmIndex);

// 清除告警
void Smu_ClearAlarm(uint8 AlarmGroup, uint8 AlarmIndex);

// 获取告警状态
Smu_AlarmStatusType Smu_GetAlarmStatus(uint8 AlarmGroup, uint8 AlarmIndex);

// 获取FSP状态
Smu_FspStateType Smu_GetFspState(void);

// 获取错误计数
uint32 Smu_GetErrorCounter(uint8 AlarmGroup, uint8 AlarmIndex);

6.2 配置XML模板

<!– SMU配置片段 (EB tresos Studio导出) –>
<SMU>
<SmuGeneral>
<SmuCoreEnable>TRUE</SmuCoreEnable>
<SmuFspEnable>TRUE</SmuFspEnable>
</SmuGeneral>

<SmuFspConfiguration>
<FspConfig>
<T1Delay>2</T1Delay> <!– 2ms –>
<T2Timeout>100</T2Timeout> <!– 100ms –>
<FailureThreshold>3</FailureThreshold>
<ErrorPinPolarity>LOW_ACTIVE</ErrorPinPolarity>
</FspConfig>
</SmuFspConfiguration>

<SmuAlarmConfiguration>
<!– AG0 CPU陷阱配置 –>
<Alarm Group="0" Index="0">
<Enable>TRUE</Enable>
<Sensitivity>EDGE</Sensitivity>
<Reaction>SMU_ACTION_NMI</Reaction>
<Callback>CPU_Trap_Callback</Callback>
</Alarm>

<!– AG1 内存错误配置 –>
<Alarm Group="1" Index="0">
<Enable>TRUE</Enable>
<Sensitivity>LEVEL</Sensitivity>
<Reaction>SMU_ACTION_RESET | SMU_ACTION_ERRPIN</Reaction>
</Alarm>

<!– AG2 时钟故障配置 –>
<Alarm Group="2" Index="0">
<Enable>TRUE</Enable>
<Reaction>SMU_ACTION_RESET</Reaction>
</Alarm>
</SmuAlarmConfiguration>
</SMU>

6.3 状态监控API

// 运行时状态监控
typedef struct {
uint32 active_alarms[8]; // 各告警组激活状态
uint32 alarm_count[8]; // 各告警组计数
uint32 fsp_state; // FSP当前状态
uint32 last_fault_time; // 上次故障时间
uint32 system_uptime; // 系统运行时间
uint8 diagnostic_status; // 自诊断状态
} Smu_RuntimeStatusType;

// 获取运行时状态
void Smu_GetRuntimeStatus(Smu_RuntimeStatusType *Status)
{
uint8 i;

for (i = 0; i < 8; i++) {
Status->active_alarms[i] = SMU->AG[i].STS.U;
Status->alarm_count[i] = SMU->AG[i].CNT.U;
}

Status->fsp_state = SMU->FSPSTS.U;
Status->system_uptime = get_system_time();
Status->diagnostic_status = SMU->DIAGSTS.U;
}

// 应用层监控任务
void SmuMonitor_Task(void)
{
Smu_RuntimeStatusType status;
Smu_GetRuntimeStatus(&status);

// 检查是否有活跃告警
for (int i = 0; i < 8; i++) {
if (status.active_alarms[i] != 0) {
// 报告告警
report_active_alarms(i, status.active_alarms[i]);
}
}

// 检查FSP状态
if (status.fsp_state != SMU_FSP_NORMAL) {
log_fsp_state_change(status.fsp_state);
}
}

6.4 诊断测试

// SMU自检 – 建议在启动时执行
void SMU_DiagnosticTest(void)
{
// 1. 检查SMU核心健康状态
if (!SMU_CORE_HEALTHY()) {
// SMU核心故障
handle_smu_core_failure();
return;
}

// 2. 注入测试告警
SMU_EnableTestMode();

// 注入并清除每个告警组
for (uint8 ag = 0; ag < 8; ag++) {
// 注入告警
SMU_InjectAlarm(ag, 0);

// 验证告警状态
if (!SMU_AlarmPending(ag, 0)) {
log_error("AG%d alarm injection failed", ag);
}

// 清除告警
SMU_ClearAlarm(ag, 0);

// 验证清除
if (SMU_AlarmPending(ag, 0)) {
log_error("AG%d alarm clear failed", ag);
}
}

SMU_DisableTestMode();

// 3. 测试ErrorPin
SMU_SetErrorPin(TRUE); // 拉高
delay_us(100);
if (ERROR_PIN_STATE != HIGH) {
log_error("ErrorPin high test failed");
}

SMU_SetErrorPin(FALSE); // 拉低
delay_us(100);
if (ERROR_PIN_STATE != LOW) {
log_error("ErrorPin low test failed");
}
}

6.5 日志记录

// SMU故障日志结构
typedef struct {
uint32 timestamp; // 绝对时间戳
uint8 alarm_group; // 告警组
uint8 alarm_index; // 告警索引
uint8 reaction_taken; // 采取的动作
uint8 cpu_context; // CPU上下文信息
uint32 additional_info; // 附加信息
} Smu_FaultLogEntry;

// 环形缓冲区存储最近N条日志
#define SMU_LOG_DEPTH 32
static Smu_FaultLogEntry fault_log[SMU_LOG_DEPTH];
static uint8 log_index = 0;

// 记录故障事件
void Smu_LogFault(uint8 alarm_group, uint8 alarm_index, uint8 reaction)
{
fault_log[log_index].timestamp = get_system_timestamp();
fault_log[log_index].alarm_group = alarm_group;
fault_log[log_index].alarm_index = alarm_index;
fault_log[log_index].reaction_taken = reaction;
fault_log[log_index].cpu_context = get_cpu_context();
fault_log[log_index].additional_info = get_additional_info();

log_index = (log_index + 1) % SMU_LOG_DEPTH;

// 持久化到Flash (可选)
save_to_flash(fault_log, sizeof(fault_log));
}

七、SMU设计最佳实践

7.1 系统启动时的SMU初始化

// SMU初始化流程
void SMU_Init_Safe(void)
{
// Step 1: 配置FSP参数
Smu_FspConfigType fspConfig = {
.enable = TRUE,
.active_high = FALSE, // 低有效
.t1_delay = 2, // 2ms
.t2_timeout = 100, // 100ms
.failure_counter = 3
};
Smu_SetFspConfig(&fspConfig);

// Step 2: 配置所有告警组
for (uint8 ag = 0; ag < 8; ag++) {
Smu_AlarmConfigType alarmCfg = {
.enable = TRUE,
.sensitivity = LEVEL,
.debounce_time = 10,
.reaction = SMU_ACTION_CALLBACK | SMU_ACTION_ERRPIN,
.callback = Alarm_Callback
};
Smu_SetAlarmConfig(ag, 0, &alarmCfg);
}

// Step 3: 启动SMU自检
SMU_DiagnosticTest();

// Step 4: 清除所有初始告警状态
SMU_ClearAllAlarms();
}

7.2 告警处理策略

// 告警回调函数
void Alarm_Callback(uint8 alarm_group, uint8 alarm_index)
{
// 记录告警信息
Smu_AlarmInfoType info;
SMU_GetAlarmInfo(alarm_group, alarm_index, &info);

// 根据告警组采取不同策略
switch (alarm_group) {
case AG0_CPU_TRAP:
// 致命错误,记录上下文并复位
dump_cpu_context();
SCU_SystemReset(RESET_ORIGIN_SMU);
break;

case AG1_PMU_MEM:
// 内存错误,根据严重程度处理
if (info.severity == SEVERITY_HIGH) {
SCU_SystemReset(RESET_ORIGIN_SMU);
} else {
log_warning("Memory error recoverable");
}
break;

case AG2_CLOCK:
// 时钟错误,立即响应
switch_to_backup_clock();
SCU_SystemReset(RESET_ORIGIN_SMU);
break;

case AG4_COMM:
// 通信错误,应用层处理
notify_comm_failure(info.index);
break;

default:
log_error("Unknown alarm group: %d", alarm_group);
break;
}
}

八、总结

8.1 SMU核心要点

要点内容
定位 TC3xx集中式故障管理模块
双域架构 Safety Domain与Application Domain物理隔离
FSP协议 与PMIC通信的标准故障信号协议
告警分类 8个告警组,覆盖所有故障源
响应机制 NMI/复位/看门狗/回调/ErrorPin多级联动
MCAL支持 标准化API,易于集成AUTOSAR

8.2 设计建议

场景建议
告警灵敏度 安全关键应用设为LEVEL,避免漏报
响应时间 T1延迟设量3-5ms,平衡响应与去抖
恢复策略 实现单次故障立即响应、多次故障升级机制
日志持久化 将故障日志写入Flash,支持离线诊断
PMC联动 确保ErrorPin与PMIC正确连接和配置

8.3 系列展望

后续文章核心内容
IF-SAFE-08 系统级安全:PMIC联动与安全路径
IF-SAFE-09 共因失效与FMEDA
IF-SAFE-10 安全认证实战:从需求到交付

九、技术参考

9.1 官方文档

  • AURIX TC3xx User Manual Part 2 (彝起学官方)
  • AN1002 – FUSA in a Nutshell (功能安全应用笔记)
  • ISO 26262 Road vehicles – Functional Safety

9.2 开发资源

  • EB tresos Studio – SMU配置工具
  • iLLD – SMU驱动接口
  • AUTOSAR BSW – SM模块

9.3 故障排查清单

┌─────────────────────────────────────────────────────────────────────┐
│ SMU 故障排查清单 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. ErrorPin持续拉低 │
│ → 检查AG0-AG7各告警组状态 │
│ → 确认PMC连接正确 │
│ │
│ 2. 复位后立即再次复位 │
│ → 检查启动阶段故障 │
│ → 确认SMU初始化顺序 │
│ │
│ 3. 故障清除后重复触发 │
│ → 检查硬件故障是否持续 │
│ → 增加去抖时间配置 │
│ │
│ 4. FSP状态机卡在Pending │
│ → 确认故障清除条件满足 │
│ → 检查T2超时设置 │
│ │
└─────────────────────────────────────────────────────────────────────┘


关注作者:专注汽车电子与嵌入式系统,分享AUTOSAR、AURIX、功能安全等技术干货。

本文标签:AURIX, TC3xx, SMU, 功能安全, ISO 26262, FSP, 故障管理, ASIL-D

赞(0)
未经允许不得转载:171主机测评 » 【IF-SAFE-07】SMU故障管理 - 双域架构与FSP
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址