AM2612: Am2612 PBIST function implementation

Part Number: AM2612
Other Parts Discussed in Thread: AM2632,

Hi TI Team,

I have referenced the AM2632 MCU+SDK example code to implement PBIST, and the implementation has been successfully validated on the AM2632 MCU. 

But when I try to implement pbist function on am2612 plateform, I met some problems.

I implemented the pbist function using mcu_plus_sdk_am261x_10_00_01_10 without the pbist example. As a result, the first step fails.

testResult = s32PbistRunTest(SDL_PBIST_INST_TOP, true);
 
I never met this problem when I work on the am2632 platform.
image.png
As you can see, the application tries to run the failure test, but it gets stuck. After waiting 13 seconds, tset fails.
Strangely,It was successful if I use the pbist example in sdk:mcu_plus_sdk_am261x_10_02_00_15: sdl_pbist_example_am261x-som_r5fss0-0_nortos_ti-arm-clang by CCS debug.
image.png

I have been init the SDL_DPL_init before the pbist function.I wonder if I have missed any Settings.

Your Assistance and guidance will be greatly appreciated.
  • int32_t Pbist_s32MainFunction(void *args)
    {
        /* Declarations of variables */
        int32_t    result = SDL_PASS;
        int32_t    testResult = 0;
    
        /* Init Dpl */
        result = Pbist_DplInit();
        if (result != SDL_PASS)
        {
            DebugP_log("Error: DPL Init Failed\r\n");
        }
    
        /* failure Insertion test */
        testResult = s32PbistRunTest(SDL_PBIST_INST_TOP, true);
    
        if (testResult == SDL_PASS)
        {
            CacheP_disable(CacheP_TYPE_L1P);
            CacheP_disable(CacheP_TYPE_L1D);
            /* PBIST test */
            testResult = s32PbistRunTest(SDL_PBIST_INST_TOP, false);
        }
    
        return testResult;
    }
    
    /* function call */
    
        s32PbistTestResult = Pbist_s32MainFunction(NULL);
        if(s32PbistTestResult == SDL_PASS)
        {
            DebugP_log("PBIST Test success\r\n");
            ptrTopCtrlRegs->HW_SPARE_RW1 |= (uint32_t)0x01U << 2U;
        }
        else
        {
            DebugP_log("PBIST Test failed\r\n");
        }

    Here is some code, please ask me if you need any additional information.

  • What is s32PbistRunTest? Is it your own version of the SDL SDL_PBIST_selfTest function? Does it use the files in the mcu_plus_sdk_am261x_10_00_01_10 SDL PBIST folder? If so, SDL for AM261x wasn't officially supported until the 10.02 release, so those older files should not be used.

    Whitney

  •  This is the mcu_plus_sdk_am263x_10_01_00_31 example code.

    Thanks for your question Whitney.
    s32PbistRunTest is just a var used to get the result of a function.I implemented this code on am2632 and it works. I ported to am2612 to verify functionality.

    It is true that there is no associated PBIST example in mcu_plus_sdk_am261x_10_00_01_10, but there is sdl lib in the source.Do I need to update the sdk version?

  • Yes, as I said, AM261x SDL wasn't officially supported until 10.02, hence why there were no examples for it. I do recommend migrating to a newer version of the SDK that has the updated SDL. We're currently working on the certification for the SDL in version 11.01.00, so if you need the certification, that's the one I recommend.

    Whitney

  • I wonder can we only update the SDL code from 10_00_01_10 to 11.01.00 but not update the others SDK file?

    Lyon

  • The SDL doesn't have any dependencies on the rest of the SDK, so only updating the SDL should be okay.

    Whitney