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.

TMS570LS122x Watchdog - Fact or Fiction?

Other Parts Discussed in Thread: HALCOGEN

Hello!

Technical Reference (TMS570LS12x/11x 16/32-Bit RISC Flash Microcontroller SPNU515B April 2015) contains "13.2.5 Digital Watchdog (DWD)" description. Halcogen don't support  DWD or DWWD configuration. Can I use DWD or DWWD on TMS570LS122x?

  • It's an interesting question, never did it for me: the fact that the Hercules family is a Dual-Core Lockstep processor, two processors working in parallel and comparing responses, I thought it was not necessary a DWD!

  • Lockstep don't protect from infinite loops, deadlocks etc
  • We actually left the watchdog off the TMS570LS20xxx and LS10xxx devices but this was a bit of a marketing problem - everyone asked where it was. From what I understand - the on chip watchdog doesn't count much when you assess for safety compared to an off-chip windowed watchdog like we have in the safety companion PMIC TPS65381. But it's one of those things that raises too many questions if you leave it off the chip.

    The lockstep mechanism is really good for certain types of problems like Vladimir mentions. For example it may detect a computation error - like an incorrect math result - that you would never detect with just a watchdog. And it provides a very fast detection time. But lockstep by itself without ECC, BIST and loopback tests, clock monitoring, etc. would not be a good solution. The device has many layers of protection that combine to make a complete solution.
  • The LS12x/11x MCUs do have an on-chip digital windowed watchdog. This is not configurable via the HALCoGen GUI. However the RTI driver generated by HALCoGen (rti.c) does support some functions that allow you to configure and enable this watchdog.

    Below are the functions declared in rti.h and defined in rti.c:

    void dwdInit(uint16 dwdPreload);
    void dwwdInit(dwwdReaction_t Reaction, uint16 dwdPreload, dwwdWindowSize_t Window_Size);
    uint32 dwwdGetCurrentDownCounter(void);
    void dwdCounterEnable(void);
    void dwdSetPreload(uint16 dwdPreload);
    void dwdReset(void);
    void dwdGenerateSysReset(void);
    boolean IsdwdKeySequenceCorrect(void);
    dwdResetStatus_t dwdGetStatus(void);
    dwdViolation_t dwdGetViolationStatus(void);
    void dwdClearFlag(void);
  • within HalCoGen examples, find an example "example_dwwd.c".

    I have a question about this feature, the value of "dwd Preload" units are in seconds or microseconds?

  • Martin,

    The dwdPreload is specified in terms of RTICLK periods. So the absolute time unit is determined by whatever RTICLK frequency you choose from the available clock source options.

    Regards, Sunil