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.

TMS320F28377S: Flash wait state for flash write

Part Number: TMS320F28377S


Hi,

For configurations: XTAL= 10 MHz, PLL SYSCLK = 50 MHz

By using RWAIT = 3, Flash erase and write for FW update is working ok. But datasheet suggests below:

With RWAIT as 0, CPU is crashing. 

Please help in understanding this.

  • Hi,

    What do you mean by CPU is crashing? Is the PLL locked at 50Mhz, what are your PLL settings?

    Can you please share the fail information?

    Best Regards,

    Nirav

  • Hi,

    PLL settings for 50MHz: InitSysPll(XTAL_OSC,IMULT_10,FMULT_0,PLLCLK_BY_2); | XTAL = 10 MHz | Also verified using pin clkout

    Getting below error when:     Flash0CtrlRegs.FRDCNTL.bit.RWAIT = 0;

    No source available for "_system_post_cinit() at C:/Users/filepath......out:{3} 0x3fe493{4}"

    7625        ESTOP0  (Diassembly)

    But works ok with:     Flash0CtrlRegs.FRDCNTL.bit.RWAIT = 0x3;

    Please guide.

  • Hi,

    When do you get this error? Did you step through your code to see? Also, when you change the RWAIT, are you executing the code from Flash or RAM?

    Best Regards,

    Nirav

  • Hi,

    are you executing the code from Flash or RAM?

    .TI.ramfunc : {} LOAD = FLASHK,
    RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0, ALIGN(4)

    the above is defined in linker. We are loading from flash and run from RAM:

    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

    When do you get this error?

    during FW update. We get data serially and copy it to flash using Flash API.

    Also, when you change the RWAIT

    Before running we keep to a fixed value(0 or 0x3). i.e not changed at run time.

  • Hi,

    are you executing the code from Flash or RAM?

    .TI.ramfunc : {} LOAD = FLASHK,
    RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0, ALIGN(4)

    the above is defined in linker. We are loading from flash and run from RAM:

    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

    When do you get this error?

    during FW update. We get data serially and copy it to flash using Flash API.

    Also, when you change the RWAIT

    Before running we keep to a fixed value(0 or 0x3). i.e not changed at run time.

    One change we did was:

    -l F021_API_F2837xD_FPU32.lib

    adding Flash API library to RAM in linker. By this RWAIT=0 is working and no crash observed.

    But the flash copy was working with RWAIT=0x3 and without -l F021_API_F2837xD_FPU32.lib in linker, and Flash copy was working ok with active code section HEX file received serially.

  • Hi,

    I have forwarded this to our FW team experts, someone will respond to your query in a day or two.

    Best Regards,

    Nirav

  • RH,

    Can you attach your map file?

    Thanks and regards,
    Vamsi

  • Closing post as using Flash API library from RAM solved RWAIT=0 use.

    Thanks