Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

Compiler/TMS320C6678: unresolved symbols in code calling methods from ipc, xdc and sysbios

$
0
0

Part Number:TMS320C6678

Tool/software: TI C/C++ Compiler

Hello,

I have created a new CCS 7 empty project with PDK 4.01 in which I test a sample code from a tutorial. I kept all automatic parameters. The problem is that several source files of the application call methods from ipc, xdc and sysbios which are not found at link time (but the compilation is fine, and the communication test with the DSP is fine). I guess it comes from my installation parameters or from a configuration I missed.

I tried to add several libraries from the installation folders of xdc, ipc and pdk but it just created more unresolved symbols. Do you have any idea of what I did wrong ?

I put the main part of the error and the cfg file below. In the link command you can see the folders where I tried to find the missing libraries (with -i"/home/ahonorat/ti/...").

Thanks

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

Building target: sobel-6678.out
Invoking: C6000 Linker
"/home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x" -mv6600 -g --define=SOC_C6678 --define=EVM_C6678 --define=USE_BIOS --define=DEVICE_C6678 --diag_wrap=off --display_error_number --diag_warning=225 -z -m"sobel-6678.map" -i"/home/ahonorat/ti/pdk_c667x_2_0_7/packages/ti/platform/evmc6678l/platform_lib/lib/debug/" -i"/home/ahonorat/ti/ti-cgt-c6000_8.1.3/lib/" -i"/home/ahonorat/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/lib/" -i"/home/ahonorat/ti/ipc_3_46_02_04/packages/ti/sdo/ipc/lib/ipc/instrumented" -i"/home/ahonorat/ti/ipc_3_46_02_04/packages/ti/sdo/utils/lib/utils/instrumented" -i"/home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/lib" -i"/home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include" --reread_libs --warn_sections --display_error_number --diag_wrap=off --xml_link_info="sobel-6678_linkInfo.xml" --rom_model -o "sobel-6678.out" "./generated/Core0.obj" "./generated/Core1.obj" "./generated/Core2.obj" "./generated/Core3.obj" "./generated/Core4.obj" "./generated/Core5.obj" "./generated/Core6.obj" "./generated/Core7.obj" "./src/cache.obj" "./src/communication.obj" "./src/dump.obj" "./src/fifo.obj" "./src/main.obj" "./src/memory.obj" "./src/semaphore6678.obj" "./src/sobel.obj" "./src/splitMerge.obj" "./src/utils.obj" "./src/yuvDisplay.obj" "./src/yuvRead.obj"  -llibc.a
<Linking>
warning #10247-D: creating output section ".neardata" without a SECTIONS specification
warning #10247-D: creating output section ".rodata" without a SECTIONS specification
warning #10247-D: creating output section ".bss" without a SECTIONS specification
warning #10247-D: creating output section ".text" without a SECTIONS specification
warning #10247-D: creating output section ".const" without a SECTIONS specification
warning #10247-D: creating output section ".fardata" without a SECTIONS specification
warning #10247-D: creating output section ".cinit" without a SECTIONS specification
warning #10247-D: creating output section ".stack" without a SECTIONS specification
warning #10247-D: creating output section ".far" without a SECTIONS specification
warning #10247-D: creating output section ".switch" without a SECTIONS specification
warning #10247-D: creating output section ".mySharedMem" without a SECTIONS specification
warning #10247-D: creating output section ".MSMCSRAM" without a SECTIONS specification
warning #10247-D: creating output section ".myInputVideoMem" without a SECTIONS specification
warning #10210-D: creating ".stack" section with default size of 0x400; use the -stack option to change the default size

 undefined                        first referenced       
  symbol                              in file            
 ---------                        ----------------       
 GateMP_Params_init               ./src/semaphore6678.obj
 GateMP_close                     ./src/semaphore6678.obj
 GateMP_create                    ./src/semaphore6678.obj
 GateMP_delete                    ./src/semaphore6678.obj
 GateMP_enter                     ./src/semaphore6678.obj
 GateMP_leave                     ./src/semaphore6678.obj
 GateMP_open                      ./src/semaphore6678.obj
 Ipc_start                        ./src/communication.obj
 MultiProc_self                   ./src/communication.obj
 Notify_registerEvent             ./src/communication.obj
 Notify_sendEvent                 ./src/communication.obj
 ti_sysbios_BIOS_exit__E          ./src/main.obj         
 ti_sysbios_BIOS_start__E         ./src/main.obj         
 ti_sysbios_knl_Semaphore_create  ./src/communication.obj
 ti_sysbios_knl_Semaphore_pend__E ./src/communication.obj
 ti_sysbios_knl_Semaphore_post__E ./src/communication.obj
 xdc_runtime_System_abort__E      ./src/communication.obj
 xdc_runtime_System_printf__E     ./src/dump.obj         
 xdc_runtime_Timestamp_get32__E   ./src/dump.obj         

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "sobel-6678.out" not built

