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.

DM648 Compile error: symbol _edma3OsSemGive is defined multiple times:

Other Parts Discussed in Thread: CCSTUDIO

I have been programmming on DM648 EVM. It is designed to sample Audio and Video data from peripherals, and the data encoded to be sent to LAN.
 
Encoer.cfg is showed as:


xdc.loadPackage('ti.sdo.pspdrivers.pal_sys.dm648');

/* USE Vport Driver */
xdc.loadPackage('ti.sdo.pspdrivers.drivers.vport');

/* USE VportEdc Driver */
xdc.loadPackage('ti.sdo.pspdrivers.system.dm648.bios.evmDM648.video');

/* USE EDMA3 Sample App */
xdc.loadPackage('ti.sdo.edma3.drv.sample');

/* USE Audio Driver */
xdc.loadPackage('ti.sdo.pspdrivers.system.dm648.bios.evmDM648.audio');
var Settings = xdc.module('ti.sdo.pspdrivers.system.dm648.bios.evmDM648.audio.Settings');
Settings.channel = Settings.ONE_TO_ONE;

var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
osalGlobal.runtimeEnv = osalGlobal.DSPBIOS;

osalGlobal.defaultMemSegId = "DDR2";
xdc.useModule('ti.sdo.ce.Settings').checked = false;
var aacEnc = xdc.useModule('xd.audenc1_aac.AUDENC1');
var h264Enc = xdc.useModule('xd.codecs.h264enc.ce.H264ENC');

h264Enc.alg.codeSection = "DDR2"
h264Enc.alg.fastCodeSection = "L1PRAM"
h264Enc.alg.dataSection = "DDR2"
h264Enc.alg.fastDataSection="IRAM"

var Engine = xdc.useModule('ti.sdo.ce.Engine');
var encode = Engine.create("encode_aac_h264", [
    {name: "videnc",   mod: h264Enc, groupId:0, local:true },
    {name: "audenc",   mod: aacEnc,  groupId:0, local:true },
]);

xdc.includeFile('dskt2_dman3.cfg'); 


but when the program includes the vicp lib, the compile error following occurs:

 

>>  error: symbol _edma3OsSemGive is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

>>   error: symbol _edma3OsSemCreate is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

>>   error: symbol _edma3OsProtectExit is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

>>   error: symbol _edma3OsSemDelete is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

>>   error: symbol _edma3OsProtectEntry is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

>>   error: symbol _edma3OsSemTake is defined multiple times:
            bios_edma3_drv_sample_cs.obj
            (C:\dvsdk_1_11_00_00_DM648\edma3_lld_1_05_00\packages\ti\sdo\edma3\drv\sample\lib\dm648\Debug\edma3_drv_bios_sample.lib) and

vicp_edma3_support.obj (D:\\CCStudio_v3.3\\c64plus\\vicplib\\lib\\DM648\\dmcsl648_bios.lib)

when I delete the audio device in Encoder.tcf file, the program can be compiled successfully.

Encoder.tcf is following:
...
//var udevCodec = bios.UDEV.create("udevCodec");
//udevCodec.fxnTable = prog.extern("AUDIO_AIC33_FXNS");
//udevCodec.initFxn = prog.extern("AUDIO_AIC33_init1");
//udevCodec.fxnTableType = "IOM_Fxns";
//udevCodec.params = null;
//udevCodec.deviceId = 0;
//udevCodec.deviceGlobalDataPtr = null;
...

I use dvsdk_1_11_00_00_DM648, CCStudio_v3.3, bios_5_31_08, vicplib-3.2 tools.

 

  • Hello,

    There must be a file vicp_edma3_support.c located at test\src . Open this file, look for the implementation of edma3OsSemGive() and remove it as it is already included in the edma3_drv_bios_sample.lib After that, add this file to your project or make file. This file should now override the one in dmcsl648_bios.lib during the linking process. Also since now you removed edma3OsSemGive() it should not conflict with edma3_drv_bios_sample.lib .

    regards,

    Victor