Skip to main content
Bonn.Mathias
Associate
June 6, 2018
Solved

Keeping Variable at Watchdog reset

  • June 6, 2018
  • 3 replies
  • 2958 views
Posted on June 06, 2018 at 15:12

Hello ST Community,

I´m using a STMS8105x6 MCU that has an appilcation running that communicates with other MCUs via UART and I2C. I also have a IWDG running, that does sometimes a reset because of communication errors.

What I want to know is, how to save a global volatile uint32_t variable that has an important value, that should not be lost at a watchdog reset.

Saving it to the EEPROM at every change is not an option. But maybe it can be stored into a backup register or the RAM somehow. Or can I prevent it from being newly initialized at startup?!

Using STVD + Cosmic Compiler.

Thank you in advance for your help.

MaBo

    This topic has been closed for replies.
    Best answer by Bonn.Mathias
    Posted on June 06, 2018 at 16:58

    Hello,

    I found the solution in the following Document:

    http://www.st.com/content/ccc/resource/technical/document/application_note/f8/61/9a/13/2f/f1/44/fb/CD00283293.pdf/files/CD00283293.pdf/jcr:content/translations/en.CD00283293.pdf

    I hope this link is helpful to anybody with the same question.

    Best regards, MaBo

    3 replies

    Bonn.Mathias
    Bonn.MathiasAuthorBest answer
    Associate
    June 6, 2018
    Posted on June 06, 2018 at 16:58

    Hello,

    I found the solution in the following Document:

    http://www.st.com/content/ccc/resource/technical/document/application_note/f8/61/9a/13/2f/f1/44/fb/CD00283293.pdf/files/CD00283293.pdf/jcr:content/translations/en.CD00283293.pdf

    I hope this link is helpful to anybody with the same question.

    Best regards, MaBo

    Tesla DeLorean
    Guru
    June 6, 2018
    Posted on June 06, 2018 at 17:53

    A structure at the end of usable RAM is a frequent method, along with shrinking the RAM size reported to the linker so it, and the C runtime, or stack, don't use or erase this space so you can decode it when you enter your main() function.

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    henry.dick
    Associate II
    June 9, 2018
    Posted on June 09, 2018 at 22:21

    '

    how to save a global volatile uint32_t variable that has an important value, that should not be lost at a watchdog reset.'

    look in the initialization section of your compiler manual. there should be something about attributes that you can assign to variables that will prevent them from being initialized on reset. for example, iar uses '__no_init' for that. there must be something similar in cosmic.