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.

CCS/TMS570LS3137: CAN Bus Bootloader for TMS570LS31x. Bootloader don't sent COMMAND_ACK

Part Number: TMS570LS3137

Tool/software: Code Composer Studio

- I upload firmware on tms570ls3137 through "CAN Bus Bootloader". Boot process goes till PC-Side Application sent CAN_COMMAND_RESET and don't get CAN_COMMAND_ACK(0x5A6).
It looks like Flash API rewrite - bootloader section and bootloader can't sent ACK comand.
Why it happening? May be problem in something else? What are the reasons?

- And why should I set start address (VECTORS (X) : origin=0x00010020) for linker when I buid firmware project?
Because in the end I get binarry file what don't contain any information about addresses. And PC-Side Application know address where to programm image. Isn't it?

  • Hello,

    After PC sends CAN_COMMAND_RESET, the bootloader will set RESET1 or clear RESET0 in SYSECR register, then system reset will occur. If the application is programmed correctly, the code will jump to application.

    What happens if you press the nRST manually or power cycle the board manually? Is the code switch to application?

  • And why should I set start address (VECTORS (X) : origin=0x00010020) for linker when I buid firmware project?

    QJ> Yes, VECTORS (X) : origin=0x00010020 should be used for your application. Otherwise, you will get a wrong address in VIM table.

  • FSR register indicate Synchronous Parity/ECC Error in address 0x08000018 in RAM

    This is how the memory looks at this address:

    Why is this error happening?

  • Bootloader will set RESET1 in SYSECR register, reset occur. And anyway - Synchronous Parity/ECC Error in address 0x08000018. 

  • You can add a breakpoint at "systemREG1->SYSECR = (0x10) << 14;" to check why the bootloader doesn't send ACK to PC.

    Can you do another test to make sure your application works?

    1. program application to 0x10020 using CCS. It's better to toggle a LED in your application for testing purpose.

    2. Modify the bootloader (below) and program it to 0x00 using CCS

    fnRetValue = CheckForceUpdate();
    fnRetValue = 0;                      ---- add this instruction in main() to force jumping 

    if ( !fnRetValue )
    {

  • Bootloader will set RESET1 in SYSECR register, reset occur. And anyway - Synchronous Parity/ECC Error in address 0x08000018. 

    The code has jumped to the application, this error is caused by your application. It appears as though the setup is causing a read from the RAM location 0x08000018 without having first initialized it, and after ECC checking on RAM accesses is enabled.