TMS570LC4357: Jump to boot loader from application software

Part Number: TMS570LC4357

Tool/software:

Hi 

I have a number of problems with bootloader.

1. When I load the code from TI to flash the bootloader, it was able to flash the application bin file and run the application software when directed. While in the application software, I send a serial command to tell the application software to jump to bootloader. I do so by the following code:

EEP_tstBtldData stBL_Data=EEP_vRead_BL_FlashRequest();
static bool bl_flash=false;
if(stBL_Data.u16Bdld_flag==0x5A5A )
{
;
uint32_t JumpAddress = 0; //(uint32_t)APP_START_ADDRESS;
//JumpAddress = 0;
((void (*)(void))JumpAddress)();

}

Is the jump to bootloader software correct.? Bootloader starts from location 0? 

The bootloader loader software has a few printf lines. Sometimes, after the jump, nothing appears on the screen. Sometimes the bootloader menu appears. After doing a power off and on, the bootloader menu will appear.

Boot loader menu:

================== Main Menu ==========================
1. Download Application Image To the Internal Flash
2. Upload The Application Image From the Internal Flash
3. Execute The Application Code

2. When a jump occurs and the bootloader menu appears. When command "1" is entered to download the application, there is the '"C" command from mcu and the teraterm which I am using will start the ymodem transfer..

However, after sending the first 128bytes to the mcu, the mcu will stop responding. We call this a hang situation. Why did the mcu hang? When I do a power off/on, the bootloader menu will appear and the download will perform normally. Why is it that a power off/on is needed to enable proper working of the bootloader. Is it possible to have a solution whereby we can move easily between bootloader and application and back to bootloader without external power off/on?

