cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H747xI Watchdog Timer Stop Functionality

westman
Associate

The hardware for my project is an Arduino Opta, which utilizes the STM32H747XI dual core processor. We are trying to implement a watchdog timer for our application because the OS occasionally crashes. The start and kick timer functionality works without a problem. However, we are having trouble stopping the timer. We need to stop the timer during over-the-air "OTA" updates because it is a long running process.

If I am understanding the datasheet correctly, it appears that stopping the timer is only available in debug mode. Please confirm.

If stopping the timer is not an option, how would you recommend we tackle this problem? Is it possible to do the OTA update on the second core while the timer is running along with the main application on the first? Thanks in advance for your help. I've spent a lot of time trying to solve this problem.

Regards, Mark

1 ACCEPTED SOLUTION

Accepted Solutions
TDK
Guru

You can't stop the watchdog.

To overcome the problem, use the concept of a magic word written into memory that is then read upon reset. When you want to update the firmware:

  • Write a magic word at some reserved memory address.
  • Reset the chip

On chip startup:

  • Read magic word location. If present, enter the bootloader or OTA update portion of the program.

You cannot update the firmware while that code is still being used, so you will need to stop the core during the update procedure.

If you feel a post has answered your question, please click "Accept as Solution".

View solution in original post

1 REPLY 1
TDK
Guru

You can't stop the watchdog.

To overcome the problem, use the concept of a magic word written into memory that is then read upon reset. When you want to update the firmware:

  • Write a magic word at some reserved memory address.
  • Reset the chip

On chip startup:

  • Read magic word location. If present, enter the bootloader or OTA update portion of the program.

You cannot update the firmware while that code is still being used, so you will need to stop the core during the update procedure.

If you feel a post has answered your question, please click "Accept as Solution".