This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM2432: Question regarding whether HwiP_disable could disable NMI watchdog interrupt

Part Number: AM2432

Hello TI team,

We use WDT8 for R5F0 core and we use it as NMI interrupt to trigger an ISR, and issue a SW reset in the ISR.  

Does the HwiP_disable function disable Watchdog's NMI interrupt? 

If HwiP_disable does disable WDT's interrupt, is there any other function we could use to disable interrupt while accessing critical section? 


Thanks,

Hong 

  • Hey Hong,

    WDT8 (RTI8) does not support a direct NMI interrupt.

    As shown in the diagram below:

    -The RTI8_INTR_WWD_0 interrupt signal is routed to R5FSS0_CORE0_INTR_IN_0

    -The RTI8_INTR_WWD_0 interrupt signal is routed to ESM0_PLS_IN_162

    Since this interrupt is "maskable" the HwiP_disable function will disable the RTI8_INTR_WWD_0 interrupt signal routed R5FSS0_CORE0_INTR_IN_0.

    Also, note that the interrupt still routes to ESM, if needed the ESM could be used to issue a high-priority interrupt. Please refer to the ESM chapter of the device TRM.

    is there any other function we could use to disable interrupt while accessing critical section? 

    Why do you want to disable interrupts during a certain access?

    Can you explain your use case here?

    Best Regards,

    Zackary Fleenor

  • Hello Zackary,

    Thanks a lot for the reply. From the syscfg when adding WDT, it lists as "trigger NMI interrupt", which makes me believe WDT is non-maskable. 


    From your explanation, it is clear that WDT is maskable interrupt. 

    For your other questions, we could discuss further during the meeting. 


    Thanks,

    Hong 

  • Hello Zackary,

    We use HwiP_disable  to guard access to critical section in our application code. We will need to revisit the use of HwiP_disable, based on this new information. 

    On the other hand, I do notice  HwiP_disable() is used in ClockP_notos.c to implement ClockP's different sleep function, where we use delay function based on ClockP module.  SDK uses HwiP_disable() in some other modules as well.  Even if we limit the use for HwiP_disable in our application code, how do we guarantee the WDT would be able to fire because the SDK still uses HwiP_disable().

    Thanks,

    Hong 

  • Hello Hong,

    I think nomenclature and context have caused some confusion here. The "Non-Maskable Interrupt" is from the standpoint/context of the IP itself, many IP's will have the option to configure masking of the interrupt within the IP itself. The RTI8_INTR_WWD_0 cannot be "masked" or discarded/ignored from the IP perspective, it will always function as an interrupt output to the rest of the SoC. This nomenclature is confusing because, in truth, the interrupt is maskable from the SoC/R5F+VIM perspective. If HwiP disable is used, then all IRQ interrupt sources are "masked" from the R5 core, and hence RTI8_INTR_WWD_0 interrupt will not execute.

    Looking forward to the meeting to discuss further details and possible options.

    Best Regards,

    Zackary Fleenor