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.

TMS570LS3137: TMS570LS3137

Part Number: TMS570LS3137
Other Parts Discussed in Thread: UNIFLASH

I have a board with TM570LS3137. When I try to dump code in TMS570, the erase and loading part complete successfully, but CCS doesn't stop at the breakpoints given in the code. I need to manually pause in CCS to check the state of the code. Upon pausing, the code is in abort state.

I know for sure that my code is working because the same code is working on another identical board. So I suspect there is something wrong with the hardware. When I power on the board, the nERROR LED associated with the processor is glowing. But I am unable to debug as to where the problem might be. The clock and reset associated with the processor is coming correctly (I have probed it and confirmed). 

Is my TMS570 dead or what can be the issue? 

Kindly assist.

TIA.

  • Hello TIA,

    No, the TMS570LS3137 silicon is fine. This device has a lot of safety features. When the device boots up, it does many safety related diagnostics. If a severe error is detected, it may jump to abort exception.

    Can you please check the several ESM registers for me? After pause, open the register window, copy the value of ESM status registers to me.

    If Error LED is on, the ErrPinStat should be cleared. Please clear all the ESM error by writing "1" to the bit which is set. Write 0x0A to ErrKey register to reset the error pin.
  • Hi,

    Below is the log of ESM registers taken from CCS. I tried writing "1" and 0x0A to the mentioned registers via my code. But my code is going into abort state. So my writing to registers part isn't executing in the first place. Error LED is still glowing. Any alternative way to write to the registers since code is aborting?

    521177 13
    R Esm_IflErrPinSet1 0x0000000B 0x00000000
    R Esm_IflErrPinClr1 0x0000000B 0x00000000
    R Esm_IntEnaSet1 0x0000000B 0x00000000
    R Esm_IntEnaClr1 0x0000000B 0x00000000
    R Esm_IntLvlSet1 0x0000000B 0x00000000
    R Esm_IntLvlClr1 0x0000000B 0x00000000
    R Esm_Stat1 0x0000000B 0x00000040
    R Esm_Stat2 0x0000000B 0x00000000
    R Esm_Stat3 0x0000000B 0x00000080
    R Esm_ErrPinStat 0x0000000B 0x00000000
    R Esm_IntOffstHgh 0x0000000B 0x00000000
    R Esm_IntOffstLow 0x0000000B 0x00000000
    R Esm_LtCnt 0x0000000B 0x00000000
    R Esm_LtCntPre 0x0000000B 0x00003FFF
    R Esm_ErrKey 0x0000000B 0x00000000
    R Esm_ShdwStat2 0x0000000B 0x00000000
    R Esm_IflErrPinSet4 0x0000000B 0x00000000
    R Esm_IflErrPinClr4 0x0000000B 0x00000000
    R Esm_IntEnaSet4 0x0000000B 0x00000000
    R Esm_IntEnaClr4 0x0000000B 0x00000000
    R Esm_IntLvlSet4 0x0000000B 0x00000000
    R Esm_IntLvlClr4 0x0000000B 0x00000000
    R Esm_Stat4 0x0000000B 0x00000000

    TIA (Thanks in Advance).

    Regards,
    J V.
  • Hello JV,

    1. ESM-channel 6 of Group1: FMC - correctable error: bus1 and bus2 interfaces (does not include accesses to EEPROM bank)
    2. ESM-channel 7 of Group 3: FMC - uncorrectable error: bus1 and bus2 interfaces (does not include address parity error and errors on accesses to EEPROM bank). This error causes the nERROR LED on (ErrPinStat is cleared)

    You can manually write
    1. 0x00000040 to Esm_Stat1
    2. 0x00000080 to Esm_Stat3
    3. 0x05 to ErrKey register,
  • Hi,

    val(0xFFFFF518, 0) = 0x00000040; //stat1
    val(0xFFFFF520, 0) = 0x00000080; //stat3
    val(0xFFFFF534, 0) = 0x00003FFF; //LT_CNTR_PRE
    val(0xFFFFF538, 0) = 0x05; //Err Key

    #define val(addr,reg) (*(uv32*)(addr|reg))

    I have added the above piece of code is at the beginning of my code. is this how you write to the ESM registers?

    If not, then how to write to registers "manually" ?

    Also,

    I erased my flash of processor using UniFlash and the error LED goes off. After this, when i dump a simple code which has nothing but a while(1), it is running correctly. When I pause CCS, code doesnt abort, it pauses at while(1).

    In my PCB, my TMS570 is attached to an Artix 7 FPGA via the EMIF bus of the TMS. When i dump my main code, the processor is stuck in the initialization of the EMIF related components. How do I debug if the EMIF related problem is on the TMS side or FPGA side?

    Regards,
    J V.

  • Hi JV,

    You can use those code to clear the status register 1 and 3:

          esmREG->SR1[0] = 0x00000040U;

          esmREG->SR1[2] = 0x00000080U;

          esmREG->EKR = 0x00000005;

    You can clear the status registers manually in register window:

    We need to know the code in your EMIF init which causes the problem.

  • Thank you for your support.

    I was able to clear the registers via CCS. So error LED is no more glowing. Also, it turns out that FPGA's clock receiving pin was dry solder. So when processor was attempting to initialize components attached to FPGA via EMIF bus, it wasnt receiving response. Hence, code was aborting.

    Now I have sourced clock in the FPGA from a different pin and my system is working fine.

    Regards,
    J V.