系统模式管理(SMM)是英飞凌AURIX™ TC4Dx多核微控制器中至关重要的系统控制模块,它负责协调从电源上电、复位、启动、运行到掉电及待机状态的完整系统模式转换流程。在面向AUTOSAR架构的复杂汽车电子应用中,SMM与电源管理子系统(PMS)、复位单元、时钟控制单元、安全监控单元(SMU)等多个功能模块紧密协作,实现对系统状态的高效、可靠管理。该系统支持包括复位状态、RUN0/RUN1运行模式、IDLE空闲模式、SLEEP睡眠模式以及多种STANDBY待机模式在内的丰富系统状态,能够根据实际运行负载动态调整功耗,精准满足汽车电子对功能安全、实时性和能效的严苛要求。
作为符合AUTOSAR标准的车规级芯片核心基础设施,SMM在系统启动、复位响应、低功耗策略以及负载跳变管理等方面发挥着核心作用。它不仅支持冷/热复位、系统复位、应用复位在内的多级复位机制,还具备灵活的外部服务请求接口(ESRx)和复位输出配置能力,可适配多种外部器件和系统架构。此外,SMM通过负载跳变管理单元对核心电压进行前瞻性动态调节,有效抑制因电流突变引起的电压波动,确保系统在快速切换工作状态时电源网络的完整性,从而提升整个芯片在汽车动力、底盘、车身等关键控制场景中的可靠性与安全性。
在汽车电子向域控制器和区域架构演进的大背景下,AURIX™ TC4Dx系列凭借其强大的多核性能与高集成度,成为实现下一代智能电动汽车的关键硬件平台。SMM作为其系统资源与功耗管理的枢纽,不仅为汽车基础软件栈提供了坚实的底层硬件支持,也为实现功能安全(ISO 26262 ASIL-D)、信息安全以及OTA远程升级等先进特性奠定了坚实基础。通过精细化的系统状态管理与快速、可靠的模式切换能力,SMM助力AURIX™芯片在复杂的汽车电子环境中实现高性能、低功耗与高可靠性的统一。
功能介绍
2.1 模块总览
SMM模块主要负责芯片内部系统模式、上下电、启动、复位等功能的控制,其交互涉及芯片内部的电源管理子系统(PMS)、复位单元、时钟控制、安全监控单元(SMU)等关键模块。
复位系统是分层级的:LVD复位、电源域冷复位、冷PORST复位、LBIST复位、热PORST复位、系统复位和应用复位,高级别的复位会触发低级别的复位。模块组复位和模块复位是此通用规则的特例。SMM内部结构如下图所示。

如图所示,SMM与外部电源管理模块PMS紧密关联,这部分是复位的最外层,也是影响范围最大的复位类型。电源供电复位和PORST复位都属于此类别。其次是ESRx等复位引脚,以及软件内部复位请求,它们会触发SystemReset或ApplicationReset。
系统模式管理(SMM)作为AURIX™ TC4Dx微控制器的核心协调器,其内部功能架构可划分为五个各司其职又紧密协作的子模块:
- 启动单元(Start-up):系统上电或复位后的“第一推动力”,负责锁存关键硬件与软件配置信息,与PMS协同有序释放各功能模块的复位状态,并管理系统的引导模式。
- 系统模式控制单元(System Mode Control):系统的“状态调度中心”,负责管理和触发设备中各模块进入空闲、睡眠或待机等低功耗模式,实现功耗的精细化控制。
- 负载跳变管理单元(Load Jump Management):“前瞻性稳压器”,在预知的负载跳变事件发生前,主动调节内部稳压器(EVRC)的核心电压设定点以预留电压裕量,确保电源轨稳定。
- 外部接口单元(External Interface):SMM与外部世界沟通的“门户”,专门管理ESRx和PORST等关键复位引脚的双向输入输出功能。
- 复位生成单元(Reset Generation):复位系统的“决策与执行中枢”,负责评估所有复位触发源,并根据预设优先级生成不同层级的复位信号。
2.2 系统模式 System Mode
TC4x系列芯片定义了一套完整的系统模式,包括:
- 复位状态:设备支持分层式复位状态——低压检测器复位、冷上电复位、电源域冷复位、逻辑BIST复位、热上电复位、系统复位和应用复位。
- RUN0模式:所有复位信号解除后,设备进入运行状态并执行启动固件。CPU0与CPUcs活动,VDD核心域中所有可切换电源域均保持供电。
- RUN1模式:设备处于运行状态并执行用户启动软件。不需要使用的可切换电源域将被断电以降低功耗。
- 空闲模式:适用于所有处理单元(如各CPU内核),可将对应核心置于空闲状态。
- 睡眠模式:所有CPU均进入空闲模式,仅保留少数选定外设活动以实现唤醒。可通过降低SRI和SPB总线频率来进一步减少功耗。
- 待机模式:仅PMS0和/或PMS1待机域保持活动,其余所有模块及VDD核心域均停止供电,实现最低功耗。
不同的系统模式确保了设备在对应状态下以最低必需功耗运行。通过调用空闲、睡眠或待机模式,可实现功耗的阶梯式降低。
启动时,设备首先进入RUN0模式,此时CPU0和CPUcs运行,所有核心电源域激活。为降低功耗,用户可关闭非必需电源域以触发向RUN1模式的转换。随后时钟频率逐步提升,其余CPU和外设被激活。在系统上电之后,一般默认经过复位状态、RUN0模式,到达RUN1模式,然后用户软件接手系统。系统模式的管理可分为两个层次:内层是CPU模式,外层是系统模式。

