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.

TMS320F28P659DK-Q1: MPOST failed

Expert 2160 points
Part Number: TMS320F28P659DK-Q1
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Hello TI expert,

    When enabled MPOST by change the OTP. And without HWBIST integrated in CPU1.

The MPOST test pass.

volatile uint32_t *MPOST_Result_Register = (uint32_t *)0x00000008;

The returned value of (*MPOST_Result_Register) == 0xFAABDEED

     But after together with HWBIST test integrated in CPU1.

volatile uint32_t *MPOST_Result_Register = (uint32_t *)0x00000008;

We got the returned value of (*MPOST_Result_Register) == 0xFF692902

Which is not list in C:\ti\c2000\C2000Ware_5_01_00_00\libraries\boot_rom\f28P65x\rev0\rom_sources\cpu1\F28P65x_ROM\bootROM\include\cpu1brom_pbist.h

Question: What is meaning of this returned value?

And why this happen?

  • After check the cmd file.

    It seems like the address conflict between HWBIST(: origin = 0x000000, length = 0x000020) and *MPOST_Result_Register = (uint32_t *)0x00000008;

       /* HWBIST reset context restore code must be placed at 0x0000 */

    How to handle this conflict?

  • Replying with update from our discussion.  Since HWBIST is invoked as part of the main application, we should save off the MPOST status from address 0x0008 before calling either memcpy function that preps for HWBIST, or HWBIST itself.  We can use an immediate in the code to accomplish this; like:

    Fullscreen
    1
    2
    3
    uint32_t MPOST_Status = 0;
    MPOST_Status = (*((volatile uint32_t *) (0x08)));
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Best,
    Matthew

  • Do the sequence as below

    1. Readback MPOST result,

    2.memcpy(&HwbistRunStart, &HwbistLoadStart, (size_t)&HwbistLoadSize);

    3. Run HWBIST.