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.

Adding TDU to an existing CCS3.3 project

I am trying to add the TDU to an existing project and having linking errors. The target is a C6455 big endian. The code compiles but fails during linking.

Here are the erros messages:

[Linking...] "C:\Program Files\Texas Instruments\C6000 Code Generation Tools 6.1.10\bin\cl6x" -@"Debug.lkf"
<Linking>

 undefined                                                        first referenced                                                               
  symbol                                                              in file                                                                    
 ---------                                                        ----------------                                                               
 tduControl(void *, short, tduCfgCtl_t *)                         Z:\\jgilmour_2.9.0.0_DTMF\\vsdAudioCODEC\\audioCODEC\\src\\Debug\\Conversion.obj
 tduGetSizes(short *, const ecomemBuffer_t **, tduSizeConfig_t *) Z:\\jgilmour_2.9.0.0_DTMF\\vsdAudioCODEC\\audioCODEC\\src\\Debug\\Conversion.obj
 tduNew(void **, short, ecomemBuffer_t *, tduNewConfig_t *)       Z:\\jgilmour_2.9.0.0_DTMF\\vsdAudioCODEC\\audioCODEC\\src\\Debug\\Conversion.obj
 tduOpen(void *, tduConfig_t *)                                   Z:\\jgilmour_2.9.0.0_DTMF\\vsdAudioCODEC\\audioCODEC\\src\\Debug\\Conversion.obj
 tduReceiveIn(void *, void *, tduRxLocation_t)                    Z:\\jgilmour_2.9.0.0_DTMF\\vsdAudioCODEC\\audioCODEC\\src\\Debug\\Conversion.obj

error: unresolved symbols remain
error: errors encountered during linking; "./Debug/AudioFeb.out" not built

>> Compilation failure

Build Complete,
  1 Errors, 0 Warnings, 0 Remarks.

This is my project file:

; Code Composer Project File, Version 2.0 (do not modify or remove this line)

[Project Settings]
ProjectDir="Z:\jgilmour_2.9.0.0_DTMF\vsdAudioCODEC\audioCODEC\src\"
ProjectType=Executable
CPUFamily=TMS320C64XX
Tool="Compiler"
Tool="CustomBuilder"
Tool="DspBiosBuilder"
Tool="Linker"
Config="Debug"
Config="Debug_Unit_Test"
Config="Release"

[Source Files]
Source="..\..\..\mvp\CommonDSP\src\DSPBaseProtocol4DSP.cpp"
Source="..\..\..\mvp\CommonDSP\src\DspCommonCommand.cpp"
Source="..\..\..\mvp\CommonDSP\src\DspLogger.cpp"
Source="..\..\..\mvp\CommonDSP\src\DspSrioValidation.cpp"
Source="..\..\..\mvp\CommonDSP\src\DspUnitTestUtility.cpp"
Source="..\..\..\mvp\CommonDSP\src\sendOneMsg.cpp"
Source="..\..\..\mvp\CommonDSP\src\setupSrioBuffers.cpp"
Source="..\..\..\mvp\CommonDSP\src\setupTimer.c"
Source="..\..\..\mvp\CommonDSP\src\SRIO_isr.cpp"
Source="..\..\..\mvp\CommonDSP\src\SRIO_rx_isr.cpp"
Source="..\..\..\mvp\CommonDSP\src\SRIO_tx_isr.cpp"
Source="..\..\..\mvp\CommonDSP\src\TestNonSrio.c"
Source="..\..\..\mvpBase\mvpCommon\src\CRC.c"
Source="..\include\timer.h"
Source="agc.cpp"
Source="audio_main.cpp"
Source="AudioFebMain.c"
Source="Config1.tcf"
Source="Conversion.cpp"
Source="dummyFuncs.cpp"
Source="G711.cpp"
Source="g722_decode.cpp"
Source="g722_encode.cpp"
Source="int_dec.cpp"
Source="JitterBuffer.cpp"
Source="sum_all.cpp"
Source="TestSrio.c"
Source="voiceGate_Sum.cpp"
Source="vuFilt.cpp"
Source="Config1cfg.cmd"

[Generated Files]
Source="Config1cfg.s62"
Source="Config1cfg_c.c"

["Debug" Settings]
FinalBuildCmd=hex6x ./debug/AudioFeb.out -o ACE.bin -memwidth 8 -m -order L

["Debug_Unit_Test" Settings]
FinalBuildCmd=hex6x ./Debug_Unit_Test/AudioFeb.out -o ACE.bin -memwidth 8 -m -order L