>> Compilation failure
makefile:159 : la recette pour la cible « sobel-6678.out » a échouée
makefile:155 : la recette pour la cible « all » a échouée
gmake[1]: *** [sobel-6678.out] Erreur 1
gmake: *** [all] Erreur 2

**** Build Finished ****
--------------------------------------------


var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
var Memory = xdc.useModule('xdc.runtime.Memory');

/*
 *  Get the list of names that the build device supports.
 *  I.e. ["CORE0", "CORE1", "CORE2" ... ]
 */
var nameList = MultiProc.getDeviceProcNames();

/*
 *  Since this is a single-image example, we don't (at build-time) which
 *  processor we're building for.  We therefore supply 'null'
 *  as the local procName and allow IPC to set the local procId at runtime.
 */
MultiProc.setConfig(null, nameList);

/*
 *  The SysStd System provider is a good one to use for debugging
 *  but does not have the best performance. Use xdc.runtime.SysMin
 *  for better performance.
 */
var System   = xdc.useModule('xdc.runtime.System');
var SysStd   = xdc.useModule('xdc.runtime.SysStd');
System.SupportProxy = SysStd;
/* Support for %f in printf */
System.extendedFormats = "%f%$S";

/* Modules explicitly used in the application */
var MessageQ    = xdc.useModule('ti.sdo.ipc.MessageQ');
var Ipc         = xdc.useModule('ti.sdo.ipc.Ipc');
var HeapBufMP   = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');
var MultiProc   = xdc.useModule('ti.sdo.utils.MultiProc');
var Notify = xdc.useModule('ti.sdo.ipc.Notify');
var Timestamp = xdc.useModule('xdc.runtime.Timestamp');


/* BIOS/XDC modules */
var BIOS        = xdc.useModule('ti.sysbios.BIOS');
BIOS.heapSize   = 0x8000;
var Task        = xdc.useModule('ti.sysbios.knl.Task');

var tsk0 = Task.create('&tsk0_func');
tsk0.instance.name = "tsk0";

/* Synchronize all processors (this will be done in Ipc_start) */
Ipc.procSync = Ipc.ProcSync_ALL;

/* Shared Memory base address and length */
var SHAREDMEM           = 0x0C000000;
var SHAREDMEMSIZE       = 0x000FFFFC; // 1 MByte - 4 byte

/*
 *  Need to define the shared region. The IPC modules use this
 *  to make portable pointers. All processors need to add this
 *  call with their base address of the shared memory region.
 *  If the processor cannot access the memory, do not add it.
 */
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
SharedRegion.setEntryMeta(0,
    { base: SHAREDMEM,
      len:  SHAREDMEMSIZE,
      ownerProcId: 0,
      isValid: true,
      name: "DDR2 RAM",
    });

/* Create a heap */
/* Uncomment the following lines only if you are using the dynamic allocation
var HeapMemMP = xdc.useModule('ti.sdo.ipc.heaps.HeapMemMP');
SharedRegion.setEntryMeta(1,
    { base: 0x80000000,
      len:  0x10000000,
      ownerProcId: 0,
      isValid: true,
      name: "DDR3",
      createHeap: true,
    });
    */


/** SharedMemory Section */
Program.sectMap[".mySharedMem"] = "DDR3";
Program.sectMap[".MSMCSRAM"] = "MSMCSRAM";

/** Const Section DDR3*/
Program.sectMap[".myConstMem"] = "DDR3";

Program.sectMap[".myInputVideoMem"] = new Program.SectionSpec();
Program.sectMap[".myInputVideoMem"].loadSegment ="DDR3";
Program.sectMap[".myInputVideoMem"].type = "NOINIT";


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>