2.2.1 CPU模式
CPU模式有以下两类:
- 运行模式(Run Mode):CPU时钟活动,且CPU正在执行代码。
- 空闲模式(Idle Mode):CPU代码执行停止且CPU时钟被禁用。外设继续保持活动状态。
CPU在以下情况下可进入空闲模式:
- 当CPU无活动任务需要执行时,通过设置寄存器位
PMCSRn.REQSLP = 01B发出软件空闲请求;
- 当其他CPU发出软件空闲请求;
- 当CPU执行
WAIT指令;
CPU在以下情况下可退出空闲模式:
- 发生中断或Trap事件时;
- CPU看门狗或安全看门狗定时器溢出事件触发SMU警报,进而导致CPU中断时;
- 发生应用复位、系统复位或任何更高级别的复位时;
- 其他CPU发出软件运行请求时。
下图为CPU状态切换图,其中CPU0为上电之后自动启动,其它核在上电之后处于HALT状态,需要由CPU0进行启动。

2.2.2 系统模式
系统模式包括以下三种:运行模式(Run Mode)、睡眠模式(Sleep Mode)、待机模式(Standby Mode)。
- 运行模式
至少有一个CPU不处于空闲模式,并且未请求睡眠或待机模式。
- 睡眠模式
- 进入条件:当主CPU通过设置其寄存器位
PMCSRn.REQSLP = 10B发出软件睡眠请求时。CPU代码执行停止并进入空闲状态,若外设的CLCx.EDIS位置位,则该外设保持运行。
- 退出条件:发生CPU中断、陷阱、看门狗事件或更高级别复位时。
- 待机模式
- 进入条件:
- 主CPU发出软件待机请求(
PMCSRn.REQSLP = 11B)。
- ESR1或ESR2引脚拉低。
- 发生主/次欠压事件。
- 退出条件:在选定的引脚/ESRx上检测到唤醒边沿、待机控制器发出唤醒请求、PORST引脚被拉低或VDDEXT电源上电时。
在睡眠模式下,如果外设的CLCx.EDIS是置位的,则该外设不会进入休眠模式。除此之外,睡眠状态下外设的状态由系统定义。
2.3 启动 Start-up
启动过程是设备从无电状态或复位状态过渡到正常运行状态的关键阶段,SMM与电源管理子系统(PMS)在此过程中紧密协同。
2.3.1 冷启动/热启动
启动主要分为冷启动和热启动两种场景。
冷启动发生在设备首次上电或遭遇导致核心电源失效的严重故障后。其顺序如下:
- 电源建立与LVD复位释放:所有外部电源上电,低压检测器(LVD)监控电源,电压超过阈值后,PMS依次释放对应的LVD复位信号。
- 硬件配置锁存:在LVDANA复位释放且VDDEXT供电后,关键的硬件配置引脚(HVKCFG)状态被PMS锁存到其状态寄存器中,决定设备基本工作模式。
- 冷PORST释放与内部基础设施启动:PMS的主电压监控器监测所有电源,一旦所有电源都超过其主复位阈值且PMS内部基础设施就绪,PMS释放冷PORST复位。如果使用内部EVRC稳压器,它也会在此阶段启动。
- 进入RUN0模式与执行启动固件:冷PORST释放后,设备进入RUN0模式。CPU0和CPUcs被激活,开始执行启动固件(Boot Firmware),逐步提升系统时钟频率以限制启动电流。