["Compiler" Settings: "Debug"]
Options=-pden -pds869 -pds193 -o3 -fr"$(Proj_dir)\Debug" -i"$(Install_dir)/csl_c6455/inc" -i"$(Install_dir)/csl_c64xplus_intc/inc" -i"../include" -i"../../../vsdAudioCODEC/audioCODEC/include" -i"../../../mvp/LocalConferenceController/include" -i"../../../mvp/CommonDSP/include" -i"../../../mvp/CommonDSP/test" -i"../../../vsdVideoCODEC/videoCODEC/CxVideoCodecs/VideoCodecs" -i"../../../mvpBase/mvpCommon/include" -i"../../../mvpBase/mvpSFC/include" -i"../../../mvpBase/mvpSFC/include/private" -i"../../../ctxCommon/common/include" -i"../../../mvp/vsdVFC/include" -i"c:/Program Files/Texas Instruments/volib_C64P_1_0_1_2/packages" -d"_DEBUG" -d"__TI_64XX_DSP__" -d"BUILD_FOR_LIVE_DSP" -d"ti_targets_C64P_big_endian" -me -mt -mr0 -mv6400+ --mem_model:data=far

["Compiler" Settings: "Debug_Unit_Test"]
Options=-pden -pds869 -pds193 -o3 -fr"$(Proj_dir)\Debug_Unit_Test" -i"$(Install_dir)/csl_c6455/inc" -i"$(Install_dir)/csl_c64xplus_intc/inc" -i"../include" -i"../../../vsdAudioCODEC/audioCODEC/include" -i"../../../mvp/LocalConferenceController/include" -i"../../../mvp/CommonDSP/include" -i"../../../mvp/CommonDSP/test" -i"../../../vsdVideoCODEC/videoCODEC/CxVideoCodecs/VideoCodecs" -i"../../../mvpBase/mvpCommon/include" -i"../../../mvpBase/mvpSFC/include" -i"../../../mvpBase/mvpSFC/include/private" -i"../../../mvpBase/mvpSFC/test" -i"../../../ctxCommon/common/include" -i"../../../mvp/vsdVFC/include" -d"_DEBUG" -d"__TI_64XX_DSP__" -d"BUILD_FOR_LIVE_DSP" -d"DSP_UNIT_TEST" -me -mv6400+ --mem_model:data=far

["Compiler" Settings: "Release"]
Options=-o3 -fr"$(Proj_dir)\Release" -i"$(Install_dir)/csl_c6455/inc" -me -mv6400+

["DspBiosBuilder" Settings: "Debug"]
Options=-Dconfig.importPath="$(Install_dir)/bios_5_21/packages;"

["DspBiosBuilder" Settings: "Debug_Unit_Test"]
Options=-Dconfig.importPath="$(Install_dir)/bios_5_21/packages;"

["Linker" Settings: "Debug"]
Options=-a -c -m".\Debug\AudioFeb.map" -o".\Debug\AudioFeb.out" -w -x -i"$(Install_dir)/csl_c6455/lib" -i"$(Install_dir)/csl_c64xplus_intc/lib" -i"c:/Program Files/Texas Instruments/volib_C64P_1_0_1_2/packages" -l"csl_c6455e.lib" -l"csl_c64xplus_intce.lib" -l"ti/mas/util/c64Pe/util_a.a64Pe" -l"ti/mas/util/c64Pe/util_c.a64Pe" -l"ti/mas/tdu/c64Pe/tdu_a.a64Pe" -l"ti/mas/tdu/c64Pe/tdu_c.a64Pe"

["Linker" Settings: "Debug_Unit_Test"]
Options=-a -c -m".\Debug_Unit_Test\AudioFeb.map" -o".\Debug_Unit_Test\AudioFeb.out" -w -x -i"$(Install_dir)/csl_c6455/lib" -i"$(Install_dir)/csl_c64xplus_intc/lib" -l"csl_c6455e.lib" -l"csl_c64xplus_intce.lib"

["Linker" Settings: "Release"]
Options=-c -m".\Release\MvpDspAmcSelfTest.map" -o".\Release\MvpDspAmcSelfTest.out" -w -x -i"$(Install_dir)/csl_c6455/lib" -l"csl_c6455e.lib"

["..\..\..\mvp\CommonDSP\src\DspUnitTestUtility.cpp" Settings: "Debug"]
ExcludeFromBuild=true

["..\include\timer.h" Settings: "Debug"]
ExcludeFromBuild=true

["..\include\timer.h" Settings: "Debug_Unit_Test"]
ExcludeFromBuild=true

["..\include\timer.h" Settings: "Release"]
ExcludeFromBuild=true

