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.

CCSv4 BIOS 6 Link Error

Other Parts Discussed in Thread: SYSBIOS

CCSv4.1.2.00027

BIOS 6.21.3.21

I'm merging my SRIO driver built from the DIO lib into a MessageQ IPC project and what built stand alone with DIO doesn't link in the IPC project (I copied the DIO driver into the IPC project).

I "think" the issue is the macros used in the cslUtils.c file (its been trimmed and renamed to HwMgr_srioUtils below). the cslUtils.c file uses several macros

Hwi_enable()

Hwi_disable()

Hwi_eventMap()

Hwi_clearInterrupt()

etc

that for some reason won't link to my project.

Any suggestions?

Cheers

 

"C:/Program Files/Texas Instruments/C6000 Code Generation Tools 6.1.13/bin/cl6x" -@ccsLinker.opt -o "M2_EVM647x.out"
<Linking>

 undefined                                 first referenced                                    
  symbol                                       in file                                         
 ---------                                 ----------------                                    
 _ti_sysbios_family_c64p_Hwi_disableIER__E ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
 _ti_sysbios_family_c64p_Hwi_enableIER__E  ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
 _ti_sysbios_family_c64p_Hwi_eventMap__E   ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
 _ti_sysbios_hal_Hwi_Object__create__S     ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
 _ti_sysbios_hal_Hwi_Params__init__S       ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
 _ti_sysbios_hal_Hwi_clearInterrupt__E     ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj

error: unresolved symbols remain
error: errors encountered during linking; "M2_EVM647x.out" not built

 

  • Hi

    I modified the DIO cslUtils.c includes to use BIOS 6 in hope that the compiler was getting confused and searching BIOS5 instead of BIOS 6.

    I removed the following includes

    //#include <hwi.h>
    //#include <swi.h> 
    //#include <sem.h>
    //#include <c64.h>

    and replaced them with

    #include <ti/sysbios/knl/Swi.h>
    //#include <ti/sysbios/hal/Hwi.h>
    #in
    clude <ti/sysbios/family/c64p/Hwi.h>

    Doing so got rid of a couple more linker errors, but it still can't find these

     undefined                                     first referenced                                    
      symbol                                           in file                                         
     ---------                                     ----------------                                    
     _ti_sysbios_family_c64p_Hwi_clearInterrupt__E ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
     _ti_sysbios_family_c64p_Hwi_disableIER__E     ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
     _ti_sysbios_family_c64p_Hwi_enableIER__E      ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj
     _ti_sysbios_family_c64p_Hwi_eventMap__E       ./Common.cluster/HwMgr.module/src/HwMgr_srioUtils.obj

    Unfortunately I now get the dreaded redefined error I had in this thread.

    http://e2e.ti.com/support/embedded/f/355/p/52404/185974.aspx#185974

    Consequently, removing hwi.h was not the solution to getting rid of the error below.

    'Building target: M2_EVM647x.out'
    'Invoking: Linker'
    "C:/Program Files/Texas Instruments/C6000 Code Generation Tools 6.1.13/bin/cl6x" -@ccsLinker.opt -o "M2_EVM647x.out"
    <Linking>


    error: symbol "_ti_sysbios_family_c64p_Hwi_reconfig__F" redefined: first
       defined in
       "C:/Work/CCSv4/M2_EVM647x_configuration/Default/configPkg/package/cfg/messag
       e_single.p64P.obj"; redefined in "C:\Program Files\Texas
       Instruments\bios_6_21_03_21\packages\ti\sysbios\family\c64p\lib\whole_progra
       m_debug\ti.sysbios.family.c64p.a64P<Hwi.o64P>"


    error: symbol "_ti_sysbios_family_c64p_Hwi_restore__E" redefined: first defined
       in
       "C:/Work/CCSv4/M2_EVM647x_configuration/Default/configPkg/package/cfg/messag
       e_single.p64P.obj"; redefined in "C:\Program Files\Texas
       Instruments\bios_6_21_03_21\packages\ti\sysbios\family\c64p\lib\whole_progra
       m_debug\ti.sysbios.family.c64p.a64P<Hwi.o64P>"

  • Update

    A solution has been found!

    The .cfg was missing the Hwi module. I got it from the "Available Packages" and selected "Target Specific Support"->C64P->Hwi, right clicked and selected "use module".

    Builds fine under RTSC Build-Profile = whole_program

    Even better, the IPC MessageQ now works.

    (Thanks Piyush)

    Cheers