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";