• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Embedded Software » Multimedia Software Codecs » Multimedia Software Codecs forum » XDCTools 'xs xdc.tools.configuro' Advanced LPM feature not available error.
Share
Multimedia Software Codecs
  • Forum
Options
  • Subscribe via RSS

Forums

XDCTools 'xs xdc.tools.configuro' Advanced LPM feature not available error.

This question is not answered
Donald Poole
Posted by Donald Poole
on Jul 25 2012 23:52 PM
Prodigy140 points

Hello All,

I'm new at DSP codec & codec server development and I'm trying create a codec server for the OMAP3530/DM3730 c64+ DSP to remotely use from my  ARM Qt video app.  I was able to successfully create my codec server using the Genserver Wizard (xs ti.sdo.ce.wizards.genserver), but now when I try to statically configure my ARM app with the using the xs xdc.tools.configuro command, I get this error:

Error: Advanced LPM features are not available on this device. Contact your TI representative for additional details.

This is my complete build output:

$ XDCPATH=".;/home/donny3000/workspace/ti/dsp-servers;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-xdctools-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/xdoc;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-framework-components-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-xdais-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codecs-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-linuxutils-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-dmai-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-local-power-manager-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-edma3lld-tree/packages;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-dsplink-tree;/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-dspbios-tree/packages" /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-xdctools-tree/xs xdc.tools.configuro -b ./config.bld dm3730_dsp_test.cfg
making package.mak (because of package.bld) ...
generating interfaces for package dm3730_dsp_test (because package/package.xdc.inc is older than package.xdc) ...
configuring dm3730_dsp_test.x64P from package/cfg/dm3730_dsp_test_p64P.cfg ...
Info: Configuring engine named 'bin/cs' from the info file for DSP server 'bin/cs.x64P',
located in package 'swri.tnc.servers.cs':
Target app will look for the DSP server image 'cs.x64P' in its current directory.
Adding codec 'aachedec' (ti.sdo.codecs.aachedec.ce.AACHEDEC), scratch groupId=2
Adding codec 'i2p' (ti.sdo.codecs.deinterlacer.ce.I2P), scratch groupId=2
Adding codec 'g711dec' (ti.sdo.codecs.g711dec.ce.G711DEC), scratch groupId=2
Adding codec 'g711enc' (ti.sdo.codecs.g711enc.ce.G711ENC), scratch groupId=2
Adding codec 'h264dec' (ti.sdo.codecs.h264dec.ce.H264DEC), scratch groupId=0
Adding codec 'h264enc' (ti.sdo.codecs.h264enc.ce.H264ENC), scratch groupId=0
Adding codec 'jpegdec' (ti.sdo.codecs.jpegdec.ce.JPEGDEC), scratch groupId=1
Adding codec 'jpegenc' (ti.sdo.codecs.jpegenc.ce.JPEGENC), scratch groupId=1
Adding codec 'mpeg2dec' (ti.sdo.codecs.mpeg2dec.ce.MPEG2DEC), scratch groupId=0
Adding codec 'mpeg4dec' (ti.sdo.codecs.mpeg4dec.ce.MPEG4DEC), scratch groupId=0
Adding codec 'mpeg4enc' (ti.sdo.codecs.mpeg4enc.ce.MPEG4ENC), scratch groupId=0
Info: Reading DSP memory map from the info file for DSP server 'bin/cs.x64P',
located in package 'swri.tnc.servers.cs':
js: "/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-local-power-manager-tree/packages/ti/bios/power/package.xs", line 69: Error: Advanced LPM features are not available on this device. Contact your TI representative for additional details.
gmake: *** [package/cfg/dm3730_dsp_test_p64P.xdl] Error 1
js: "/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-xdctools-tree/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.1856.dm3730_dsp_test.cfg

I've been trying to debug this with no resolve.  Has anyone come across this before or know how to resolve this?

I'm currently using the following version of the TI DSP Tools