["Conversion.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["g722_decode.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["g722_encode.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["int_dec.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["JitterBuffer.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["sum_all.cpp" Settings: "Debug"]
Options="Compiler" +{-mf5}

["Config1cfg.cmd" Settings: "Debug"]
LinkOrder=2

["Config1cfg.cmd" Settings: "Debug_Unit_Test"]
LinkOrder=2

["Config1cfg.cmd" Settings: "Release"]
LinkOrder=1

 Any suggestions?
  • Hi John,

    I can't see if you've added the include path for tdu.h & types.h or if you've linked the tdu library (the options didn't wrap in the Forum window).  Just to be sure -- you'll need to do both of these to start. 

    You should also add the files tdu.h and types.h to the project.

    Let me know if this helps.

    Regards,
    Charlie

  • I had already added the path and linked the library and the project contains tdu.h and types.h. What next?

    Here are the include paths for compilation and linking:

    Options=-pden -pds869 -pds193 -o3 -fr"$(Proj_dir)\Debug" -i"$(Install_dir)/csl_c6455/inc"
    -i"$(Install_dir)/csl_c64xplus_intc/inc" -i"../include" -i"../../../vsdAudioCODEC/audioCODEC/include"
    -i"../../../mvp/LocalConferenceController/include" -i"../../../mvp/CommonDSP/include"
    -i"../../../mvp/CommonDSP/test" -i"../../../vsdVideoCODEC/videoCODEC/CxVideoCodecs/VideoCodecs"
    -i"../../../mvpBase/mvpCommon/include" -i"../../../mvpBase/mvpSFC/include"
    -i"../../../mvpBase/mvpSFC/include/private" -i"../../../ctxCommon/common/include"
    -i"../../../mvp/vsdVFC/include" -i"c:/Program Files/Texas Instruments/volib_C64P_1_0_1_2/packages"
    -d"_DEBUG" -d"__TI_64XX_DSP__" -d"BUILD_FOR_LIVE_DSP" -d"ti_targets_C64P_big_endian" -me -mt -mr0
    -mv6400+ --mem_model:data=far

    Options=-a -c -m".\Debug\AudioFeb.map" -o".\Debug\AudioFeb.out" -w -x -i"$(Install_dir)/csl_c6455/lib"
    -i"$(Install_dir)/csl_c64xplus_intc/lib" -i"c:/Program Files/Texas Instruments/volib_C64P_1_0_1_2/packages"
    -l"csl_c6455e.lib" -l"csl_c64xplus_intce.lib" -l"ti/mas/util/c64Pe/util_a.a64Pe"
    -l"ti/mas/util/c64Pe/util_c.a64Pe" -l"ti/mas/tdu/c64Pe/tdu_a.a64Pe" -l"ti/mas/tdu/c64Pe/tdu_c.a64Pe"

    John

  • These paths look correct, particularly for the linker which appears to be the issue.

    When you peek, are the libraries present as follows?

    c:\Program Files\Texas Instruments\volib_C64P_1_0_1_2\packages\ti\mas\tdu\c64Pe\tdu_a.a64Pe

    c:\Program Files\Texas Instruments\volib_C64P_1_0_1_2\packages\ti\mas\tdu\c64Pe\tdu_c.a64Pe

    If so, what are their respective sizes?

     

    - Charlie

  • Yes, they are there.

    tdu_a.a64Pe is 16,254 bytes.

    tdu_c.a64Pe is 624,292 bytes

    tdu_a.a64Pe_size.txt is 3,284 bytes and tdu_c.a64Pe_size.txt  is 23,324 bytes.

  • What Codegen tools version are you using in CCS?  The libraries were built using CG tools version 7.2.2.  The linker may not recognize the library if a (much) earlier version of the Codegen tools is used.

    - Charlie

  • I am using CG 6.1.10. I am trying to use the makefile to re-compile the library, but haven't got it set up correctly yet. I seem to be missing the makefiles for all the mas components except ecu. Where can I get those so I can re-compile?

    John

  • We recently revisited this procedure and updated the documentation for an upcoming release.

    I've attached the revised TDU document.  Follow the "TDU Integration" section under "Integration" - it has been recently verified.

    I would strongly suggest installing the latest Cygwin tools (1.7.9-1) as well.

    Please let me know if you run into issues.

    Regards,
    Charlie

     

    http://e2e.ti.com/cfs-file.ashx/__key/CommunityServer-Discussions-Components-Files/355/2388.TDUAPI.chm

     

  • My problem is I don't have the makefile for the TDU (or most of the other MAS).

  • You can extract the makefile(s) from the zipped component(s) in the components directory.  For example:

    C:\Program Files\Texas Instruments\volib_C64P_1_0_1_2\components\ti_mas_tdu_obj_c64Px_coff_2_3_1_0.zip

    Regards,
    Charlie

     

     

     

  • The makefile is not in the zip file for the TDU. When I look in the ECU zip, I can see its makefile.

  • Yes, I just realized this as well.  This is also fixed in the coming release (late December time frame). 

    I will generate makefiles for the TDU and its dependent components and attach them for you. 

    Regards,
    Charlie

     

     

  • One small oversight -- you need a source delivery to build, and we don't provide the TDU in source format (hence no makefile).

    Can you rebuild your code using CG tools version 7.2.2?

    Regards,
    Charlie

     

     

  • Not at the moment. We plan to jump to CCS 5 early next year, but don't have the time right now to regression test a new tool chain. Any possibility of you building the libraries using 6.1.10?

    John

  • Hi John,

    Sorry for the delayed response.

    We don't have the resources to support builds using other CG tool versions.  You may consider building and linking with the newer tools just to verify that this truly is the problem we're facing.

    Best Regards,
    Charlie

  • I have incorporated some open source code to do the job for now. I will re-evaluate sometime early next year when we must upgrade CCS for other reasons.

  • Hi John,

    I'm sorry to hear that our solution isn't a fit for your system currently. 

    I look forward to hearing from you when you get a chance to re-evaluate.

    Best Regards,
    Charlie