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的原因
例如,我們讀到了寄存器的bit3-SMU為1,SMU為1既The last reset was requested by this reset trigger。
進一步查詢復位原因
需要關注的幾個寄存器
AG0-AG6 : Alarm Group 0 Status - Alarm Group 6 StatusAGnCFx (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_AG<n>CF2. SMU_AG<n>CF1. SMU_AG<n>CF0, n=0...6。
能直接引起reset的有0x5(SMU_NMI)和 0x6(SMU_RESET).
引起SMU是復位源的原因
這眾多Alarm Signals中,哪些或者哪個Signals才是引起reset的原因,首先檢查AGnCFx的配置,看一看哪些Alarm Signals的code被配置為0x5或0x6的值。根據SMU寄存器的基地址及寄存器地址偏移,確定AGnCFx的位置,如下圖
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 TC297 reset 内容整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年终总结--不忘初心
- 下一篇: C语言 输入一行字符,统计其中有多少个单