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

news2024/12/28 5:29:07

目录

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.coloradmin.cn/o/2098372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyUI textbox 修改字体样式

EasyUI textbox 修改字体样式 现象 后端代码如下 <input id"statusName" name"statusName" disabled"disabled" class"easyui-textbox" style"width: 80%;color: red;"/>发现直接在style中写css不起作用 问题原因 …

随即近似与随机梯度下降

一、均值计算 方法1&#xff1a;是直接将采样数据相加再除以个数&#xff0c;但这样的方法运行效率较低&#xff0c;要将所有数据收集到一起后再求平均。 方法2&#xff1a;迭代法 二、随机近似法: Robbins-Monro算法&#xff08;RM算法&#xff09; g(w)是有界且递增的 …

PDF转换器,真心推荐这几款

PDF转换器&#xff0c;在现代办公环境中&#xff0c;PDF文件格式因其高保真性和跨平台兼容性而广受欢迎。但在实际工作中&#xff0c;我们常常需要将PDF文件转换为其他格式&#xff0c;这就需要用到PDF转换器。市场上的PDF转换器种类繁多&#xff0c;功能各异&#xff0c;如何选…

SpringCloud中什么是服务雪崩,常见的解决方案有哪些?(面试版)

雪崩&#xff1a;微服务调用链路中某个服务的故障&#xff0c;导致整个链路中的所有微服务都不可用。&#xff08;其实就是一个服务的问题 导致 另一个访问它的服务出问题&#xff09; 常见的解决方案&#xff1a; 1. 请求限流&#xff1a;限制访问 微服务请求(接口) 的并发…

OBCE实验指导手册V3 (4012问题分析手动实践)

实验环境 oceanbase 企业版V3 1-1-1 实验步骤 步骤1 创建MySQL 租户 ob_mysql&#xff0c;租户资源规格大小为 1C2G CREATE RESOURCE UNIT memory_test MAX_CPU 1, MAX_MEMORY 2G, MAX_IOPS 128,MAX_DISK_SIZE 10G, MAX_SESSION_NUM 64, MIN_CPU1, MIN_MEMORY2G, MIN_IOPS128;…

C++基础【字符串】(Ac-Wing)

字符串加空格 #include <iostream> #include <cstring> #include <algorithm>using namespace std;int main() {string s;getline (cin, s);for (int i 0; i < s.size(); i )cout << s[i] << " "; }字符串插入 #include<bits/…

通过旋转、平移求取矩形顶点坐标

前言 旋转和平移是几何变换中两个基本的操作&#xff0c;它们可以用来改变图形的位置和方向 一、旋转 旋转是指将图形绕某一点&#xff08;通常是原点或中心点&#xff09;旋转一定的角度。旋转会改变图形的方向&#xff0c;但不会改变其形状或大小。 在二维空间中&#xf…

材料力学:5.2 纯弯曲时的正应力

(1)曲率与弯矩之间的关系 图5.2.10静力关系 建立如图5.2.10&#xff08;c&#xff09;所示的xyz坐标&#xff0c;设工件截面的弯矩为 M M M &#xff0c;其与外力偶矩 M e M_e Me​ 等值反向。设截面处工件的曲率半径为 ρ \rho ρ &#xff0c;该工件的弹性模量为 E E …

springsecurity快速入门

Spring Security 是一个功能强大且高度可定制的安全框架&#xff0c;主要用于保护基于 Spring 的应用程序。它提供了一整套用于身份验证、授权、加密、会话管理等功能的工具和 API&#xff0c;从而帮助开发者快速、有效地保护应用程序。 Configuration EnableWebSecurity pu…

YOLO系列和RT-DETR转onnx和tensorrt,测FPS

RT-DETR(RT-DETR: DETRs Beat YOLOs on Real-time Object Detection) 和YOLOv8等在最后加nms RT-DETR转onnx和tensorrt和 RT-DETR转onnx和tensorrt 步骤流程&#xff1a; 1. nvidia驱动&#xff0c;cuda&#xff0c;cudnn三者的版本是相互对应的&#xff0c;必须要确保版本匹…

