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: Flash api issue

Part Number: TMS570LS3137

Hello,

I have a trouble using the F021 flash api to upgrade an aplication program via CAN interface.

#10008-D cannot find file ".\source\bl_flash.obj"
#10008-D cannot find file ".\source\Fapi_UserDefinedFunctions.obj"
#10010 errors encountered during linking; "LabOSat-02_Engine.out" not built
<a href="file:/C:/ti/ccs1031/ccs/tools/compiler/dmed/HTML/10234.html">#10234-D</a>  unresolved symbols remain
gmake: *** [all] Error 2
gmake[1]: *** [LabOSat-02_Engine.out] Error 1
unresolved symbol UpdaterCAN, first referenced in ./source/sys_main.obj

How could I solve this issue?

Thanks and regards,

Leandro

  • Hi Leandro,

    The UpdaterCAN() function is declared in bl_can.h and defined in bl_can.c.

    Can you check if those two files are still in your project?

  • Hi QJ,

    Thanks for your answer. I checked it and that is defined in bl_dcan.c. I did not included bl_dcan in my project structure.

    I could compile my code then.

    Now I could flash the MCU, however it resets himself all the time. I think it is related with the bl_link.cmd.

    * Copyright (C) 2013-2019 Texas Instruments Incorporated - http://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
    {
    
        VECTORS (X)  : origin=0x00000000 length=0x00000020	vfill = 0xffffffff
        FLASH0  (RX) : origin=0x00000020 length=0x0017FFE0	vfill = 0xffffffff
        FLASH1  (RX) : origin=0x00180000 length=0x00180000	vfill = 0xffffffff
        SRAM  (RW) : origin=0x08002000 length=0x00002000
        STACK   (RW) : origin=0x08004000 length=0x00002000
    
    
    
    
     //   VECTORS    (X)   : origin=0x00000000 length=0x00000020    vfill = 0xffffffff
     //   FLASH0     (RX)  : origin=0x00000020 length=0x00010000    vfill = 0xffffffff
     //   FLASH1     (RX)  : origin=0x00010020 length=0x07FF1FE0    vfill = 0xffffffff
     //   SRAM       (RWX)  : origin=0x08002000 length=0x00002000
      //  STACK      (RW)  : origin=0x08004000 length=0x00002000
    
    /* USER CODE BEGIN (2) */
    #if 1
        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 }
    
        ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                       length=(size(FLASH1)  >> 3)
                       ECC={algorithm=algoL2R5F021, input_range=FLASH1 }
    #endif
    /* USER CODE END */
    
    }
    
    /* USER CODE BEGIN (3) */
    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 */
    }
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Section Configuration                                                      */
    
    SECTIONS
    {
       .intvecs : {} > VECTORS
    
    
       flashAPI:
       {
         .\source\Fapi_UserDefinedFunctions.obj (.text)
         .\source\bl_flash.obj (.text)
         //--library= "c:\ti\Hercules\F021 Flash API\02.01.01\F021_API_CortexR4_BE_V3D16.lib"  (.text)
         --library="F021_API_CortexR4_BE_V3D16.lib"  (.text)
       } palign=8 load = FLASH0, run = SRAM, LOAD_START(apiLoadStart), RUN_START(apiRunStart), SIZE(apiLoadSize)
    
       .text  : {} > FLASH0 /*Initialized executable code and constants*/
       .const : {} load=FLASH0, run = SRAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)
    
    //  ; .cinit : {} > FLASH0 /*Initialized global and static variables*/
    // ;  .pinit : {} > FLASH0
    // ;  .data  : {} > SRAM
    //  ; .bss   : {} > SRAM   /*Uninitialized Global and static variables */
    //  ; .sysmem  : {} > SRAM
    
    
    //  ;  .intvecs : {} > VECTORS
    //   ; .text    : {} > FLASH0 | FLASH1
    //    ;.const   : {} > FLASH0 | FLASH1
    
        .cinit   : {} > FLASH0 | FLASH1
        .pinit   : {} > FLASH0 | FLASH1
        .bss     : {} > SRAM
        .data    : {} > SRAM
    	.sysmem  : {} > SRAM
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    
    
    /*----------------------------------------------------------------------------*/
    /* Misc                                                                       */
    
    /* USER CODE BEGIN (6) */
    /* USER CODE END */
    /*----------------------------------------------------------------------------*/

    Best regards,

    Leandro

  • Hello,

    Another clue that could be useful:

    I have discovered that each time the MCU interrupts by rti, it resets himself.

    Thanks a lot and regards,

    Leandro

  • Have you solved your issue?

  • Hello QJ,

    I am sorry about the delay.

    I solved it. I commented the line below and it compiled:

    .const : {} load=FLASH0, run = SRAM, LOAD_START(constLoadStart), RUN_START(constRunStart), SIZE(constLoadSize)

    Thanks and regards,

    Leandro

  • Nice to know you have resolved the issue.