分享

嵌入式开发:安全架构核心组件之SMU

 开心果NeedCar 2023-09-26 发布于上海
在实际的工程中,大家时常听到Alarm Alarm Alarm,什么看门狗超时触发了Alarm,PLL异常触发了Alarm......为什么需要这些Alarm?这些Alarm由谁管理?Alarm发生了,需要如何处理?带着这些困惑,本文聊聊安全框架的核心组件—SMU(Safety Management Unit)。

提示:本文基于TC375讨论

1、为什么需要Alarm?

我们知道,对于一款芯片,除了CPU(Central Processing Unit),还有大量的外设模块,他们相互配合,实现预期功能。既然是独立的硬件个体,在某些工况下,就会存在失效的可能性。为了便于管理这些失效场景,需要一个统一的大总管收集这些异常信息,之后,在对这些异常模块进行对应的处理策略。而收集异常信息的大总管就是SMU,上报异常信息的单元通过Alarm将信息通知给SMU,示意如下:

所以,设计Alarm的目的就是为监控芯片运行状态,并对故障状态进行对应的后处理。

2、Alarm由谁管理

上一小节已经给出答案,Alarm由SMU管理,SMU与其他模块地接口交互,如下所示:

SMU主要包含:SMU_CORE和SMU_STDBY,SMU的架构如下所示:

SMU_CORE侧重处理硬件监控的alarm以及Safety相关的Alarm,SMU_STDBY侧重处理clock alarm、电源alarm,以及温度相关的alarm。

3、Alarm发生时,如何处理?

参考手册,检测到Alarm以后,可以触发多种类型动作,具体描述如下:

实际工程中,触发Reset,是最常用的alarm处理行为。注意,系统的Reset类型有多种,而alarm可以产生的复位类型有Application Reset和System Reset。如果选择SMU_RESET(System Reset),则需要软件提前配置好复位类型,具体软件设置操作如下:

提示:如果选择Reset处理,推荐选择System Reset,相比于Application Reset,System Reset的更彻底,使得程序初始化更鲁棒。
对应软件处理,示意如下:

4、程序源码

参考官方示例,本文源码链接如下:
https://github.com/Kaixinguo2021/Tasking_TC375_SMU_Reset_Alarm.git

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多