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.

IWR6843AOP: IWR6843AOP watchdog clear issue in Watchdog_RESET_OFF mode

Part Number: IWR6843AOP

Hello,

I want to setup and use the internal watchdog (DWD) in interrupt mode due to the reported issue  MSS#41 on the IWR6843AOP errata sheet, “Issuing WARM_RESET can Cause Bootloader Failure Which Results in Failure to Load the Application From Serial Flash”.

According to the mmwave_sdk_03_05_00_04 watchdog driver document Watchdog_clear() function only clears the watchdog in Watchdog_RESET_ON reset mode.

I tried to used it in Watchdog_RESET_OFF mode, but IWR6843AOP device resets as soon as WatchdogRTI_clear() function is called, reset occurs on the below line:

 ptrHwCfg->ptrWatchdogBase->RTIWDKEY = WATCHDOG_SECOND_WDKEY;

 Same function WatchdogRTI_clear() works fine if the watchdog configured in Watchdog_RESET_ON reset mode.

 Could you please advise me how can I clear watchdog in Watchdog_RESET_OFF mode.

 Here is the watchdog configuration snippet which identical to the driver test scenario:

     Watchdog_Params     watchdogParams;

     /* Initialize the Watchdog driver */

    Watchdog_init();

     /* Initialize the Watchdog driver default parameters */

    Watchdog_Params_init(&watchdogParams);

     watchdogParams.resetMode = Watchdog_RESET_ON;

    //watchdogParams.callbackFxn = watchdogCallback;

    watchdogParams.debugStallMode = Watchdog_DEBUG_STALL_ON;

    watchdogParams.windowSize = Watchdog_WINDOW_100_PERCENT;    /* Window watchdog disable */

    watchdogParams.preloadValue = 20;                           /* texp = ((preloadValue + 1) × 2^13) / RTICLK */

    watchdogParams.socHandle = gMmwMssMCB.socHandle;

    watchdogParams.esmHandle = gMmwMssMCB.esmHandle;

     /* Open the Watchdog driver */

    watchdogHandle = Watchdog_open(0, &watchdogParams);

    if (watchdogHandle == NULL)

    {

        System_printf ("Error: Watchdog Driver Open failed\n");

        while(1);

    }

    /* Clear watchdog */

    Watchdog_clear(watchdogHandle);

 

Cheers,