热启动相关机制与热复位密切相关,具体内容将在下文复位章节详细介绍。
2.3.2 启动配置
HWCFG(硬件配置引脚)是TC4x微控制器一组至关重要的专用引脚,在电路设计时可通过外部上拉/下拉决定其状态。它们在芯片启动的最初阶段被锁存,用于一次性决定系统最基础的运行模式(如是否启动内部EVRC稳压器)。HWCFG引脚在LVDANA复位释放时由PMS锁存至PMS.PADSTAT寄存器。根据STSTAT寄存器的锁存值,可决定测试模式和调试接口的选择。
2.4 复位管理 Reset
TC4xx的复位系统支持多种复位类型、丰富的触发源,并能适配不同的外部系统架构。同时,芯片内部还支持各个模块(如CPU、PPU等)的单独复位以及模块组的复位,支持用户进行不同颗粒度的系统复位配置。
2.4.1 复位总览
AURIX™ TC4xx支持灵活的复位概念,可适配开漏星型复位架构或级联复位架构。PORST和ESRx引脚可根据应用需求灵活连接并配置至电源管理IC、驱动器等外部设备。PORST支持双向复位,ESR0/2可用作输入或输出。该架构支持芯片的层级化完整复位,同时支持模块的局部选择性复位。

2.4.2 复位类型
复位分为层次化的不同类型,核心原则是:高级别的复位会触发低级别的复位。主要分为冷复位和热复位两大类。
冷复位:通常与电源故障或初始上电相关,需要进行最彻底的初始化。
- 低压检测器复位:由备用电源域的电源掉电至LVD阈值以下触发,是所有复位中的最根本状态。
- 电源域冷复位:当核心电源轨(VDD)电压失效至危及域基础设施时触发,重新初始化电源开关和域基础设施。
- 冷上电复位:关键IO和核心电源轨电压失效时触发,除部分PMS模块外所有模块复位,PORST引脚由芯片内部驱动为低以通知外部设备。
热复位:发生在电源保持稳定的情况下,旨在从逻辑错误中快速恢复,并尽可能保持数据和系统状态。
- 热上电复位:由外部电路将PORST引脚拉低而触发。除PMS、SMM、RRAM和备用RAM外所有模块复位,所有RAM内容保持不变。
- 系统复位:由软件、安全警报、看门狗、ESRx引脚等触发。复位范围与热上电复位类似,保持RAM内容,一个系统复位也会触发一个应用复位。
- 应用复位:由软件或硬件安全机制触发。实现整个应用系统的快速初始化(包括外设和处理单元),但不影响时钟系统,并且保持Flash、RRAM和RAM内容,是最快的全局单片机复位。
- 模块组复位:由配置的触发源触发,对一组可配置的模块进行同时复位,用于实现功能安全分区。
- 模块复位:由软件触发,仅初始化单个模块的内核(不复位其总线接口),是粒度最细的复位。
芯片内部有多种复位源,各复位源所能触发的复位类型请参考手册。下表为其部分内容。

此外,不同复位类型的影响范围也各不相同。具体参考手册,下面是部分内容。

2.4.3 复位状态寄存器
在芯片级复位释放后,复位状态寄存器会提供关于最后一次复位的触发源和类型的信息。
RSTSTAT:累积记录自上次清除以来发生的所有复位类型。
WRMRSTTRIG:累积记录自上次清除以来发生的所有热复位触发事件。
PMS.CLDRSTTRIG:记录自上次清除以来发生的所有冷复位触发事件。
RSTSTATH:指示自上次清除以来发生的最高级别复位类型。
如果没有手动清除,RSTSTAT和WRMRSTTRIG中的值会累积。RSTSTATH保存的是历史最高级别的复位类型。用户软件完成分析后,可通过RSTSTATCLR.CLRC位清除热复位相关寄存器,通过PMS.CLDRSTSTATCLR.CLEAR位清除冷复位相关寄存器。
若复位由SMU触发,则SMURSTSTATA和SMURSTSTATB寄存器会进一步指示是哪个警报触发了复位。模块级复位不会影响这些复位状态寄存器。
2.4.4 子模块复位
CPU及许多外设子模块可以单独复位。模块复位只能通过向模块复位寄存器RST_CTRLA.KRST和RST_CTRLB.KRST同时写入‘1’来触发。模块复位时仅模块内核被复位,其总线外设接口(BPI)不会被复位。
2.4.5 模块组复位
TC4x提供组模块复位机制,支持模块复位的模块可以归属于四个可能的模块复位组。模块组复位的触发源可在RSTTRIGCTRLA和RSTTRIGCTRLB寄存器中配置,可由ESRx引脚、SMU警报、软件请求或STMx比较匹配触发。而模块与复位组的关联是通过子模块内部的复位寄存器(如ADC中的ADC_RST_CTRLA寄存器的GRSTENx位域)进行配置的,由此组成了一个多路复位连接关系。

