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.

UIA Linker Error

Other Parts Discussed in Thread: SYSBIOS

Hi,

I've looked through all related posts and they have not addressed my issue. I am trying to include UIA in my build. I am using the BIOS PSP 03_00_01_00 build system, building from command line. I've installed  uia_2_00_03_43, using bios_6_42_03_35 and have added the UIA path to my XDCPATH in my env.cmd file.

In my cfg file, I've simply added 

var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');

When I add this line, I get the following linker error in my build output:

undefined first referenced
symbol in file
--------- ----------------
ti_uia_loggers_LoggerStopMode_Instance_init__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_Module_startup__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_disable__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_enable__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_flush__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_getContents__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_getInstanceId__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_getMaxLength__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_getPriority__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_getTransferType__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_isEmpty__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_reset__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
ti_uia_loggers_LoggerStopMode_setPriority__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674

error: unresolved symbols remain
error: errors encountered during linking;

var GIO 		= xdc.useModule('ti.sysbios.io.GIO');
var Task        = xdc.useModule("ti.sysbios.knl.Task");
var BIOS        = xdc.useModule("ti.sysbios.BIOS");
var ECM         = xdc.useModule("ti.sysbios.family.c64p.EventCombiner");
var System      = xdc.useModule("xdc.runtime.System");
var SysStd      = xdc.useModule('xdc.runtime.SysStd');
var Cache       = xdc.useModule("ti.sysbios.hal.Cache");
var Hwi         = xdc.useModule("ti.sysbios.hal.Hwi");
var Semaphore   = xdc.useModule("ti.sysbios.knl.Semaphore");
var Main        = xdc.useModule('xdc.runtime.Main');
var SysStd      = xdc.useModule('xdc.runtime.SysStd');
var Assert      = xdc.useModule('xdc.runtime.Assert');
var Diags       = xdc.useModule('xdc.runtime.Diags');
var FatFS       = xdc.useModule('ti.sysbios.fatfs.FatFS');
var Memory 		= xdc.useModule('xdc.runtime.Memory')
var SysMin 		= xdc.useModule('xdc.runtime.SysMin');
var Defaults 	= xdc.useModule('xdc.runtime.Defaults');
var List        = xdc.useModule('ti.sdo.utils.List');
var Startup     = xdc.useModule("xdc.runtime.Startup");
var Queue       = xdc.useModule("ti.sysbios.knl.Queue");
var HeapMem     = xdc.useModule("ti.sysbios.heaps.HeapMem");
var Diags 		= xdc.useModule('xdc.runtime.Diags');

/////////////////////////////
/* Profiling Module Config */
/////////////////////////////
/**/
Task.common$.diags_ENTRY = Diags.RUNTIME_ON;


var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');

In terms of my cfg file, here is the module related configuration:

Any ideas what could cause this?

Thanks

Brian

  • Try adding this line to your config.

    var LoggerStopMode = xdc.useModule('ti.uia.loggers.LoggerStopMode');
  • Hi Judah,

    This gave me a different set of linker errors:


    undefined first referenced
    symbol in file
    --------- ----------------
    ti_uia_loggers_LoggerStopMode_Instance_init__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_Module_startup__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_disable__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_enable__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_flush__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_getContents__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_getInstanceId__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_getMaxLength__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_getPriority__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_getTransferType__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_isEmpty__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_reset__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674
    ti_uia_loggers_LoggerStopMode_setPriority__E obj/c6748-evm/c6xdsp/debug/sdAudioCapture_pe674.oe674

    Thanks

    Brian

  • Hi Judah,

    Sorry, the linker error was the same as the original after adding:

    var LoggerStopMode = xdc.useModule('ti.uia.loggers.LoggerStopMode'); 

    I think my problem is that the UIA path is not being added properly. I'm building from command line, so I have a makefile which sets all environment variables, including my XDCPATH. In this makefile, I have:

    # UIA
    uia_PATH = $(EXTERNAL_SW_ROOT)/uia_2_00_06_52/
    uia_INCLUDE = $(uia_PATH)/packages/

    XDCPATH = $(bios_PATH)/packages;$(xdc_PATH)/packages;$(bios_psp_PATH);$(ipc_PATH)/packages;$(uia_PATH)/packages;
    export XDCPATH

    My build system doesn't seem to recognise the uia_PATH though. If I remove this from my XDCPATH, I still get the same linker error, so for some reason, XDCtools is not finding my UIA path and packages and I can't see why.

    Brian

  • Correction.. my build setup (BIOS PSP command line) does recognise this UIA path; it will build if I add this:

    var LoggingSetup = xdc.useModule('ti.uia.examples.Examples');

    So there is some other cause of this linker error.
  • I re-installed SYS/BIOS and that got rid of the linker errors. I now have a different compilation error:

    "obj/c6748-evm/c6xdsp/debug/my_biospsp_project_configuro/package/cfg/my_biospsp_project_pe674.c", line 73: fatal error: cannot open source file "ti/uia/events/DvtTypes.h"

    I have added the UIA path to my XDCPATH and my BIOS PSP build environment does find this, as I get a xdc.PACKAGE_NOT_FOUND error when I remove the UIA path from my XDCPATH. So, in the C file generated, my_biospsp_project_pe674.c, this line:

    #include <ti/uia/events/DvtTypes.h>

    is the first include from the UIA package. This file is present in this directory, but for some reason, my build environment doesn't recognise this path here (<ti/uia/events/>).

    I even tried adding the absolute path to my PATH environment variable, but I still get the same error. 

    Any suggestions?

    Thanks

    Brian

  • Brian,

    It looks like this error is coming from the xdc.tools.configuro command. This tool uses the package path (i.e. XDCPATH) to generate the compiler include paths. Since the error message has "ti/uia/events/DvtTypes.h", which is the text entered in the source file, and not something like

    "C:/.../uia_2_00_03_43/packages/ti/uia/events/DvtTypes.h"

    it tells me that the XDCPATH does not include UIA. I think you need to look into where the XDCPATH is getting defined.

    It can be helpful to add echo commands to the make rule which runs configuro, or remove the '@' character from the command so it will be echoed to the console.

    ~Ramsey