Trap System解读
1.问题引入
正如图 1.1和图 1.2所示,SBC的INT引脚是连接至与TC3xx的ESR1引脚,用于触发NMI中断,那么TC3xx的NMI中断怎么触发呢?
图 1.1 中断引脚描述
图 1.2 开发板原理图
2.问题分析
2.1什么是NMI
NMI(Non Maskable Interrupt) ,不可屏蔽中断,产生这个中断的时候,表示系统发生了致命的错误。
2.2NMI触发机制
2.2.1SBC中断
中断默认都是开启的,都是不能失能的,引起事件如下:
- 状态机事件
- 状态切换不成功,例如因Vuc电流超过指定阈值导致切换Sleep失败
- 成功退出SLEEP状态,进入WAKE状态 - 看门狗喂狗失败,前提错误计数阈值大于2,且当前错误计数没超过错误计数阈值
- 错误引脚监控,SYSPCFG1配置使能和允许恢复时间,在恢复时间内,会请求中断
图 2.1 错误引脚说明 - 监控block,主要是输出电源过压欠压过温故障,部分示意图如图 1.4所示
- Vpre欠压
- Vuc过温警告
- Vcom过压、欠压、过温警告、过温关闭、短路
- Vref欠压、过温警告、过载、短路
- Vtracker1/2过压、欠压、过温警告、短路
- Vstandby过载
- Bandgap监测:两个Bandgap之间的偏差大于4%
图 2.2 中断示意图
- Spi错误
- ABIST自检完成
- 保护配置下双bit错误
2.2.2TC3XX中断
NMI中断属于Trap的class 7,Tricore有自己的Trap Generation,以TC3XX为例,在参考手册的9.2章节有详细描述,注意,复位后会向所有CPU发送一次Trap。
从图 1.5可以看出:
-TRAP触发源有两个,一个是主动设置TRAPSET寄存器,一个是Trap Trigger,Trap Trigger可能是ESRx引脚的跳变,或者是Safety Alarm
- Trap状态可以在status寄存器体现,可通过写TRAPCLR寄存器清除状态位
- 需要使能TRAPDIS.CPU,以及有TRAP触发事件,才会通知到CPU
- 图 2.3 CPU Trap框图
3.解决问题
3.1TC3XX NMI实现
正如章节2所说,Non-Maskab