Looking forward to your reply. The matter is urgent. Thanks. 

  • Hi LayEng,

     Please refer below FAQ, here you can find several bootloader examples:

    (14) [FAQ] TMS570LC4357: Examples and Demos available for Hercules Controllers (E.g. TMS570x, RM57x and RM46x etc) - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums

    Try to compare your code and configurations with these bootloader example codes and try to find out the root cause for the issue.

    It doesn't help then i will look into your code and will debug the issue.

    --
    Thanks & regards,
    Jagadish.

  • Dear Jagadish

    Great to hear from you and a big thank you for your continuous support. I have some questions regarding your reply.

    1. I find it hard to find the CAN bootloader demo. Is it possible for you to give me a direct link.

    2. You supported me in January regarding the uart bootloader and I have implemented your solution. It works. The way the bootloader does is after flashing, I can choose  a selection to run the loaded image by using the following code:

    JumpAddress = (uint32_t)APP_START_ADDRESS; //this location is 0x20000
    //JumpAddress = 0;
    ((void (*)(void))JumpAddress)();

    While running in the application, I want to update my application software so I need to get back to bootloader. I do it by doing this code:

    if(stBL_Data.u16Bdld_flag==0x5A5A && bl_flash==false)
    {
         bl_flash=true;
        uint32_t JumpAddress = 0;//0 is address of bootloader
       ( (void (*)(void))JumpAddress)();


       //systemREG1->SYSECR = ((uint32)0x2u << 14u);
    }

    It does go back to bootloader location because I have a bootloader menu and it is displayed. Sometimes it is not displayed.

    While in bootloader, I do a selection to download the application image using ymodem transfer. The 'C' is sent by mcu, and the first 128bytes from PC is sent but the mcu does not respond after that. So mcu appears to hang in that there is no response. If I do power off/on of the mcu, the bootloader menu will appear and the downloading will take place without error.

    Question: Why do I need to power off/on the mcu to do a proper resent. Can I use the soft reset somewhere to do it? The soft reset instruction is

    systemREG1->SYSECR = ((uint32)0x2u << 14u);

    Looking forward to your reply. Thank you

  • HL_sys_link.cmd bootloader.txt
    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    #if 0
    /* USER CODE END */
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    
    /* USER CODE BEGIN (3) */
    #endif
    
    #if 1
        VECTORS (X)  : origin=0x00000000 length=0x00000020  fill = 0xffffffff
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
        FLASH1  (RX) : origin=0x00200000 length=0x00200000 vfill = 0xffffffff
        /* Bank 7 (128kB, FEE) */
        FLASH7   (R) : origin=0xF0200000 length=0x00020000 vfill = 0xffffffff
    
        STACKS  (RW) : origin=0x08000000 length=0x00001000
        RAM     (RW) : origin=0x08002500 length=(0x0002EB00-0x2500)
    /* Bank 0 ECC */
        ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
                       length=(size(VECTORS) >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=VECTORS}
    
        ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
                       length=(size(FLASH0)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH0 }
    
    /* Bank 1 ECC */
        ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                       length=(size(FLASH1)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    
    /* Bank 7 ECC */
        ECC_FLA7 (R) : origin=0xF0100000
                       length=(size(FLASH7)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH7 }
    #endif
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    #if 1
    ECC {
        algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                       hamming_mask = R4         /* Use R4/R5 build in Mask */
                       parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                       mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
    }
    #endif
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    #if 0
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    #endif
    
    #if 1
       .intvecs    : {} palign=8 > VECTORS
       flashAPI:
       {
          .\Boot\Fapi_UserDefinedFunctions.obj (.text, .data)
          .\Boot\bl_flash.obj (.text, .data)
          --library = F021_API_CortexR4_BE_L2FMC.lib (.text, .data)
       } palign=8 load = FLASH0 |FLASH1, run = RAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text    : {} palign=8 > FLASH0 |FLASH1
       .const   : {} palign=8 load=FLASH0 |FLASH1
       .cinit   : {} palign=8 > FLASH0 | FLASH1
       .pinit   : {} palign=8 > FLASH0 | FLASH1
       .bss     : {} > RAM    /* Uninitialized global and static variables */
       .data    : {} > RAM    /* Global and static non-const variables that are explicitly initialized. */
       .sysmem  : {} > RAM    /* Memory pool (heap) for dynamic memory allocation */
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    
    #endif
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    This is the bootloader link cmd file. The HL_sys_startup.c is command to all applications running from location 0.

    Below is the application link cmd file.

    HL_sys_link.cmd_blapp.txt
    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
        VECTORS (X)  : origin=0x00020020 length=0x00000020
        FLASH0  (RX) : origin=0x00020040 length=(0x001FFFE0-0x00020020)
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00043000
        RAM     (RW) : origin=0x08043000 length=0x0003d000
    
    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    The sys startup.c file is the one you have given me before. Let me know if you me to attach.

    When you ask me to check the configuration of the other ref bootloaders and my bootloader, can you tell me which file I should compare?

    Looking forward to your reply. A big thanks in advance.

  • Hi Jagadish

    Do you have any response to my info above? Looking forward to your reply. Thank you

  • I sent 2 link cmd files. One for bootloader and one for application. I find it strange that I didn't get an email sent to my inbox for the 2 files attached so I am attaching again. Hope it doesn't mess up your inbox. Thank you.

    Bootloader cmd link file

    0564.HL_sys_link.cmd bootloader.txt
    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    #if 0
    /* USER CODE END */
        VECTORS (X)  : origin=0x00000000 length=0x00000020
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00001500
        RAM     (RW) : origin=0x08001500 length=0x0007EB00
    
    /* USER CODE BEGIN (3) */
    #endif
    
    #if 1
        VECTORS (X)  : origin=0x00000000 length=0x00000020  fill = 0xffffffff
        FLASH0  (RX) : origin=0x00000020 length=0x001FFFE0 vfill = 0xffffffff
        FLASH1  (RX) : origin=0x00200000 length=0x00200000 vfill = 0xffffffff
        /* Bank 7 (128kB, FEE) */
        FLASH7   (R) : origin=0xF0200000 length=0x00020000 vfill = 0xffffffff
    
        STACKS  (RW) : origin=0x08000000 length=0x00001000
        RAM     (RW) : origin=0x08002500 length=(0x0002EB00-0x2500)
    /* Bank 0 ECC */
        ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
                       length=(size(VECTORS) >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=VECTORS}
    
        ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
                       length=(size(FLASH0)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH0 }
    
    /* Bank 1 ECC */
        ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                       length=(size(FLASH1)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    
    /* Bank 7 ECC */
        ECC_FLA7 (R) : origin=0xF0100000
                       length=(size(FLASH7)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH7 }
    #endif
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    #if 1
    ECC {
        algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                       hamming_mask = R4         /* Use R4/R5 build in Mask */
                       parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                       mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
    }
    #endif
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    #if 0
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    #endif
    
    #if 1
       .intvecs    : {} palign=8 > VECTORS
       flashAPI:
       {
          .\Boot\Fapi_UserDefinedFunctions.obj (.text, .data)
          .\Boot\bl_flash.obj (.text, .data)
          --library = F021_API_CortexR4_BE_L2FMC.lib (.text, .data)
       } palign=8 load = FLASH0 |FLASH1, run = RAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text    : {} palign=8 > FLASH0 |FLASH1
       .const   : {} palign=8 load=FLASH0 |FLASH1
       .cinit   : {} palign=8 > FLASH0 | FLASH1
       .pinit   : {} palign=8 > FLASH0 | FLASH1
       .bss     : {} > RAM    /* Uninitialized global and static variables */
       .data    : {} > RAM    /* Global and static non-const variables that are explicitly initialized. */
       .sysmem  : {} > RAM    /* Memory pool (heap) for dynamic memory allocation */
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    
    #endif
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

    Application link cmd file. I added the .txt in order to be able to insert file easily here.

    0564.HL_sys_link.cmd_blapp.txt
    /*----------------------------------------------------------------------------*/
    /* sys_link.cmd                                                               */
    /*                                                                            */
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Linker Settings                                                            */
    
    --retain="*(.intvecs)"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /*----------------------------------------------------------------------------*/
    /* Memory Map                                                                 */
    
    MEMORY
    {
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
        VECTORS (X)  : origin=0x00020020 length=0x00000020
        FLASH0  (RX) : origin=0x00020040 length=(0x001FFFE0-0x00020020)
        FLASH1  (RX) : origin=0x00200000 length=0x00200000
        STACKS  (RW) : origin=0x08000000 length=0x00043000
        RAM     (RW) : origin=0x08043000 length=0x0003d000
    
    /* USER CODE BEGIN (3) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
        .intvecs : {} > VECTORS
        .text   align(32) : {} > FLASH0 | FLASH1
        .const  align(32) : {} > FLASH0 | FLASH1
        .cinit  align(32) : {} > FLASH0 | FLASH1
        .pinit  align(32) : {} > FLASH0 | FLASH1
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
    	
        FEE_TEXT_SECTION  : {} > FLASH0 | FLASH1
        FEE_CONST_SECTION : {} > FLASH0 | FLASH1
        FEE_DATA_SECTION  : {} > RAM
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (7) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (8) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/
    
    

  • Hi LayEng,

    1. I find it hard to find the CAN bootloader demo. Is it possible for you to give me a direct link.

    Here is the tested and working CAN bootloader example project for TMS570LC4357:

    TMS570LC4357_CAN_Bootloader_Example.zip

    Please verify this project, it had well written documents as well, please go through them.

    --
    Thanks & regards,
    Jagadish.