有什么简单方便的cad编辑器?2024快速进行cad编辑的软件合集

有什么简单方便的cad编辑器&#xff1f;2024快速进行cad编辑的软件合集 在建筑、工程、设计等领域&#xff0c;CAD&#xff08;计算机辅助设计&#xff09;软件是必不可少的工具。然而&#xff0c;面对复杂的CAD文件&#xff0c;有时我们只需要简单的编辑功能&#xff0c;而不…

nginx配置代理https端口的要点

今天配置了一个nginx代理端口&#xff0c;从http转成https的过程&#xff0c;刚开始以为很复杂&#xff0c;后面发现其实就那几个关键点&#xff0c;配置好了&#xff0c;就可以直接跳转 server的监听端口 我们常规nginx监听的端口都是http协议的&#xff0c;没有特殊说明&am…

Javascript实现笛卡儿积算法

在根据商品属性计算SKU时&#xff0c;通常会对商品不同选项的不同属性进行笛卡儿积运算。 function cartesian(elements) {if (!Array.isArray(elements))throw new TypeError();var end elements.length - 1,result [];function addTo(curr, start) {var first elements[s…

电话催收的优劣势

电话催收相比其他催收方式有哪些优势和劣势&#xff1f; 电话催收是催收业务这个场景最常用的一个方式&#xff0c;因为它无可替代。唯一还有催回欠款可能的&#xff0c;就是上门催&#xff0c;那成本太高了&#xff0c;一般不会选择。 优势方面 电话催收的主要优点包括成本低…

C语言实现SHA-256算法校验文件(win32-API)

一、前言 在数字化时代&#xff0c;信息安全与数据完整性成为了不可忽视的关键议题。在众多保障数据完整性的方法中&#xff0c;散列函数扮演着至关重要的角色。SHA-256&#xff08;Secure Hash Algorithm 256&#xff09;作为一种先进的散列算法&#xff0c;以其高度的安全性…

【C++】stack、queue、priority_queue的模拟实现

目录 一、stack &#x1f31f;stack的简单介绍 &#x1f31f;stack的基本使用 &#x1f31f;stack的模拟实现 &#x1f31f;stack模拟实现的完整代码 &#x1f31f;容器适配器 二、queue &#x1f31f;queue的简单介绍 &#x1f31f;queue的基本使用 &#x1f31f;q…

springboot酒店管理系统

springboot221酒店管理系统 摘 要 时代的发展带来了巨大的生活改变&#xff0c;很多事务从传统手工管理转变为自动管理。自动管理是利用科技的发展开发的新型管理系统&#xff0c;这类管理系统可以帮助人完成基本的繁琐的反复工作。酒店是出门的必需品&#xff0c;无论出差还是…

娱乐小项目-树莓派履带小车

快速使用 1.小车上电&#xff0c;开关在电源插口旁边 2.上电之后用电脑查看局域网WIFI&#xff0c;密码是12345678&#xff0c;固定IP是192.168.50.1 3.安装VNC软件&#xff1a;20240324_树莓派履带车\工具 4.打开VNC软件 5.在这个界面下 按ctrlaltt&#xff0c;弹出终端 6.输…

内存管理篇-20 Linux虚拟内存管理

1.虚拟地址的经典布局 这里的内容比较少。只要就是内核用户空间的划分。内核空间又有自己的划分。也需要注意一下每个区域的性能。理论上线性映射是最简单的&#xff0c;所以性能最高。同时&#xff0c;注意内核空间是可以配置的&#xff0c;并不是都3:1。 2.ARM32下的内存…

使用cURL探索WebSocket连接的奥秘

更多内容访问个人网站&#xff1a;孔乙己大叔 在现代Web开发中&#xff0c;实时通信已经成为不可或缺的一部分。WebSocket协议因其能够提供低延迟、全双工的通信能力&#xff0c;而被广泛应用于各种实时应用场景中&#xff0c;如在线聊天、实时通知、游戏等。虽然WebSocket主要…