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.

error: unresolved symbols remain

Other Parts Discussed in Thread: UCD3138

Hi All

I am using UCD3138 for an LLC resonant converter, and am working with CCS 5.4. I got the following erros and have no idea how to fix it. If you know, please help me to fix these errors:

**** Build of configuration Debug for project UCD3138LLCEVM_028 ****

"C:\\codecomposer5.3\\ccsv5\\utils\\bin\\gmake" -k all

(rm device_id.obj) & (perl ../../build_scripts/create_date_dot_h_CCS5.pl)

'rm' is not recognized as an internal or external command,

operable program or batch file.

'perl' is not recognized as an internal or external command,

operable program or batch file.

gmake[1]: [pre-build] Error 1 (ignored)

' '

'Building target: UCD3138LLCEVM_028.out'

'Invoking: ARM Linker'

"C:/codecomposer5.3/ccsv5/tools/compiler/arm_5.0.5/bin/armcl" -mv4 --code_state=16 --abi=tiabi -O1 -g --preproc_with_compile --preproc_with_comment --diag_warning=225 --display_error_number -z --stack_size=200 -m"C:/test1/CCSv5-untested/UCD3138LLCEVM_028/UCD3138LLCEVM_028.map" --heap_size=10 -i"C:/codecomposer5.3/ccsv5/tools/compiler/arm_5.0.5/lib" -i"C:/codecomposer5.3/ccsv5/tools/compiler/arm_5.0.5/include" --reread_libs --warn_sections --display_error_number --rom_model -o "UCD3138LLCEVM_028.out"  "./zero_out_integrity_word.obj" "./uart.obj" "./store_restore_functions.obj" "./standard_interrupt.obj" "./software_interrupt_wrapper.obj" "./scale.obj" "./pmbus_vout_sequencing_commands.obj" "./pmbus_vout_commands.obj" "./pmbus_status_commands.obj" "./pmbus_read_param_commands.obj" "./pmbus_other_commands.obj" "./pmbus_manuf_specific_commands.obj" "./pmbus_manuf_info_commands.obj" "./pmbus_handler.obj" "./pmbus_fault_commands.obj" "./pmbus_cml_commands.obj" "./pmbus.obj" "./main.obj" "./load.obj" "./interrupts.obj" "./init_watchdog.obj" "./init_pmbus.obj" "./init_loop_mux.obj" "./init_front_ends.obj" "./init_filters.obj" "./init_fault_mux.obj" "./init_dpwms.obj" "./init_current_sharing.obj" "./init_cpcc.obj" "./init_adc12.obj" "./gpio.obj" "./flash.obj" "./device_id.obj" "./cyclone_global_variables_defs.obj" "./constants.obj" "./configuration_functions.obj" "./clear_program_flash.obj" -l"C:\codecomposer5.3\ccsv5\tools\compiler\arm_5.0.5\lib\libc.a" "../cyclone.cmd" "../cyclone_headers.cmd"

<Linking>

undefined first referenced

>> Compilation failure

  symbol       in file    

--------- ----------------

$c_int00  ./load.obj     

error #10234-D: unresolved symbols remain

error #10010: errors encountered during linking; "UCD3138LLCEVM_028.out" not

   built

gmake[1]: *** [UCD3138LLCEVM_028.out] Error 1

gmake[1]: Target `main-build' not remade because of errors.

gmake: *** [all] Error 2

**** Build Finished ****

 

 

Thanks,

Mehran

  • Do I have to add any other libraries to my project? If so, which library?

     

    Thanks,

    Mehran

  • Mehran Ahmadi said:

    (rm device_id.obj) & (perl ../../build_scripts/create_date_dot_h_CCS5.pl)

    'rm' is not recognized as an internal or external command,

    operable program or batch file.

    'perl' is not recognized as an internal or external command,

    operable program or batch file.

    gmake[1]: [pre-build] Error 1 (ignored)

    These errors appear to be coming from a pre-build step. The pre-build step is not executing successfully because the commands are not recognized.

    Is this a project provided by TI or your own project? Was it migrated from an older version of CCS?

    The symbol undefined error from the linker is explained here: http://processors.wiki.ti.com/index.php/Build_Errors_in_CCS#Error:_unresolved_symbols_remain

  • Thanks for your help. Yes, we are trying to convert the code v3.3 to CCS5.4. This code is provided by TI for version 3.3.

    My problem is that I have no idea what library I have to add to get these errors fixed. I would highly appreciate if you could give me some help on that.

     

    Thanks,

    Mehran

  • This project seems to be built for -mv4 and --abi=tiabi which is a very old abi format. As such, for this to link properly, all object files and libraries should be built for TIABI format. You may be able to get this project to build for the older TI ABI format but note that moving forward, for the long term, it is best to consider porting all code to one of the newer ABI formats - either TI ARM9 ABI or EABI. I have attached a readme file below from an older version of ARM compiler tools when this change was introduced that has some background on the TIABI and ARM9ABI formats.

    8420.CGTNew.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    TMS470 C/C++ CODE GENERATION TOOLS
    Release 4.1.4 April 2006
    NOTE: The code generated by default with this release is not compatible with
    previous versions of the compiler. The convention used to label functions
    has changed to support the ARM9/ARM11 BLX instruction and linker generated
    veneers. See item 3 for details. This includes a description on how to
    achieve backwards compatibility.
    ================================================================================
    Table of Contents
    ================================================================================
    1. New Application Binary Interface
    2. New ARM Processor Support
    3. New Compiler Switches
    4. C++ Exception Support
    5. List of Available RTS Libraries
    6. New CPSR intrinsics
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    The specific linker error is about undefined symbol $c_int00. The message is saying that load.c is referencing $c_int00  but the linker cannot find a definition for it. Usually the symbol _c_int00  (with the underscore rather than $) is defined in the runtime library rts.lib.

    Did the original project have an rts.lib explicitly specified in the project?  If you have access to a build of the original project can you check which runtime library is being linked in - you should be able to check in the link map file if you have one generated by an original build).

    For your CCSv5 build, the appropriate library should be automatically built and selected since you have  -l"C:\codecomposer5.3\ccsv5\tools\compiler\arm_5.0.5\lib\libc.a" in your build options. Do you see a library build step happening in the CCS build console?

  • Hello Mehran,

    I was facing the same issue and I seem to have been able to solve it by updating to CCS5.5 which uses the ARM compiler 5.1.1. Make sure you set up your runtime support library option under the project options to <automatic>. 

    After you are set with CCS5.5 go ahead and change line 195 in the file "load.asm" to read:

    BL _c_int00

    This seems to have fixed the problem for me as I was able to successfully compile the code and load it to the UCD3138.