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.

TMS320F280039C: What to do with the slt library for ram memory testing

Part Number: TMS320F280039C


Tool/software:

Hello, I would like to ask why there is no return value when I test using the function STL_March_testRAM

How do I know if the test was successful or not?

I have also tried injecting an error using the function STL_March_injectError

and then use the STL_March_checkErrorStatus function to try to read the status of the error.

But it still returns a successful test

  • The STL_March_testRAM() function does not check for pass/fail itself. The test relies on the triggering of the ECC logic of the RAM to detect an issue, and the STL_March_checkErrorStatus() reads the RAM error status registers.

    It is expected behavior that the STL_March_injectError() function will not work with the STL_March_testRAM() function. The error injection function uses the RAM test mode to create a mismatch between the data and ECC that will be detected on a read. However, the STL_March_testRAM() will write its pattern to the RAM location (thus overwriting our injected error) before the the read can trigger the error detection logic.

    You'll notice that if you use the STL_March_testRAMCopy() function instead, you can detect the error, because the STL_March_testRAMCopy() function reads the memory location before the pattern is written.

    Whitney

  • Hi, I used the function STL_March_testRAMCopy() as you said, but after I injected the error, I used the function STL_March_injectError, and the status value returned is still successful, can you help me to see my code, is it a problem in my understanding

    Here is my code:

    errorHandle.address = 0x00008001;
    errorHandle.ramSection = MEMCFG_SECT_LS0;
    errorHandle.testMode = MEMCFG_TEST_WRITE_DATA;
    STL_March_injectError(&errorHandle);
    STL_March_testRAMCopy(STL_MARCH_PATTERN_ONE,0x00008000, 0x000003FF,0x0000E000);
    SelfTestStatus = STL_March_checkErrorStatus();
    if (SelfTestStatus != STL_MARCH_PASS)
    {
    gErrorTestFlag = 1;
    gStructErrorTestFlag.RAM_Start_Check = 6;
    }

  • What are you setting errorHandle.xorMask to? I don't see it in your code snippet.

    Whitney