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.

TMS320F28377D: Problem to INIT RAM ussing debugger TRACE32

Part Number: TMS320F28377D


Good morning,

I'm using the µC TMS320F2837xD.I've been trying to load a new software using TRACE32, but the initialisation of the RAM is not working when i try to set the registers LSxINIT to 0x3F.

Normally it should set LSxINITDONE (at 0x0005_F434) to this value, but then i check the register, and it is not written. looks like if the Debug connection didn't have the right to write on this register.

I would like to add that this µC is used in 2 different architectures. in one of them the BOOT MODE is hardwired to 3 (GPIO72 to 1 and GPIO84 to 1 = Get/Flash boot), and the other one has the possibility to bypass GPIO84 to GND (setting the BOOT mode to wait state). this error has been seen before, and with the bypass we get to exit this RAM init issue

 

On the boards without bypass (BOOT MODE 3), the error is persistent, and the RAM cannot be initialized

  • Hello Carlos,

    How are you setting the LSxINIT registers to 0x3F? Are you using a driverlib function or bitfields, or through some other method? When you look at the LSxINITDONE through the registers view, are any of the done bits set or are all of them 0?

    Best regards,

    Omer Amir

  • Hello Omer,

    I'm using TRACE32 script : C:\T32\demo\c2000\flash\tms320f2837x.cmm

    The initialization goes as:

    initRAM:
    (
    &MEM_CFG_REGS=D:0x5F400
    &DxINIT=&MEM_CFG_REGS+0x12
    &DxINITDONE=&MEM_CFG_REGS+0x14
    &LSxINIT=&MEM_CFG_REGS+0x32
    &LSxINITDONE=&MEM_CFG_REGS+0x34
    &GSxINIT=&MEM_CFG_REGS+0x52
    &GSxINITDONE=&MEM_CFG_REGS+0x54

    Data.Set &DxINIT %Long 0x000F ;; RAM INIT FOR M0/M1/D0/D1 Memory
    Data.Set &LSxINIT %Long 0x003F ;; RAM INIT FOR LS0..LS5 Memory
    Data.Set &GSxINIT %Long 0xFFFF ;; RAM INIT FOR GS0..GS15 Memory

    WAIT Data.Long(&DxINITDONE)==0x000F
    WAIT Data.Long(&LSxINITDONE)==0x003F
    WAIT Data.Long(&GSxINITDONE)==0xFFFF

    RETURN
    )

    When the WAIT routine is executed, the complete register is always Zero (0x0000_0000)

  • Hello Carlos,

    The DxINIT, LSxINIT, and GSxINIT are all EALLOW protected registers, are you somehow enabling this through your emulator? Also, are you choosing when you boot up is that RAM initialization part of the boot flow that you're going through or just part of your application code? How is your device resetting to go through the boot flow (i.e. XRSn, WD, etc.)?

    Best regards,

    Omer Amir