Khorina · 9月3日

汽车功能安全--TC3xx SMU之看门狗alarm处理

目录

  1. TC3xx WDT速览
  2. TC3xx SMU Watchdog Alarm

2.1 Watchdog Alarm处理流程

2.2 Recovery Timer详解

2.3 NMI里可以做什么?

3.小结

  1. TC3xx WDT速览

根据相关文档描述,TC3xx看门狗总体架构如下:

image.png

它内部总共实现了两类Watchdog:

  • 1个Safety Watchdog:Safety Watchdog用于保护芯片系统层级超时。
  • 每个核独有1个CPU Watchdog:内核独有CPU Watchdog,主要看管关联核的执行情况。

今天不讲看门狗的内部基本原理,主要关注发生超时它内部的行为是什么样的。

在功能安全机制上,英飞凌将内核看门狗超时、所有看门狗超时合并为一个功能安全机制:SM[HW]:SCU:ENDINIT_WATCHDOG,如下:

image.png

对于Safety看门狗,则设计为另一个功能安全机制:

SM[HW]:SCU:SAFETY_WATCHDOG

image.png

而从实际alarm输出来看,从上图虚线部分可以看到,例如CPU内部看门狗发生超时,一方面通过ALM_WDTCPUx(x=0~5)进行反映,另一方面会与每个核的对应信号、以及Safety看门狗的超时信号,进行或运算,最终合并为一个ALM_WDTALL。

这里我们也可以通过对应手册得到印证,例如TC37x共计三核,ALM8[10-12]分别表示CPU0\1\2的看门狗超时:

image.png编辑

ALM8[16]对应Safety看门狗超时,ALM8[17]则表示所有看门狗超时的或情况,如下:

image.png

既是Alarm,那这些看门狗超时的具体行为就是可以配置的,我们来看看在SMU里对应alam的默认值是什么。

根据TC37x的用户手册,ALM8的默认配置为如下图:

image.png

其中,AG8CF0、2默认值为0x1FC00,AGC8CF1默认值为0x00;

因此ALM[10-16]得到的行为配置为b101 = 5,对应行为为发送NMI给SCU,如下:

image.png

注意ALM8[17]没有进行配置行为,即NoAction。

这就很有意思了,我们都理解看门狗超时一般复位呀,为何默认触发NMI?

接下来我们就看看SMU里面管理看门狗超时alarm的处理。

2. TC3xx SMU Watchdog Alarm

2.1 Watchdog Alarm处理流程

根据文档描述,当出现没有及时喂狗的情况,虽然触发了alarm,但仍需要一段特殊流程来保证MCU行为,特别是在重启前给与软件一小段时间用于保存现场,这是非常关键的。

因此,SMU 看门狗alarm处理流程可用下图进行总结:

image.png

当WDT timeout发生时,如果采用默认配置,则直接触发NMI;同时有一个名叫Recovery Timer的计时器用于监控WDT Alarm处理的超时,一旦超过预配置的阈值(RTD)后,就会产生一个Recovery timeout的alam(对应ALM10[16-17])。

image.png

这个alam的默认配置为Reset(b110:RESET):

image.png

这个路径就很清楚了,那么我们来看看比较关键的Recovery Timer该如何配置。

2.2 Recovery Timer详解

在SMU里,Recovery Timer共有两个实例,每个实例均可配置服务不同的WDT timeout alarm。

与Recovery Timer相关的寄存器包括:

  • RTC

Recovery Timer Configuration,用于配置超时阈值、使能RT0\1,如下:

image.png

阈值常见使用默认值0x3FF,RT均打开。

  • RTAC00\01

RTAC00\01用于配置RT0的服务对象,包括CPU Watchdog Timeout、Safety Watchdog Timeout等;

以RTAC00为例,

image.png

默认值为0xA80108,即对应ALM Group GID0 = d8 ,Alarm ID ALID0 = d10 ,对应ALM8[10]CPU0 看门狗超时,

image.png

每个寄存器可以配置2个Alarm,因此RTAC00\01共计可以配置服务4个Alarm,在默认配置中,RT0主要服务 Safety WDT, CPU0\1\2 WDT

  • RTAC10\11

RTAC10\11用于配置RT1的服务对象,包括CPU Watchdog Timeout、Safety Watchdog Timeout等,与上述配置类似,RT0默认服务CPU3\4\5 WDT。

2.3 NMI里可以做什么?

配置好RT后,我们继续来看看看门狗超时的行为--NMI,全称Non-Maskable Interrupt。

它是Tricore内核Trap系统中的一个具体实现。

SMU通过内部行为配置NMI触发一个Trap事件给到SCU,再有SCU仲裁生成Trap给到对应CPU,如下:

image.png

Trap发生时,会由硬件自动生成一个Trap ID,该ID由两部组成,

  • TCN:Trap Class Number,作为Trap table的索引,由硬件根据BTV生成
  • TIN:Trap Identification Number,硬件自动加载到的数据寄存器D[15]

Trap是伴随一些特殊事件例如NMI、指令异常、内存管理异常、非法访问等错误的发生而发生,因此可以理解为TriCore对于硬件错误的进一步细化处理,所以在实际实现时,就像定义Vector Table一样,我们仍需要定义一个Trap Table,在启动代码里进行初始化,设置寄存器BTV(Base Address of Trap Vector table),如下图:

image.png

这也意味着,当Trap发生时,PC会自动跳到TrapTable,并根据TCN跳转至不同处理函数,然后我们在Trap函数里根据TIN,进行不同处理。

image.png

那根据手册描述,NMI的TCN为7,TIN为0,故我们在该函数中就可以自定义一下内容,例如保存现场到某retention ram,下一次复位后查询异常原因。

image.png

3.小结

通过上面的分析,我们将看门狗超时的Alarm处理路径完整梳理了一遍,分别涉及到SCU.WDT、SMU、SMU RT、SCU.TRAP、CPU Trap Handler;限于篇幅,Trap TCN生成逻辑、TIN获取方式留在TriCore Trap系统里具体描述吧。

作者:快乐的肌肉
文章来源:汽车MCU软件设计

推荐阅读

更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。
推荐阅读
关注数
4569
内容数
186
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息