2.5 负载跳变管理 Load jump management
负载跳变指的是微控制器内部功耗的瞬时剧烈变化。当大量电路单元同时激活或进入休眠时,会导致芯片电流在极短时间内大幅跃变。负载跳变管理旨在预测、缓解这种瞬时电流变化对电源网络的影响,防止电源电压出现超出规范的波动,确保芯片稳定运行,这对于实现复杂的低功耗管理策略至关重要。
TC4x提供了负载跳变时序单元A和B进行管理。
- 负载跳变管理单元A:面向软件主动触发的、可预测的场景,采用“先补偿,后动作”的主动策略。在预期电流骤增的操作前,请求EVRC稳压器预先小幅提升核心电压(电压垂降),以创造电压裕量;反之则预先降低电压。整个过程由可配置的硬件定时器精确控制。
- 负载跳变管理单元B:提供更为硬件化、自动化的流程。软件发起请求并设定参数后,后续的垂降指令、等待确认、提供动作窗口、电压恢复等步骤均由硬件逻辑自动完成,简化了软件设计,可靠性更高。
代码及调试示例
本文使用的调试示例为SMM模块的复位检测和主动复位请求功能。
3.1 开发环境
在AURIX™ Development Studio Limited (ADS)工具中,可以直接导入英飞凌官方的Demo示例,本文使用到的示例为SMM_Reset_Detection_1_KIT_TC499_STD_TRB(本文使用芯片为TC4D9,但该功能与CPU型号无关)。


编译器使用的是Tasking公司的SmartCode编译器。调试使用ADS内置的WinIDEA,调试器硬件是开发板自带的miniWiggler JDS。
3.2 代码解析
该代码主要包括复位信息检测和主动复位请求两部分功能。
在detectResetSource函数中,调用子函数IfxSmmRst_evaluateReset进行复位源的检测。该函数的核心是读取一系列复位状态寄存器。
/* Reading register */
wrmRstTrigH.U = SMM_WRMRSTTRIGH.U;
wrmRstTrig.U = SMM_WRMRSTTRIG.U;
rstStatH.U = SMM_RSTSTATH.U;
rstStat.U = SMM_RSTSTAT.U;
cldRstTrig.U = PMS_CLDRSTRIG.U;
cldRstTrigL.U = PMS_CLDRSTRIGL.U;
cldRstStat.U = PMS_CLDRSTSTAT.U;
相对于上一代,TC4x的复位寄存器更加丰富。首先观察冷启动后的寄存器状态,可以看到供电复位和PORST同时发生,而LVD类型的复位为最高优先级,记录在RSTSTATH寄存器中。


随后在detectResetSource末尾进行了复位状态寄存器的清除。
/* 清除复位状态 */
SMM_RSTSTATCLR.B.CLRSMUIRF = 1u;
SMM_RSTSTATCLR.B.CLRC = 1u;
PMS_CLDRSTSTATCLR.B.CLEAR = 1u;
然后,通过triggerSwReset函数执行一次SystemReset。首先通过RSTTRIGCTRLA寄存器配置软复位类型(例如配置为1——SystemReset),然后通过SMM_SWRSTCON寄存器中的SWRSTREQ位执行复位动作。
SMM_RSTTRIGCTRLA.B.SW = rstCfgType; /* 1 System Reset */
SMM_SWRSTCON.B.SWRSTREQ = 1u;
复位后再次观察复位状态寄存器。由于之前已清除,此时仅显示SystemReset相关信息。需要注意的是,TC4x中通过复位信息无法甄别是软件请求还是SMU等硬件请求,只能获取复位类型,因此需要通过复位前进行场景记录来识别。

如果不进行复位原因的清除,观察到的复位寄存器状态将如下图所示。可以看到SMM_RSTSTAT中是累积信息,而SMM_RSTSTATH中只有最高级别的复位信息。

小结
AURIX™ TC4x的系统模式管理(SMM)模块是其实现功能安全与能效管理的核心。该模块通过分层级复位架构(从冷复位到模块组复位)实现精准的错误遏制与快速恢复,支持仅复位故障分区而保持系统其他部分运行。其创新的负载跳变管理单元通过电压预调技术确保电源完整性,有效应对多核动态功耗切换带来的挑战。
结合增强的ESRx引脚配置与灵活的低功耗模式控制,TC4x的SMM为汽车域控制器提供了ASIL-D级别的安全基础,实现了局部故障恢复与系统功能最大可用性的平衡,满足了软件定义汽车对高可靠性计算平台的核心要求。
