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.

What's the function for hard reset from code?

I modified the sensor_profile example and added more tasks. The whole system will connect AP, send/receive some information  and enter hibernation every two minutes. After running 10+ hours, it looks like the queue is corrupt. Msg can be sent to the queue but the task waiting never receives the msg. I enable the watchdog, it works, when this scenarios happens, the watchdog resets the system. 

But when the system comes back from the watchdog reset, all the queues don't work. ( msg can be sent but no task able to receive it). A hard reset (button sw1) or power on can solve it. so the watch dog reset is different from a hard rest. I like to know what's the functions ( PRCMSOCReset(void) ?)  for the hard reset. Thanks.

  • Hi Vincent,

    Let me try to address your query in 2 parts:

    1. Regarding the issue itself

    HIBernation is equivalent to a hard reset and hence is like executing the code all over again each cycle (every 2 minutes in this case). Could you please check increasing the task stack allocated and also check for any uninitialized variable accesses in the code?

    2. Regarding the recovery mechanism

    There are certain caveats to be aware of while using the WDT. Please find the details in the section "10.4 MCU Watch Dog Controller Usage Caveats" of TRM i.e. swru367a.pdf.

    Also please note that it is "not" recommended to use the PRCMSOCReset API.

    Best regards,

    Naveen

     

  • Hi Vincent,

    I am closing the thread, if issue still exist please open a new thread and add a link to this one for reference.

    Best regards,

    Naveen

  • Hi Vincent,

    I am also facing similar kind of issue in LPDS mode, I am able to put the device into lpds and bring it back successfully, but sometimes posting semaphore activity is hanging. and sometimes strangely after coming out of LPDS mode, task is getting semaphore lock and then after device is hanging.

    I am not able to understand why device is going to hanging state, where only hard reset is working. I used WDT also but after first successful LPDS attempt WDT is not triggering.

    Could provide suggestion in debugging this issue.

  • HWREG(0x400F70B8) = 0x1;
    MAP_UtilsDelay(800000/5);
    HWREG(0x400F70B0) = 0x1;
    MAP_UtilsDelay(800000/5);
    HWREG(0x4402E16C) |= 0x2;
    MAP_UtilsDelay(800);
    HWREG(0x4402F024) &= 0xF7FFFFFF;

    PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);
    PRCMHibernateIntervalSet(330*3);
    PRCMHibernateEnter();

    You ought to these procedures once you come out of WDT reset, as recomended in TRM