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.

TMDS570LS31HDK: SafeTI PSCON_SELF_TEST triggers a reset to _c_int00

Part Number: TMDS570LS31HDK

I'm trying to run the following test on startup from the SafeTI library:

bool runSafeTiPsconTests() {
    bool slRet = false;
    SL_SelfTest_Result failInfoPscon = ST_FAIL;     /* PSCON Failure information. */

    /* Run PSCON self test. */ //! triggers some sort of failure
    slRet = SL_SelfTest_PSCON(PSCON_SELF_TEST, true, &failInfoPscon);
    if ( (slRet != true) || (failInfoPscon != ST_PASS) ) {
        return false;
    }

    /* Stop PBIST Execution. */
    slRet = SL_SelfTest_PBIST_StopExec();
    if (slRet != true) {
        return false;
    }

    //Run other tests here...

    /* All tests passed. */
    return true;
} // All tests pass, jumps back to __c_int00 here?

The test passes when I step through it, however, it is somehow triggering a reset back to the _c_int00 startup routine as soon as the test function finishes. I've confirmed that it's PSCON_SELF_TEST that triggers this behaviour by commenting out other tests in the function. I did some digging through the core registers and the docs but wasn't able to find any reason why this would happen. Any ideas would be appreciated!

  • Hi Robin,

    We started working on your issue and will provide an update soon.

    --

    Thanks & regards,
    Jagadish.

  • Hi Robin,

    Where exactly you are calling "runSafeTiPsconTests" this function in your code?

    Can you please attach complete project once, because i can easily trigger and debug the issue at my end?

    And in diagnostic library i could see "PSCON_SELF_TEST" functions are calling in main function, not before the main function.

    Can you also please test by calling in main function and see whether the device still getting reset or not?

    --

    Thanks & regards,
    Jagadish.

  • Hi Jagadish,

    I unfortunately can't share a complete project due to NDA concerns for my company, but I'll try to share what I can. 

    The code above is called in the main function, after the system startup in _c_int00 has completed. This is the code that's being run:

    int main(void)
    {
    /* USER CODE BEGIN (3) */
        TaskHandle_t fsmTaskHandle = nullptr;
        BaseType_t freeRtosRet = pdPASS;
        bool selfTestRet = false;
    
        /* Initialize all TI peripherals. */
        gioInit();
        sciInit();
        adcInit();
        canInit();
        crcInit();
        dmaEnableParityCheck();
    
        /* Run selfTests before doing anything. */
       selfTestRet = runSafeTiSelfTests();
       if (selfTestRet != true) {
           errorHandler();
       }
       
       //.. other irrelevant code
    }

    The PSCON test is being run in the function runSafeTiSelfTests(), which I can provide here. 

    safeTi.zip

  • Hi Robin,

    Thanks for providing details and i will go through it and will provide an update ASAP.

    --

    Thanks & regards,
    Jagadish.

  • Hi Jagadish, just bumping this thread to see if you've had any updates on this? Thank you!

  • Fixed it, the issue was that return value was of the wrong type. It should be of the SL_PSCON_FailInfo type, rather than SL_SelfTest_Result.