4、功能安全硬件基础:SMU(安全管理单元)、时钟监控、电压监控、温度监控、CRC引擎
AURIX TC3xx 系列微控制器在功能安全设计中的核心优势,不仅在于其多核架构和锁步核机制,更在于其内置的、符合 ISO 26262 标准的一系列硬件安全机制。这些机制构成了系统级功能安全的“最后一道防线”。本章将深入剖析 TC3xx 中五个关键硬件模块:安全管理单元(SMU)、时钟监控、电压监控、温度监控以及 CRC 引擎。理解这些模块的工作原理、配置方法及故障响应路径,是进行有效系统安全设计的前提。下图展示了这些模块在 TC3xx 内部如何协同工作,共同构成一个完整的硬件安全监控与响应闭环。
4.1 安全管理单元(SMU)核心原理与配置
核心原理:故障的汇聚与分发中心
SMU 是 TC3xx 功能安全架构的中枢。它并非直接执行安全功能,而是负责收集来自芯片内部各个模块(如 CPU、总线、内存、时钟、电源、外设等)的故障信号(Alarm),并根据预定义的严重等级(Alarm Severity)触发相应的响应(Reaction)。其核心机制包括:
- Alarm 收集:内部多达数百个故障源(如 ECC 错误、时钟失锁、电压越限)通过硬件连线直接连接到 SMU 的 Alarm 输入端口。
- Alarm 配置:每个 Alarm 源都可以独立配置其使能状态、触发条件(如第一次故障还是连续故障)以及对应的响应行为。
- 响应机制:SMU 支持多种响应方式,包括:生成中断请求(Service Request)、触发外部 FSP(Fault Signaling Protocol)引脚(如 ERROR 引脚)输出特定电平、请求系统复位、或进入安全状态(如切断电机驱动信号)。
- 故障恢复:SMU 支持故障恢复机制,允许软件在故障条件消失后,通过写寄存器来清除 Alarm 状态,使系统从安全状态恢复到正常运行状态。
判断方法与操作流程:配置一个典型的 SMU Alarm
在实际项目中,配置 SMU 通常遵循以下步骤:
- 确定安全目标:根据系统级 FMEDA(失效模式与影响分析)确定需要监控的故障源及其安全等级(ASIL)。
- 映射 Alarm 源:查阅 TC3xx 用户手册,找到对应故障源的 Alarm ID(如 SMU_ALARM_CPU0_ECC)。
- 配置 Alarm 行为:通过 SMU 寄存器(如 SMU_AGi_CFG)设置该 Alarm 的响应类型(中断、FSP、复位)和触发条件。
- 编写中断服务函数:如果配置为中断响应,需要在中断服务函数中执行安全状态处理逻辑(如关闭 PWM 输出、存储故障码)。
- 测试验证:通过软件注入故障(如向 SMU 的测试寄存器写入特定值)来验证 Alarm 是否被正确触发和响应。
在电机控制器中,过流是必须快速处理的安全事件。通常将电流传感器输出的模拟信号与阈值比较器相连,比较器输出连接到 TC3xx 的一个 GPIO 或专用故障输入引脚。该引脚连接到 SMU 的一个 Alarm 源。配置该 Alarm 为最高优先级,触发后直接通过 FSP 引脚(如 ERROR)输出低电平,该信号直接连接到外部硬件逻辑电路,在 1 微秒内封锁功率管的驱动信号。同时,SMU 也产生一个中断给 CPU,用于记录故障状态和进行后续处理。这种硬件直接响应路径避免了软件响应延迟,确保了功能安全的时间要求。
4.2 时钟监控与电压/温度监控机制
核心原理:保障系统运行环境的稳定
时钟和电源是芯片运行的“血液”和“心跳”。TC3xx 内置了多种监控机制来确保它们的稳定性。
- 时钟监控:主要监控 PLL(锁相环)的失锁(Loss of Lock)和时钟丢失(Loss of Clock)。PLL 内部有失锁检测电路,当参考时钟与反馈时钟频率偏差超过一定范围时,会触发失锁信号。此外,SMU 还监控系统时钟(如 fPLL)是否停止或频率异常。
- 电压监控:TC3xx 内部集成了多个电压监控器(如 SMU 内部的监控比较器),用于监控核心电压(VDD)、IO 电压(VDDP)等关键电源轨。当电压低于或高于设定的阈值时,会触发欠压/过压 Alarm。
- 温度监控:芯片内置温度传感器(TSD),用于监控结温。当温度超过设定的警告阈值或关断阈值时,会触发相应的 Alarm。这可以防止芯片因过热而损坏,并确保在极端温度下仍能安全运行。
判断方法与操作流程:监控阈值与响应配置
这些监控模块的配置相对独立,但最终都汇聚到 SMU。配置流程如下:
- 时钟监控配置:在启动 PLL 后,使能 PLL 失锁检测。通常将失锁 Alarm 配置为产生 NMI(不可屏蔽中断)或直接触发系统复位,因为时钟异常会导致软件无法正常运行。
- 电压监控配置:根据芯片数据手册推荐的电压范围,设置欠压/过压阈值。这些阈值通常通过 SMU 的寄存器进行配置。响应方式一般配置为复位或 FSP。
- 温度监控配置:设置警告阈值(如 125°C)和关断阈值(如 150°C)。警告阈值触发中断,用于软件降频或启动散热措施;关断阈值触发硬件复位或 FSP,直接进入安全状态。
| 监控类型 | 监控对象 | 典型阈值/条件 | 推荐响应方式 |
|---|---|---|---|
| 时钟监控 | PLL 失锁 | 频率偏差 > 1% | NMI 或系统复位 |
| 时钟监控 | 系统时钟丢失 | 无时钟脉冲 | 系统复位 |
| 电压监控 | VDD (核心电压) | 低于 1.25V 或高于 1.45V | 系统复位 |
| 电压监控 | VDDP (IO电压) | 低于 3.1V 或高于 3.6V | FSP 或复位 |
| 温度监控 | 结温 (Tj) | 警告 125°C / 关断 150°C | 中断 / 复位 |
4.3 CRC 引擎:数据完整性的守护者
核心原理:硬件加速的校验计算
CRC(循环冗余校验)引擎是 TC3xx 内置的一个硬件模块,用于计算数据块的 CRC 值。它支持多种多项式(如 CRC-8, CRC-16, CRC-32, CRC-64)和多种数据宽度。在功能安全中,CRC 引擎主要用于:
- 内存校验:对 RAM 或 Flash 中的关键数据块(如安全关键变量、启动代码)进行周期性校验,以检测数据是否被意外篡改或损坏。
- 通信校验:在 SPI、CAN 等通信中,使用硬件 CRC 引擎计算发送数据的校验值,并在接收端进行验证,确保数据传输的完整性。
- 软件自检:用于对软件代码段进行完整性校验,防止程序计数器跑飞或代码被错误修改。
操作流程:使用 CRC 引擎进行内存校验
- 初始化:配置 CRC 引擎的工作模式(多项式、数据宽度、输入/输出格式)。
- 数据输入:将需要校验的数据块通过寄存器或 DMA 方式写入 CRC 引擎。
- 计算完成:等待 CRC 引擎计算完成,读取结果寄存器中的 CRC 值。
- 比较验证:将计算出的 CRC 值与预先存储的“黄金”CRC 值进行比较。如果一致,则数据完整;否则,触发错误处理。
背景与约束:安全气囊控制器(ACU)在点火后必须快速完成自检,确保系统安全。自检时间通常要求在 100ms 以内。关键约束是 CPU 负载不能过高,且必须检测出 Flash 中程序代码的任何位翻转。
初始现象与目标:使用软件 CRC 计算整个 Flash 需要约 500ms,无法满足时间要求。目标是将自检时间缩短到 50ms 以内。
关键输入数据:Flash 大小为 2MB,CRC 引擎时钟频率为 100MHz。
分析判断过程:软件 CRC 效率低是因为 CPU 逐字节读取并计算。硬件 CRC 引擎可以以 DMA 方式从 Flash 读取数据并计算,无需 CPU 干预。
实际操作步骤:
- 配置 DMA 通道,将 Flash 起始地址作为源地址,CRC 引擎的数据寄存器作为目的地址。
- 配置 DMA 传输长度为 2MB。
- 启动 DMA 传输,CRC 引擎自动计算。
- DMA 传输完成中断触发,读取 CRC 结果并与预存值比较。
结果对比:使用硬件 CRC + DMA 后,整个 2MB Flash 的校验时间缩短至约 20ms,满足要求,且 CPU 负载几乎为零。
风险与代价:需要占用一个 DMA 通道和 CRC 引擎资源。预存的“黄金”CRC 值需要在生产时计算并烧录,且需要防止其被意外修改。
复盘经验:硬件 CRC 引擎是功能安全设计中不可或缺的加速器。在项目初期,应评估所有需要校验的数据块,并规划好 DMA 和 CRC 引擎的使用计划。
4.4 总结与复盘
本章详细介绍了 TC3xx 功能安全硬件基础的五个关键模块。SMU 是故障管理的核心,负责收集和响应各类故障;时钟、电压、温度监控保障了芯片运行环境的稳定;CRC 引擎则为数据完整性提供了硬件级的保障。在实际系统设计中,这些模块需要协同工作,并配合软件策略,才能构建一个完整、可靠的功能安全机制。
| 模块 | 核心功能 | 关键配置点 | 常见错误 |
|---|---|---|---|
| SMU | 故障汇聚与响应 | Alarm 使能、响应类型、FSP 配置 | 所有故障都走中断,导致延迟 |
| 时钟监控 | PLL 失锁/时钟丢失检测 | 失锁阈值、响应方式 | 忽略时钟监控,导致系统时钟异常后软件失控 |
| 电压监控 | 电源轨欠压/过压检测 | 电压阈值、响应方式 | 阈值设置不合理,导致误报警或漏报 |
| 温度监控 | 结温检测 | 警告/关断阈值 | 未配置温度监控,导致芯片过热损坏 |
| CRC 引擎 | 数据完整性校验 | 多项式、数据宽度、DMA 配合 | 与 ECC 混淆,或未使用 DMA 导致 CPU 负载过高 |