当前位置: 首页 > news >正文

汽车功能安全--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看门狗总体架构如下:

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

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

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

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

 对于Safety看门狗,则设计为另一个功能安全机制:SM[HW]:SCU:SAFETY_WATCHDOG

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

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

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

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

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

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

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

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

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

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

2. TC3xx SMU Watchdog Alarm

2.1 Watchdog Alarm处理流程

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

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

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

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

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

2.2 Recovery Timer详解

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

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

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

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

  • RTAC00\01

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

以RTAC00为例,

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

每个寄存器可以配置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,如下:

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),如下图:

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

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

3.小结

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

 

 

 

 


http://www.mrgr.cn/news/18114.html

相关文章:

  • 2024“时光Classic演唱会”宜春站启动,李健杨宗纬吴克群唱响秋日浪漫
  • 2024精选骨传导耳机无广测评:南卡、韶音还是墨觉更值得选择?
  • 产品需求过程管理重要性
  • UNION和UNION ALL的区别
  • 文件加密软件怎么选呢?五款人气超高的文件加密软件推荐给你
  • 动态法实现顺序表(C/C++)
  • js处理echarts tooltip定时轮播
  • springsecurity快速入门
  • Unity URP支持多光源阴影
  • 苹果11月推出新款M4 Mac:Mac mini设计焕新 MacBook Pro仅例行更新
  • 小哥进小区难进门难,此现状如何破局?
  • 哪种类型的蓝牙耳机更适合运动?可以闭眼入的开放式耳机推荐
  • H3C交换机native VLAN设置
  • JVM面试(二)内存区域划分
  • Android kotlin使用Netty网络框架实践(客户端、服务端)
  • 搭建核心架构网络项目(局域网)
  • 代码随想录 -- 栈与队列 -- 滑动窗口最大值
  • 20240903 每日AI必读资讯
  • vue2.0中ts中vuex模块化如何使用
  • 完美解决LBP2900打印机安装驱动提示无法识别USB及连接错误等问题(附Win11全新安装支持及卸载方案)