Infineon TC297 reset 内容整理

Infineon TC297 reset 内容整理

SCU、RCU、SMU

	System Control Unit (SCU)
	Reset Control Unit (RCU)
	Safety Management Unit (SMU)

程序复位原因

	读取RCU的寄存器RSTSTAT(Reset Status Register), 根据寄存器的值确认产生Reset的原因

Infineon TC297 reset 内容整理_第1张图片
例如,我们读到了寄存器的bit3-SMU为1,SMU为1既The last reset was requested by this reset trigger。

进一步查询复位原因

需要关注的几个寄存器

	AG0-AG6	:  Alarm Group 0 Status - Alarm Group 6 Status
	AGnCFx (n=0-6, x=0-2) :  Alarm configuration

需要关注的概念

	Alarm Signals :Alarm Signals分为group0到group6共7个组,每个组的bit为31-0共32bits, 每个bit对应一个Alarm Signals。
	每个Alarm Signals的配置寄存器有0、1、2三个,既AGnCFx (n=0-6, x=0-2)中的x,一共有n组,n=0-6.
	每个Alarm Signals有对应的Alarm Action Configuration Codes,
	Code = SMU_AGCF2. SMU_AGCF1. SMU_AGCF0, n=0...6。

Infineon TC297 reset 内容整理_第2张图片
能直接引起reset的有0x5(SMU_NMI)和 0x6(SMU_RESET).

引起SMU是复位源的原因

	这众多Alarm Signals中,哪些或者哪个Signals才是引起reset的原因,首先检查AGnCFx的配置,看一看哪些Alarm Signals的code被配置为0x5或0x6的值。
	根据SMU寄存器的基地址及寄存器地址偏移,确定AGnCFx的位置,如下图

Infineon TC297 reset 内容整理_第3张图片
AG2CF2 - AG2CF1 - AG2CF0 —> 0x20000000 - 0x20000000 - 0x00000000
即Group2 的bit29对应的Alarm Signals的code 为 110,即0x6
group2的bit9对应的Alarm Signals为 SMU-Alarm: Timer time-out (Safety Mechanism: Recovery Timer 0)
AG3CF2 - AG3CF1 - AG3CF0 —> 0x001E0000 - 0x00000000 - 0x001E0000
bit20 code = 101 SCU/WDTCPU2 Alarm: CPU2 watchdog time-out
bit19 code = 101 SCU/WDTCPU1 Alarm: CPU1 watchdog time-out
bit18 code = 101 SCU/WDTCPU0 Alarm: CPU0 watchdog time-out
bit17 code = 101 SCU/WDTS Alarm: Safety Watchdog time-out
其它组的寄存器值都为0
如果程序只使用了CPU0,并且只配置了Safety WD, 那么引起复位的复位原因有Safety Watchdog time-out或Timer0 timeout。最终的原因就是因为没有及时喂狗,导致的程序复位。
至于为什么没能及时喂狗,需要针对程序继续查询。

你可能感兴趣的:(Infineon,MCU,Infineon,TC297,SCU,RCU,SMU,RESET)