Hercules™ 安全 MCU 功能安全原理与安全特性详解

图 1:Hercules 的"安全岛"诊断架构------红色为硬件诊断区,蓝色为软硬混合诊断区,黑色为非关键区域(图片来源:TI 培训课件《Hercules 系列处理器安全特性介绍》)
本文目录
- [Hercules™ 安全 MCU 功能安全原理与安全特性详解](#Hercules™ 安全 MCU 功能安全原理与安全特性详解)
-
- 引言
- 一、先厘清概念:四种"安全"与功能安全
- 二、功能安全的定义与边界
-
- [2.1 标准中的定义](#2.1 标准中的定义)
- [2.2 可靠性 ≠ 功能安全](#2.2 可靠性 ≠ 功能安全)
- [2.3 两类失效:系统性失效与随机失效](#2.3 两类失效:系统性失效与随机失效)
- [三、安全目标与 SIL / ASIL 等级](#三、安全目标与 SIL / ASIL 等级)
- [四、安全系统架构:从 1oo1 到 2oo3](#四、安全系统架构:从 1oo1 到 2oo3)
- [五、Hercules 的核心思想:"安全岛"](#五、Hercules 的核心思想:"安全岛")
- [六、1oo1D 双核锁步:Hercules 的招牌机制](#六、1oo1D 双核锁步:Hercules 的招牌机制)
-
- [6.1 物理层面:如何避免共因失效](#6.1 物理层面:如何避免共因失效)
- [6.2 时间层面:两周期延时与 CCM 比对](#6.2 时间层面:两周期延时与 CCM 比对)
- [6.3 CCM 的四种工作模式](#6.3 CCM 的四种工作模式)
- [6.4 相对软件方案的三大优势](#6.4 相对软件方案的三大优势)
- [七、CPU 自检:STC / LBIST](#七、CPU 自检:STC / LBIST)
- 八、存储器自检:PBIST
- [九、存储保护:ECC 与 MPU](#九、存储保护:ECC 与 MPU)
-
- [9.1 ECC:64 + 8 位](#9.1 ECC:64 + 8 位)
- [9.2 MPU:按主设备隔离](#9.2 MPU:按主设备隔离)
- [十、时钟监控:ECLK、晶振监视、PLL 监测与 DCC](#十、时钟监控:ECLK、晶振监视、PLL 监测与 DCC)
- 十一、电压监控:VMON
- 十二、数字窗口看门狗:DWWD
- 十三、错误信号模块:ESM
- [十四、从诊断到认证:这些机制如何支撑 ASIL D / SIL 3](#十四、从诊断到认证:这些机制如何支撑 ASIL D / SIL 3)
- 十五、踩坑总结
- 结束语
引言
"安全 MCU"这个词很容易被误解。很多人第一反应是"加密更强、防破解更好",但这并不是 Hercules 的核心。Hercules 所说的安全,指的是 功能安全(Functional Safety) ------即系统在发生故障时,仍能将风险控制在可接受范围内。
本文基于 TI 的《Hercules 系列处理器安全特性介绍》培训课件,系统梳理功能安全的几个基本概念(SIL、1ooXD、安全岛),并逐一拆解 Hercules 的硬件安全机制:双核锁步、CCM、STC/PBIST、ECC、MPU、DCC、VMON、DWWD 与 ESM。
一、先厘清概念:四种"安全"与功能安全
在 MCU 语境下,"安全"至少有五种不同含义,Hercules 强调的是最后一种:
| 类型 | 关注点 | 典型手段 |
|---|---|---|
| 网络安全 | 通信与存储数据的机密性、完整性 | 硬件加解密引擎、安全启动 |
| 计算安全 | 敏感数据与可信应用的隔离 | 硬件虚拟化、TrustZone 类机制 |
| 固件安全 | 防止固件被非法提取、防破解 | 读保护、调试口锁定(如 AJSM) |
| 环境安全 | 抗干扰、耐高温、长期可靠性 | 材料、电路与工艺改进 |
| 功能安全 | 系统故障时不造成不可接受的风险 | 锁步、ECC、BIST、监控、ESM |
因此,Hercules 的价值不在于"更难被破解",而在于它能在硬件层面检测出故障,并把系统导向安全状态。
二、功能安全的定义与边界
2.1 标准中的定义
- IEC 61508 :功能安全是避免系统对人身财产安全造成直接或间接损害、或对环境造成不良影响等不可接受的风险,取决于系统对输入的正确响应。
- ISO 26262 :功能安全是避免由于人为操作及其他原因发生的故障而造成不可接受的风险。
关键词是"不可接受的风险",而不是"零故障"。绝对安全的系统不存在,所有系统都有固有且可量化的失效概率;功能安全要做的,是把失效概率压到应用可容忍的水平。
一个有助理解的例子:带过热保护的普通电机,过热时保护装置会切断电源,因此系统具备功能安全;而一台能耐受极高温度的特制电机,即使不烧毁,没有检测与防护机制,从功能安全角度看反而不合格。
2.2 可靠性 ≠ 功能安全
两者经常被混为一谈,实际关系如下:
| 对比项 | 可靠性 | 功能安全 |
|---|---|---|
| 关注目标 | 维持系统功能、实现既定目标 | 防止事故发生、避免人身与财产损失 |
| 时间视角 | 侧重故障发生前的系统状态 | 侧重故障发生后的系统影响 |
| 关系 | 功能安全建立在可靠性之上 | 功能安全是可靠性的重要补充 |
结论:高质量和高可靠并不能自动等于安全。再严格的质量体系也无法消除随机失效,必须靠诊断机制来"兜底"。
2.3 两类失效:系统性失效与随机失效
| 失效类型 | 成因 | 应对方式 |
|---|---|---|
| 系统性失效 | 设计或生产过程中的错误,必然复现 | 通过严格开发流程、评审、测试来降低 |
| 随机失效 | 产品固有随机缺陷(如辐照、老化、原子迁移) | 无法靠管理消除,只能在线检测并处理 |
软件失效通常归类为系统性失效(可以通过 debug 修复);而硬件随机失效只能依赖芯片内的诊断机制实时捕获------这正是 Hercules 硬件诊断存在的意义。
三、安全目标与 SIL / ASIL 等级
任何安全系统都必须先定义安全目标。以汽车安全气囊为例:
- 发生碰撞时,气囊必须打开;
- 未发生碰撞时,气囊绝不能打开。
有了明确的安全目标,才能确定对应的安全完整性等级(SIL, Safety Integrity Level):
- IEC 61508:SIL-1 ~ SIL-4 四级;
- ISO 26262:ASIL-A ~ ASIL-D 四级,另有质量管理等级 QM。
SIL 与低需求模式下的平均失效概率(PFDavg)大致对应如下:
| SIL 等级 | PFDavg 范围 | 含义 |
|---|---|---|
| SIL 1 | 10 − 2 ≤ P F D a v g < 10 − 1 10^{-2} \le PFD_{avg} < 10^{-1} 10−2≤PFDavg<10−1 | 最低安全完整性 |
| SIL 2 | 10 − 3 ≤ P F D a v g < 10 − 2 10^{-3} \le PFD_{avg} < 10^{-2} 10−3≤PFDavg<10−2 | 中等 |
| SIL 3 | 10 − 4 ≤ P F D a v g < 10 − 3 10^{-4} \le PFD_{avg} < 10^{-3} 10−4≤PFDavg<10−3 | 较高(Hercules RM 系列目标) |
| SIL 4 | 10 − 5 ≤ P F D a v g < 10 − 4 10^{-5} \le PFD_{avg} < 10^{-4} 10−5≤PFDavg<10−4 | 最高 |
而诊断机制的作用,就是通过**诊断覆盖率(DC)**把"危险但未被检测"的失效率降下来:
D C = λ D D λ D × 100 % DC = \frac{\lambda_{DD}}{\lambda_D} \times 100\% DC=λDλDD×100%
其中 λ D \lambda_D λD 为危险失效率, λ D D \lambda_{DD} λDD 为可被诊断检测出的危险失效率。DC 越高,未被检测的危险失效 λ D U = λ D − λ D D \lambda_{DU} = \lambda_D - \lambda_{DD} λDU=λD−λDD 就越小,系统可达的 SIL 等级就越高。
四、安全系统架构:从 1oo1 到 2oo3
"XooY"是功能安全领域的通用表述:Y 表示总通道数,X 表示允许导致系统失效的通道数(可理解为"至少需要几个通道正常,系统才安全")。
| 架构 | 结构特点 | 安全性 | 典型适用 |
|---|---|---|---|
| 1oo1 | 单路输入、单路输出,无冗余无诊断 | 最低,不具备功能安全 | 普通控制 |
| 1oo2 | 两路冗余,输出串联,任一路失效即失效 | 适合开路安全系统 | 需冗余的安全输出 |
| 2oo2 | 两路冗余,执行机构并联,任一路正常即可闭合 | 适合闭合安全系统 | 需高可用性的闭合控制 |
| 2oo3 | 三通道表决(TMR),容忍 1oo2 开路失效与 2oo2 闭合失效 | 最高,兼顾安全与可用性 | 零容忍失效场景 |
| 1oo1D | 单通道 + 诊断模块,诊断到危险失效即禁止输出 | 等效于 1oo2 | Hercules 全系列 |
1oo1D 中的 "D" 就是 Diagnostic(诊断)。它的巧妙之处在于:用硬件诊断代替物理冗余,把检测到的危险失效转换为安全失效,从而以接近单通道的成本获得 1oo2 级别的安全等级------这正是 Hercules 控制成本的关键设计。

图 2:1oo1D 架构------诊断电路持续监视输入、逻辑与输出,发现异常时立即禁止输出(图片来源:TI 培训课件)
五、Hercules 的核心思想:"安全岛"
Hercules 全系列的安全设计都建立在**"安全岛"(Safety Island)理念之上:先对 MCU 内部共享且关键**的单元施加硬件诊断,把它们打造成"已知绝对安全"的孤岛;再用这些安全岛去诊断芯片的其余部分,从而以较小成本实现全片覆盖。
按诊断方式,芯片被划分为三类区域:
| 区域 | 覆盖对象 | 诊断方式 |
|---|---|---|
| 红色:硬件诊断区 | CPU、VIM 中断控制器、电源/复位/时钟、DMA、RTI 定时器 | 纯硬件诊断(锁步、BIST、监控、CRC) |
| 蓝色:混合诊断区 | 外设 RAM、串口/网络通信、I/O、ADC | 奇偶校验/CRC、I/O 回环、ADC 自检与共享通道 |
| 黑色:非关键区 | 调试与下载模块(JTAG、Trace 等) | 不诊断(正常运行时不参与功能) |
这种分层让"安全"与"成本"取得了平衡:关键路径上不惜成本,非关键路径上不做无谓投入。
六、1oo1D 双核锁步:Hercules 的招牌机制
6.1 物理层面:如何避免共因失效
双核锁步最怕的不是"两个核都坏",而是"同一个原因让两个核同时坏"(共因失效)。Hercules 在物理布局上做了针对性设计:
- 两个完全相同的 CPU 在版图上镜像旋转 90° 放置;
- 两个 CPU 之间的间距大于 100 µm;
- 每个 CPU 都有独立的保护环(Power Ring)。
这样,单粒子、局部干扰、版图缺陷等共因很难同时影响两个核。

图 3:锁步双核的物理布局与比较通路------镜像旋转 90°、间距 >100 µm、独立保护环、独立延时链(图片来源:TI 培训课件)
6.2 时间层面:两周期延时与 CCM 比对
两个 CPU 执行相同的指令流,但在时间上刻意错开:
#mermaid-svg-2p9AIlVpmJ5I8IWP{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-2p9AIlVpmJ5I8IWP .error-icon{fill:#552222;}#mermaid-svg-2p9AIlVpmJ5I8IWP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2p9AIlVpmJ5I8IWP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .marker.cross{stroke:#333333;}#mermaid-svg-2p9AIlVpmJ5I8IWP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2p9AIlVpmJ5I8IWP p{margin:0;}#mermaid-svg-2p9AIlVpmJ5I8IWP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster-label text{fill:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster-label span{color:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster-label span p{background-color:transparent;}#mermaid-svg-2p9AIlVpmJ5I8IWP .label text,#mermaid-svg-2p9AIlVpmJ5I8IWP span{fill:#333;color:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .node rect,#mermaid-svg-2p9AIlVpmJ5I8IWP .node circle,#mermaid-svg-2p9AIlVpmJ5I8IWP .node ellipse,#mermaid-svg-2p9AIlVpmJ5I8IWP .node polygon,#mermaid-svg-2p9AIlVpmJ5I8IWP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .rough-node .label text,#mermaid-svg-2p9AIlVpmJ5I8IWP .node .label text,#mermaid-svg-2p9AIlVpmJ5I8IWP .image-shape .label,#mermaid-svg-2p9AIlVpmJ5I8IWP .icon-shape .label{text-anchor:middle;}#mermaid-svg-2p9AIlVpmJ5I8IWP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .rough-node .label,#mermaid-svg-2p9AIlVpmJ5I8IWP .node .label,#mermaid-svg-2p9AIlVpmJ5I8IWP .image-shape .label,#mermaid-svg-2p9AIlVpmJ5I8IWP .icon-shape .label{text-align:center;}#mermaid-svg-2p9AIlVpmJ5I8IWP .node.clickable{cursor:pointer;}#mermaid-svg-2p9AIlVpmJ5I8IWP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .arrowheadPath{fill:#333333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2p9AIlVpmJ5I8IWP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-2p9AIlVpmJ5I8IWP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2p9AIlVpmJ5I8IWP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster text{fill:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP .cluster span{color:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2p9AIlVpmJ5I8IWP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-2p9AIlVpmJ5I8IWP rect.text{fill:none;stroke-width:0;}#mermaid-svg-2p9AIlVpmJ5I8IWP .icon-shape,#mermaid-svg-2p9AIlVpmJ5I8IWP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2p9AIlVpmJ5I8IWP .icon-shape p,#mermaid-svg-2p9AIlVpmJ5I8IWP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-2p9AIlVpmJ5I8IWP .icon-shape .label rect,#mermaid-svg-2p9AIlVpmJ5I8IWP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2p9AIlVpmJ5I8IWP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-2p9AIlVpmJ5I8IWP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-2p9AIlVpmJ5I8IWP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 延迟 2 个周期
延迟 1 个周期
结果一致
结果不一致
输入与时钟
CPU0(主核)
CPU1(镜像核)
CCM 比较模块
输出 / 控制
ESM 错误信号模块
nERROR 引脚
图 4:锁步数据流------输入差 2 周期、输出差 1 周期,最终在 CCM 同一时刻比对
- 输入指令先送 CPU0,延迟 2 个周期后送 CPU1;
- CPU0 的计算结果延迟 1 个周期后,与 CPU1 的结果同时到达比较模块;
- CCM(Core Compare Module) 逐周期比对,不一致即报错。
时间上的错开,使瞬态干扰(如单次电源毛刺)难以同时污染两个核,进一步降低共因失效概率。
6.3 CCM 的四种工作模式
CCM 是纯硬件比较器,自身也具备自检能力。通过特定配置值选择模式:
| 模式 | 配置值 | 行为 |
|---|---|---|
| 锁步 Lock Step | 0000 |
正常工作,按比对结果输出错误信号与自检错误信号 |
| 自检 Self Test | 0110 |
检测 CCM 自身硬件是否正常,此时错误信号不工作 |
| 强制错误 Error Forcing | 1001 |
强制输入错误,验证错误通路(错误信号必输出) |
| 强制自检错误 Self Test Error Forcing | 1111 |
强制输出自检错误信号,验证 ESM 通路 |
注意:只能写入表中规定的配置值,写入其他值会被直接切换回锁步模式------这是防止误配置导致安全机制失效的保护设计。
6.4 相对软件方案的三大优势
| 维度 | 1oo1D 硬件锁步 | 软件/多核冗余 |
|---|---|---|
| 检测时延 | 2~3 个周期即可发现错误 | 需周期性软件比对,延迟大 |
| 覆盖范围 | 硬件、瞬态、持续等各类故障 | 依赖软件覆盖,易有盲区 |
| 性能与资源开销 | 几乎为零,不占用 Flash/RAM | 占用 CPU 时间与存储空间 |
| 集成成本 | 无需额外软件开发 | 需改造应用架构 |
七、CPU 自检:STC / LBIST
CPU 内部的诊断由**自检控制器(STC,基于 LBIST)**完成:
- 纯硬件执行,不占用程序存储器与 CPU 资源;
- 诊断覆盖率 > 95%;
- 可在系统启动时自动运行,也可通过寄存器配置按需启动;
- 逐个对寄存器进行输入/输出激励与结果比对。
⚠️ 需要注意:自检会改变寄存器的值。如果要在运行期做自检,必须先备份现场数据,自检后再恢复。
八、存储器自检:PBIST
**可编程存储器检测单元(PBIST)**负责片内 RAM 的自检:
- 检测算法固化在 ROM 中,可按需选择不同算法(多种复合失效模型);
- 通常在启动时执行,也可由应用主动触发;
- 相比软件自测,速度快 10~100 倍,且不占用用户程序空间;
- 诊断覆盖率 > 95%,且覆盖率是"已知"的,用户无需再自行验证;
- 可区分硬件错误与软件错误,提高系统从软件错误中恢复的概率。
九、存储保护:ECC 与 MPU
9.1 ECC:64 + 8 位
Flash 与 RAM 全区域带 ECC 保护,每 64 位数据 配 8 位 ECC:
- 纠正 1 位错误 ,检测 2 位及以上错误(SECDED);
- ECC 校验与数据/指令访问并行完成,不产生额外延迟,对性能无影响;
- 有效保护 CPU 到 Flash/RAM 总线上的数据传输。
9.2 MPU:按主设备隔离
片上存储器保护单元(MPU)按总线主设备分别配置,主设备包括 CPU、DMA、HTU、FTU 等:
- 区域属性可配为只读 / 只写 / 可读写;
- 定义区域之外的访问只允许"只读"或"不可访问";
- 越权访问立即产生错误信号送入 ESM。
这套机制既能防误写,也能防越权读取,是软件隔离与安全分区的基础。
十、时钟监控:ECLK、晶振监视、PLL 监测与 DCC
时钟是数字系统的"心跳",时钟失效往往导致程序跑飞。Hercules 提供四层时钟防护:
- ECLK 外部时钟输出:将 CPU 时钟分频后从引脚输出,可在片外实时测量频率;
- 晶振监视器 :检测晶振频率是否超出设定的最大/最小值;失效时可选择复位或切换到内部低功耗振荡器 LPO;
- PLL 失效监测:检测锁相失败;失效时可选择复位、切换 LPO 或切回外部晶振继续运行;
- 双时钟比较器(DCC):以一个时钟为参考,测量另一个时钟的频率。

图 5:DCC 原理------两个计数器分别对参考时钟与被测时钟计数,在可编程窗口内比较计数值(图片来源:TI 培训课件)
DCC 的工作方式:
- 用户设定两个时钟源的固定频率比值 与可编程窗口容差;
- 模块连续监控(也可选单序列单点测量),超出窗口即报错;
- 全程无需软件干预,可作为"时钟心跳"的硬件看门狗。
十一、电压监控:VMON
电压监视器(VMON)负责供电安全:
- 上电阶段:保持系统复位,直到内核与 I/O 电压进入正常范围;
- 运行阶段:电压超出设定的最大/最小值时产生复位;
- 内核电压超限时,同时将所有 I/O 置为高阻,避免外设输出不可控电平。
这保证了"电压异常时,系统不会进入不可控状态",而是被强制拉回安全态。
十二、数字窗口看门狗:DWWD
看门狗是防程序跑飞的标准配置,Hercules 提供的是更严格的数字窗口看门狗:
- 25 位递减计数器;
- 支持 100% / 50% / 25% / 12.5% / 3.125% 多种窗口类型------喂狗太早和太晚都会触发;
- 未按时喂狗 → 复位 + 不可屏蔽中断(NMI)+ 向 ESM 发送错误信号;
- 喂狗必须写入特定密钥序列 (
0xE51A、0xA35C),防止误操作; - 一旦启用,只有系统复位或上电复位才能关闭,杜绝软件"偷偷关狗"。
十三、错误信号模块:ESM
ESM 是整个安全体系的"报警中心":
- 最多支持 96 个错误信号输入 ,分为 3 组,按对系统的影响程度分级处理;
- 每组可配置为低优先级中断 或高优先级中断,交由中断管理器处理;
- 通过专用 nERROR 引脚向片外输出错误指示,输出电平持续时间可配置;
- ESM 自身带自检功能,可强制产生错误信号来验证本模块与外部通路是否正常。

图 6:ESM 结构------三组错误输入经优先级分级后产生中断或通过 nERROR 引脚输出(图片来源:TI 培训课件)
十四、从诊断到认证:这些机制如何支撑 ASIL D / SIL 3
把上述机制串起来,就得到 Hercules 的完整诊断闭环:
#mermaid-svg-hz4RfhCALhHMqogW{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hz4RfhCALhHMqogW .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hz4RfhCALhHMqogW .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hz4RfhCALhHMqogW .error-icon{fill:#552222;}#mermaid-svg-hz4RfhCALhHMqogW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hz4RfhCALhHMqogW .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hz4RfhCALhHMqogW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hz4RfhCALhHMqogW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hz4RfhCALhHMqogW .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hz4RfhCALhHMqogW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hz4RfhCALhHMqogW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hz4RfhCALhHMqogW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hz4RfhCALhHMqogW .marker.cross{stroke:#333333;}#mermaid-svg-hz4RfhCALhHMqogW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hz4RfhCALhHMqogW p{margin:0;}#mermaid-svg-hz4RfhCALhHMqogW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hz4RfhCALhHMqogW .cluster-label text{fill:#333;}#mermaid-svg-hz4RfhCALhHMqogW .cluster-label span{color:#333;}#mermaid-svg-hz4RfhCALhHMqogW .cluster-label span p{background-color:transparent;}#mermaid-svg-hz4RfhCALhHMqogW .label text,#mermaid-svg-hz4RfhCALhHMqogW span{fill:#333;color:#333;}#mermaid-svg-hz4RfhCALhHMqogW .node rect,#mermaid-svg-hz4RfhCALhHMqogW .node circle,#mermaid-svg-hz4RfhCALhHMqogW .node ellipse,#mermaid-svg-hz4RfhCALhHMqogW .node polygon,#mermaid-svg-hz4RfhCALhHMqogW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hz4RfhCALhHMqogW .rough-node .label text,#mermaid-svg-hz4RfhCALhHMqogW .node .label text,#mermaid-svg-hz4RfhCALhHMqogW .image-shape .label,#mermaid-svg-hz4RfhCALhHMqogW .icon-shape .label{text-anchor:middle;}#mermaid-svg-hz4RfhCALhHMqogW .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hz4RfhCALhHMqogW .rough-node .label,#mermaid-svg-hz4RfhCALhHMqogW .node .label,#mermaid-svg-hz4RfhCALhHMqogW .image-shape .label,#mermaid-svg-hz4RfhCALhHMqogW .icon-shape .label{text-align:center;}#mermaid-svg-hz4RfhCALhHMqogW .node.clickable{cursor:pointer;}#mermaid-svg-hz4RfhCALhHMqogW .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hz4RfhCALhHMqogW .arrowheadPath{fill:#333333;}#mermaid-svg-hz4RfhCALhHMqogW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hz4RfhCALhHMqogW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hz4RfhCALhHMqogW .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hz4RfhCALhHMqogW .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hz4RfhCALhHMqogW .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hz4RfhCALhHMqogW .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hz4RfhCALhHMqogW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hz4RfhCALhHMqogW .cluster text{fill:#333;}#mermaid-svg-hz4RfhCALhHMqogW .cluster span{color:#333;}#mermaid-svg-hz4RfhCALhHMqogW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hz4RfhCALhHMqogW .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hz4RfhCALhHMqogW rect.text{fill:none;stroke-width:0;}#mermaid-svg-hz4RfhCALhHMqogW .icon-shape,#mermaid-svg-hz4RfhCALhHMqogW .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hz4RfhCALhHMqogW .icon-shape p,#mermaid-svg-hz4RfhCALhHMqogW .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hz4RfhCALhHMqogW .icon-shape .label rect,#mermaid-svg-hz4RfhCALhHMqogW .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hz4RfhCALhHMqogW .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hz4RfhCALhHMqogW .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hz4RfhCALhHMqogW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 混合诊断
外设 RAM 奇偶校验
通信 CRC / 奇偶校验
I/O 回环自检
ADC 自检 + 共享通道
硬件诊断(安全岛)
双核锁步 + CCM
STC / PBIST 自检
Flash/RAM ECC
DCC / 晶振 / PLL 监控
VMON 电压监控
DWWD 窗口看门狗
ESM 错误信号模块
中断 / NMI
nERROR 外部引脚
外部安全监控器 / 系统安全状态
图 7:Hercules 诊断体系总览
这些硬件机制带来两个直接结果:
- 诊断覆盖率高且已知:CPU > 95%、RAM > 95%、ECC 全区域覆盖,用户无需自行验证;
- 软件负担极低:锁步、BIST、ECC 几乎零开销,Flash/RAM 可完全留给应用。
配合 TI 的安全手册、FMEDA 报告与 SafeTI 诊断库,系统级认证(ISO 26262 ASIL D、IEC 61508 SIL 3)的工作量被大幅压缩。
十五、踩坑总结
- 锁步不等于双核算力:两个 Cortex-R 核执行同一指令流,可用算力仍是单核水平,不要指望 SMP 加速。
- CCM 配置值不能随意写:非规定值会被自动回退到锁步模式,误以为"配置成功"其实没有生效。
- 运行期自检前必须备份寄存器:STC 自检会改写寄存器值,直接跑会导致现场数据丢失。
- PBIST 会占用启动时间:全 RAM 自检耗时与容量相关,需在启动时间预算内取舍(可用 PBIST 分块策略)。
- ESM 分组必须配置:默认分组下,很多故障只产生低优先级中断甚至不触发 nERROR,安全功能形同虚设。
- 看门狗窗口要匹配任务周期:窗口设得过窄会频繁误复位,过宽则失去跑飞检测意义;建议结合任务最坏执行时间计算。
- ECC 只能纠 1 位:2 位错误只会报错无法纠正,系统必须有错误响应策略(复位、降级或切换安全状态)。
- nERROR 引脚不是"装饰":外部安全监控器(如看门狗、电源监控)应把它作为独立关断路径,而不是只依赖软件读取错误标志。
结束语
Hercules 的功能安全不是某一项"黑科技",而是一套完整的工程体系:
- 理念:以"安全岛"为核心,关键单元硬件诊断、非关键区按需覆盖;
- 架构:1oo1D 双核锁步,用诊断换取等效 1oo2 的安全等级;
- 手段:CCM、STC/LBIST、PBIST、ECC、MPU、DCC、VMON、DWWD、ESM 层层设防;
- 结果:诊断覆盖率高、软件开销低,支撑 ISO 26262 ASIL D 与 IEC 61508 SIL 3 的系统认证。
理解了这些原理,再看 Hercules 的寄存器手册与安全手册,就不会觉得那些监控、错误分组与自检配置是"冗余的麻烦",而会明白它们正是"功能安全"四个字的落地方式。
参考资料:
- TMS570LC4357 数据手册 SPNS195C
- TMS570LC43x 技术参考手册 SPNU563A
- IEC 61508、ISO 26262 标准公开资料