TI Bios Utils 1.02.02
TI Code Generation Tools 6x 1.6.1.17
TI Codec Engine 2.26.02.11
TI Codecs OMAP3530
TI DMAI 1.2.10.00.01
TI DSP BIOS 5.41.13.42
TI DSP Lib 1.20
TI DSP Link 1.1.65.00.03
TI EDMA3 01.11.00.03
TI Framework Components 2.26.00.01
TI IPC 1.24.03.32
TI Linux Utils 1.3.22.00.02
TI Local Power Manager 1.1.24.02.09
TI OSAL 1.22.01.09
TI XDAIS 7.23.00.06
TI XDC Tools 3.23.04.60

ti xdctools lpm codec server codecs omap3530 dm3730
Report Abuse
  • Reply
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • Ramsey
    Posted by Ramsey
    on Jul 26 2012 11:41 AM
    Expert3710 points

    Donald,

    The error is generated because the DSP/BIOS configuration does not have the 'PWRM' module installed. Check your configuration script and make sure to include this module. It will looks something like this in your *.tci file:

    /* power management */
    bios.PWRM.ENABLE = true;
    bios.PWRM.WARMBOOTMEMSEG = DDR2;
    bios.PWRM.CTXBUFMEMSEG = DDR2;

    ~Ramsey

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Jul 26 2012 12:17 PM
    Prodigy140 points

    Thanks Ramesy for your timely response.  I found a memmap.tci file in my codec server's output directory, which I added the lines you suggested, but I received this error:

    configuring bin/cs.x64P from package/cfg/bin/cs_x64P.cfg ...
    platform = ti.platforms.evm3530
    js: "./memmap.tci", line 10: ReferenceError: "bios" is not defined. (./memmap.tci#10)
    "./server.tcf", line 9
    "./package/cfg/bin/cs_x64P.cfg", line 258
    "./package/cfg/bin/cs_x64P.cfg", line 181
    gmake: *** [package/cfg/bin/cs_x64Pcfg.s62] Error 1
    make: *** [all] Error 2

    So, realizing that it wasn't defined, I thought that I would added the following line preceding the lines you gave me:

    var bios = xdc.useModule('ti.bios');
    bios.PWRM.ENABLE = true;
    bios.PWRM.WARMBOOTMEMSEG = DDR2;
    bios.PWRM.CTXBUFMEMSEG = DDR2;

    But, that resulted in another error:

    configuring bin/cs.x64P from package/cfg/bin/cs_x64P.cfg ...
    platform = ti.platforms.evm3530
    js: "./memmap.tci", line 9: TypeError: Cannot read property "cfgScript" from undefined (/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-xdctools-tree/packages/xdc/cfg/Main.xs#1484)
    "./server.tcf", line 9
    "./package/cfg/bin/cs_x64P.cfg", line 258
    "./package/cfg/bin/cs_x64P.cfg", line 181
    gmake: *** [package/cfg/bin/cs_x64Pcfg.s62] Error 1
    make: *** [all] Error 2

    So, my question is am I editing the right *.tci file? If so, am I correctly modifying the memmap.tci file?  Please pardon my lack of understanding.  I'm still trying to get my feet wet in the area of DSP codec/server development.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ramsey
    Posted by Ramsey
    on Jul 26 2012 13:00 PM
    Expert3710 points

    Donald,

    The syntax for tci files is different than for cfg files. The code you added would be used for cfg files. Somewhere in your tci script you probably have utils.loadPlatform call which would define the bios object. Add the bios reference after this call. Also, the DSP/BIOS configuration starts with a *.tcf file. The tci files are "target configuration include" files. See if you can track down the entire flow.

    If your build starts with a package.bld script, it might have a property called 'cfgScript' which defines the tcf file which starts off the configuration. If you have both a tcf and a cfg by the same name, then the initial configuration happens with the tcf and tci files, the second phase of configuration begins with the cfg file.

    ~Ramsey

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Jul 26 2012 13:59 PM
    Prodigy140 points

    Thanks again for your input and insight.  I think I'm getting the flow of things now.  I was able to locate the utils.loadplatform call, utils.loadPlatform("ti.platforms.generic", params) in my case, in my server.tcf file (the cfgscript property in my package.bld script defined server.tcf as the starting configuration).The following is the context of the bios.PWRM code in my server.tcf file:

    /*
    * ======== server.tcf ========
    */

    var platform = environment["config.platform"];
    print("platform = " + platform);

    utils.importFile('./memmap.tci');

    var device_regs = {
    l1PMode: "32k",
    l1DMode: "16k",
    l2Mode: "64k",
    l1DHeapSize: 0
    };

    var params = {
    clockRate: 360,
    catalogName: "ti.catalog.c6000",
    deviceName: "3530",
    regs: device_regs,
    mem: mem_ext
    };

    /* Now customize the generic platform with parameters specified above. */
    utils.loadPlatform("ti.platforms.generic", params);

    /* Enable heaps and tasks */
    bios.enableMemoryHeaps(prog);
    bios.enableTskManager(prog);

    /* Create heaps in memory segments that are to have heap */
    bios.DDR2.createHeap = true;
    bios.DDR2.heapSize = 0x20000; // 128K

    bios.DDRALGHEAP.createHeap = true;
    bios.DDRALGHEAP.heapSize = bios.DDRALGHEAP.len;

    /* L1DSRAM */
    bios.L1DSRAM.createHeap = true;
    bios.L1DSRAM.enableHeapLabel = true;
    bios.L1DSRAM["heapLabel"] = prog.extern("L1DHEAP");
    bios.L1DSRAM.heapSize = bios.L1DSRAM.len;

    /* Enable power management, whilst ensuring DSP CPU load reporting accuracy */
    bios.PWRM.ENABLE = true;
    bios.PWRM.IDLECPU = true;
    bios.PWRM.LOADENABLE = true;
    bios.PWRM.USECLKPRD = true;
    bios.PWRM.NUMSLOTS = 10 + 1;
    bios.PWRM.CLKTICKSPERSLOT = 50;
    bios.PWRM.WARMBOOTMEMSEG = bios.DDR2;
    bios.PWRM.CTXBUFMEMSEG = bios.DDR2;

    Where the boldface bios.PWRM code was already in place and the blue bios.PWRM code is the code that you gave that wasn't there (i had to replace DDR2 with bios.DDR2 because it complained about DDR2 not being defined).  So, it seems like the definition is there and I shouldn't get the Advanced LPM features not available for this device error, but when I make clean && make all and then trying rebuilding with configuro the error it still occurs.  What else am I missing?

    If it helps, these are the files generated by the Genserver Wizard, before I execute make all:

    -rw-rw-r-- 1 donny3000 donny3000 7768 Jul 26 11:58 codec.cfg
    -rw-rw-r-- 1 donny3000 donny3000 1140 Jul 26 11:57 config.bld
    -rw-rw-r-- 1 donny3000 donny3000 84 Jul 26 11:57 link.cmd
    -rw-rw-r-- 1 donny3000 donny3000 1019 Jul 26 11:57 main.c
    -rw-rw-r-- 1 donny3000 donny3000 3575 Jul 26 11:59 makefile
    -rw-rw-r-- 1 donny3000 donny3000 1393 Jul 26 13:22 memmap.tci
    -rw-rw-r-- 1 donny3000 donny3000 836 Jul 26 11:57 package.bld
    -rw-rw-r-- 1 donny3000 donny3000 42 Jul 26 11:57 package.xdc
    -rw-rw-r-- 1 donny3000 donny3000 1712 Jul 26 11:57 package.xs
    -rw-rw-r-- 1 donny3000 donny3000 11028 Jul 26 11:57 server.cfg
    -rw-rw-r-- 1 donny3000 donny3000 2439 Jul 26 13:44 server.tcf

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ramsey
    Posted by Ramsey
    on Jul 27 2012 10:03 AM
    Expert3710 points

    Donald,

    I will have to look into this some more. I'll get back to you as soon as I discover a new lead.

    ~Ramsey

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Jul 27 2012 17:04 PM
    Prodigy140 points

    Thanks Ramsey. I will be looking forward to your response.

    -Donald

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ramsey
    Posted by Ramsey
    on Jul 27 2012 17:12 PM
    Expert3710 points

    Donald,

    Reading over your initial post again, I'm a little confused. You indicate that the Genserver Wizard was successful in building your codec server but trying to run configuro on your ARM executable is failing. But looking at the error you posted, I think configuro is actually trying to configure the codec server executable. This does not make sense.

    I asked around and my understanding is that the Genserver Wizard is used to generate a package for your DSP codec server executable. You would then build this package with the xdc command to generate your DSP executable. On the ARM side, you would use the configuro command to build and configure the application executable, but the configuro command would be used on a different package, not the same package generated by the Genserver Wizard. In particular, the configuro command would be building an ARM executable, not a DSP executable as your initial post is indicating.

    Would you confirm that the DSP executable built without error and with the xdc command using the package from Genserver Wizard and that you are using the configuro command on a different package for the ARM executable. I'm wondering if you are using the configuro command on the wrong package.

    Regarding tcf vs. cfg configuration. If you are building a package with the xdc command (i.e. using a package.bld script), then my previous post applies. In particular, you must have two scripts by the same name but one with a cfg extension and one with a tcf extension. In the package.bld script, you must specify the tcf file, the cfg file will be used automatically. I think you understood this from your reply. But I failed to tell you that if you are using the configuro command instead of the xdc command, then its different. When using configuro, you must specify the cfg script as the input file and add the --tcf option to process the corresponding tcf script. Your command would look something like this.

    xs xdc.tools.configuro --tcf app.cfg

    ~Ramsey

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Jul 30 2012 17:13 PM
    Prodigy140 points

    Ramsey,

    I believe that the DSP executable built without error because I didn't receive an error when I executed make all and *.x64P file was generated in the bin/ directory. These are the steps I took to create and build the Codec Server for the Genserver Wizard:

    • I executed the Genserver Wizard with the command XDCPATH="<my_XDCPATH>" xs ti.sdo.ce.wizards.genserver
    • Then after going through the menus and successfully generating the files from the wizard, I get the following files in the output directory

    -rw-rw-r-- 1 donny3000 donny3000 7768 Jul 26 11:58 codec.cfg
    -rw-rw-r-- 1 donny3000 donny3000 1140 Jul 26 11:57 config.bld
    -rw-rw-r-- 1 donny3000 donny3000 84 Jul 26 11:57 link.cmd
    -rw-rw-r-- 1 donny3000 donny3000 1019 Jul 26 11:57 main.c
    -rw-rw-r-- 1 donny3000 donny3000 3574 Jul 26 16:34 makefile
    -rw-rw-r-- 1 donny3000 donny3000 1393 Jul 26 13:22 memmap.tci
    -rw-rw-r-- 1 donny3000 donny3000 836 Jul 26 11:57 package.bld
    -rw-rw-r-- 1 donny3000 donny3000 42 Jul 26 11:57 package.xdc
    -rw-rw-r-- 1 donny3000 donny3000 1712 Jul 26 11:57 package.xs
    -rw-rw-r-- 1 donny3000 donny3000 11027 Jul 26 16:32 server.cfg
    -rw-rw-r-- 1 donny3000 donny3000 2439 Jul 26 13:44 server.tcf

    • Then I execute make all, which generates the server, my bin/cs.x64P file (no errors occur during this process) and a <my_server_name>.zip server package.
    • Once that completes, I go over to the folder where my ARM code is, which has the following files and I execute xs xdc.tools.configuro -b ./config.bld dm3730_dsp_test.cfg

    -rwxrwxr-x 1 donny3000 donny3000 1322 Jul 25 01:06 config.bld
    -rw-rw-r-- 1 donny3000 donny3000 940 Jul 26 16:03 dm3730_dsp_test.cfg
    -rw------- 1 donny3000 donny3000 428 Jul 20 10:56 dm3730-dsp-test.pro
    -rw------- 1 donny3000 donny3000 1400 Jul 24 22:51 main.cpp

    The last step is where I get the error, but maybe I need to create a tcf file and include the --tcf option in addition to the -b option?  If so, I'm not sure what to put in it.

    I wanted to upload my config.bld and dm373_dsp_test.cfg files, but was unsuccessful.  So, I 've copied the contents here of each file here:

    config.bld:

    /*
    * ======== config.bld ========
    * User note: YOU MUST MODIFY THIS FILE TO SPECIFY THE COMPILER TOOL PATHS.
    *
    * Edit this file to specify compiler toolchain paths, and any custom
    * compiler/linker options.
    */

    /* DSP Configuration */
    /* location of your C6000 codegen tools */
    var C64P = xdc.useModule('ti.targets.C64P');
    C64P.rootDir = "/opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-cgt6x-tree";
    C64P.platform = "ti.platforms.evm3530";

    Build.targets.$add(C64P);

    /* Generic ARM Configuration */
    var GCArmv5T = xdc.useModule('gnu.targets.arm.GCArmv5T'); /* Name of XDCTools Generic ARM Target */
    GCArmv5T.rootDir = "/opt/embedded/armv7/gumstix/tmp/sysroots/i686-linux/usr/armv7a"; /* Location of toolchain (path) */
    GCArmv5T.LONGNAME = "bin/arm-angstrom-linux-gnueabi-gcc"; /* Each toolchain may have different prefix, this is the actual executable */
    GCArmv5T.platform = "ti.platforms.evm3530"; /* Associate the target with a platform */

    /* remove reference to C++ from opts */
    /*GCArmv5T.lnkOpts.suffix = GCArmv5T.lnkOpts.suffix.replace("-lstdc++", "");*/ /* For example add a linker option */

    Build.targets.$add(GCArmv5T);
    /*
    * ======== Build.targets ========
    * list of targets (ISAs + compilers) to build for
    */
    /*Build.targets = [
    C64P, GCArmv5T,
    ];*/

    dm3730_dsp_test.cfg

    /*
    * Example .cfg snippet for ARM-side Linux app with remote algs
    * (OSAL = Linux, IPC = Link)
    */
    var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
    osalGlobal.runtimeEnv = osalGlobal.DSPLINK_LINUX;

    var os = xdc.useModule('ti.sdo.ce.osal.linux.Settings');
    osalGlobal.os = os;

    /* Configure CE to use it's DSP Link Linux version */
    var ipc = xdc.useModule('ti.sdo.ce.ipc.Settings');
    ipc.commType = ipc.COMM_DSPLINK;

    /*
    * ======== Engine Configuration ========
    */
    var Engine = xdc.useModule('ti.sdo.ce.Engine');
    var myEngine = Engine.createFromServer(
    "bin/cs", // Engine name (as referred to in the C app)
    "bin/cs.x64P", // path to server exe, relative to its package dir
    "swri.tnc.servers.cs" // full server package name
    );

    /* Load support for the DMAI module */
    var DMAI = xdc.loadPackage('ti.sdo.dmai');
    var SCPY = xdc.useModule('ti.sdo.fc.scpy.SCPY');
    var SDMA = xdc.useModule('ti.sdo.linuxutils.sdma.SDMA');

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Jul 31 2012 09:39 AM
    Prodigy140 points

    If it helps provide some understanding for my steps, I've been using the XDC Consumer User's Guide (Literature Number: SPRUEX4) to help me understand how to use configuro to build my ARM app.  My end goal is to build an ARM app that will use a remote server on the DSP to process streaming video.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Ramsey
    Posted by Ramsey
    on Jul 31 2012 12:15 PM
    Expert3710 points

    Donald,

    Your DSP side looks okay. But the config.bld script for the ARM side looks incorrect. It looks like a generated file but I'm guessing that it's been hand edited? Or is this how it was generated?

    In particular, this file should not be building for the C64P target. Please remove the following line:

    Build.targets.$add(C64P);

    There is no wizard for generating the ARM side application. We do provide examples in Codec Engine to help you get started. Have a look at

    codec_engine_2_26_02_11\examples\ti\sdo\ce\examples\apps\video_copy

    This example builds both a local and remote executable. You would be interested in the remote part.

    ~Ramsey

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Aug 01 2012 10:37 AM
    Prodigy140 points

    Thanks Ramsey for you help.  The config.bld script was autogenerated, but I did had edit it.  I removed the Build.targets.$add(C64P); line and the configuro build finished successfully.

    I also took a look at the video_copy example you mentioned to see how its remote.cfg file looked to get an idea of how I should construct mine, and it looks very similar.  Now that I'm at the point where I need to actually compile my app, I've followed the guidance in the XDC Consumer User's Guide on how to construct a Makefile that will pull in the compiler.opt and the linker.cmd files generated by configuro.  Thus, I have this:

    CC = arm-none-linux-gnueabi-g++

    LNK = arm-none-linux-gnueabi-g++

    RTS = -lstdc++

    CONFIG = dm3730_dsp_test

    %.o : %.cpp # forget built-in rule

    %.o : %.cpp $(CONFIG)/compiler.opt

    $(CC) $(shell cat $(CONFIG)/compiler.opt) -c $<

    main : main.o $(CONFIG)/linker.cmd

    $(LNK) -o $@ main.o -lpthread $(CONFIG)/linker.cmd $(RTS)

    But, when I execute make, I get a lot of undefined reference to Comm_<function_name> compile errors like below:

    /opt/embedded/armv7/gumstix/tmp/sysroots/i686-linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi-g++ -o main main.o -lpthread dm3730_dsp_test/linker.cmd
    /home/donny3000/workspace/ti/dm3730-dsp-test/dm3730_dsp_test/package/cfg/dm3730_dsp_test_pv7A.ov7A: In function `CERuntime_init':
    dm3730_dsp_test_pv7A.c:(.text.CERuntime_init+0xec): undefined reference to `Comm_init'
    dm3730_dsp_test_pv7A.c:(.text.CERuntime_init+0xf4): undefined reference to `Processor_init'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `Engine_ctrlNode':
    Engine.c:(.text+0x2b8): undefined reference to `Comm_setSrcQueue'
    Engine.c:(.text+0x2c4): undefined reference to `Comm_put'
    Engine.c:(.text+0x328): undefined reference to `Comm_get'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `callServer':
    Engine.c:(.text+0x358): undefined reference to `Comm_setSrcQueue'
    Engine.c:(.text+0x364): undefined reference to `Comm_put'
    Engine.c:(.text+0x390): undefined reference to `Comm_get'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `Engine_callWait':
    Engine.c:(.text+0x2074): undefined reference to `Comm_get'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `Engine_callAsync':
    Engine.c:(.text+0x20e0): undefined reference to `Comm_setSrcQueue'
    Engine.c:(.text+0x20ec): undefined reference to `Comm_put'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `Engine_call':
    Engine.c:(.text+0x2148): undefined reference to `Comm_setSrcQueue'
    Engine.c:(.text+0x2154): undefined reference to `Comm_put'
    Engine.c:(.text+0x2198): undefined reference to `Comm_get'
    /opt/embedded/armv7/gumstix/tmp/sysroots/overo-angstrom-linux-gnueabi/usr/share/ti/ti-codec-engine-tree/packages/ti/sdo/ce/lib/release/ce.av5T(Engine.ov5T): In function `freeNode':
    Engine.c:(.text+0x2a38): undefined reference to `Comm_delete'

    So after doing some searching on this forum and on google, it seems that I need to add var Mod = xdc.useModule("pkg.name.Mod"); line in my cfg file to pull in the appropriate module for the app and libraries to add to the linker.cmd file, but I'm having a hard time tracking the the right module.  Do you know which one I might need?

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Aug 06 2012 13:26 PM
    Prodigy140 points

    Ramsey,

    Were you able to find anything out regarding my latest issue or know what I might be running up against here?  I'm still stuck and I don't know where to begin to try and resolve this issue.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • GAnthony
    Posted by GAnthony
    on Aug 08 2012 18:56 PM
    Intellectual2580 points

    Donald:

        Could you possibly zip up and post your project (maybe pare down to using the sample codecs that come with Codec Engine as I don't have an SDK), to try to delve into this build issue?

        I will also try to duplicate from my end with a simplified Server.

    Thanks,
    - Gil
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • GAnthony
    Posted by GAnthony
    on Aug 08 2012 21:02 PM
    Intellectual2580 points

    Donald:

         Looking at the LPM package, it appears the test samples there explicitly include the ti.bios.power package and set the transport to DSPLINK.

         The Codec engine genserver logic appears to search for an LPM installation, and then loads the package.

         Can you check that ti.bios.power is on the package path?

    - Gil

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Donald Poole
    Posted by Donald Poole
    on Aug 09 2012 11:26 AM
    Prodigy140 points

    Thanks Gil for your assistance.  I was able to resolve my issue by modifiying my ARM side config.bld script.  When I was receiving the errors my script look like this:

    /*
    * ======== config.bld ========
    * User note: YOU MUST MODIFY THIS FILE TO SPECIFY THE COMPILER TOOL PATHS.
    *
    * Edit this file to specify compiler toolchain paths, and any custom
    * compiler/linker options.
    */
    /* Generic ARM Configuration */
    var GCArmv7A = xdc.useModule('gnu.targets.arm.GCArmv7A'); /* Name of XDCTools Generic ARM Target */
    GCArmv7A.rootDir = "/opt/embedded/armv7/gumstix/tmp/sysroots/i686-linux/usr/armv7a"; /* Location of toolchain (path) */
    GCArmv7A.LONGNAME = "bin/arm-angstrom-linux-gnueabi-gcc"; /* Each toolchain may have different prefix, this is the actual executable */
    GCArmv7A.platform = "ti.platforms.evm3530"; /* Associate the target with a platform */
    /* Build.targets.$add(GCArmv7A); */
    /*
    * ======== Build.targets ========
    * list of targets (ISAs + compilers) to build for
    */
    Build.targets = [
    GCArmv7A,
    ];

    Since my target device is the DM3730, I thought that I need to change the module to match the DM3730 because it's an armv7-a device.  But, the gnu.targets.arm.GCArmv7A module pulled in the wrong libraries because all of my other ti packages (codec engine, linuxutils, dspbios etc) had been configured/built with the gnu.targets.arm.GCArmv5T module.  So changing my config.bld script to look like

    /*
    * ======== config.bld ========
    * User note: YOU MUST MODIFY THIS FILE TO SPECIFY THE COMPILER TOOL PATHS.
    *
    * Edit this file to specify compiler toolchain paths, and any custom
    * compiler/linker options.
    */
    /* Generic ARM Configuration */
    var GCArmv7A = xdc.useModule('gnu.targets.arm.GCArmv5T'); /* Name of XDCTools Generic ARM Target */
    GCArmv7A.rootDir = "/opt/embedded/armv7/gumstix/tmp/sysroots/i686-linux/usr/armv7a"; /* Location of toolchain (path) */
    GCArmv7A.LONGNAME = "bin/arm-angstrom-linux-gnueabi-gcc"; /* Each toolchain may have different prefix, this is the actual executable */
    GCArmv7A.platform = "ti.platforms.evm3530"; /* Associate the target with a platform */
    /* Build.targets.$add(GCArmv7A); */
    /*
    * ======== Build.targets ========
    * list of targets (ISAs + compilers) to build for
    */
    Build.targets = [
    GCArmv7A,
    ];

    allow my ARM side app to compile/link successfully.  I guess I have to use the GCArmv5T because that is the module the OpenEmbedded build system uses when building all of the TI packages/utilities.


    -Donald

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
12
TI E2E™ Community
  • Support Forums
  • Blogs
  • Videos
  • Groups
  • Site Support & Feedback
  • Settings
TI E2E™ Community Groups
  • TI University Program
  • Make the Switch
  • Microcontroller Projects
  • Motor Drive & Control
Other Communities
  • Deyisupport
  • Designsomething.org
  • beagleboard.org
  • TI on Element 14
  • TI on TechXchangeSM
Other Technical & Support Resources
  • WEBENCH® Design Center
  • Product Information Centers
  • Technical Documents
  • TI Design Network
  • TI Technical Articles
  • TI Training

All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
embedded processors, along with software, tools and the industry’s largest sales/support staff.

© Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy Policy | Terms of Use