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.

CCS: RTSC platform not recognized in SYS-BIOS project

Other Parts Discussed in Thread: SYSBIOS, TMS320C6746

Tool/software: Code Composer Studio

Hello,

I'm migrating my code from DSP-BIOS 5.42, to SYS-BIOS 6.53.  I made the RTSC platform independent of my project.  However, my project doesn't seem to see it.  First clue is that under CCS General properties for the project, I don't have an RTSC tab.  I have Main and Products, but no RTSC.  Also, when the project is linked, I get a warning (10247-D) about creating an IRAM output section, without a SECTIONS specification, even though the IRAM was included in my independent RTSC platform, which I originally though was being referenced in the project.

Any guidance or clues would be appreciated.

Robert

  • First thing, are you sure your project is a RTSC project?  If so, the folder should have a "RTSC" icon like this:

    I'm not sure what RTSC tab you're referring to.  In my project, the "Products" tab has a box where I choose the xdctools version, and down below that I can choose the platform.  Here's a screenshot:

    Can you elaborate on the issue?

    Thanks,
    Brad

  • Brad Griffis said:

    First thing, are you sure your project is a RTSC project?  If so, the folder should have a "RTSC" icon like this:

    It does!

    Brad Griffis said:

    I'm not sure what RTSC tab you're referring to.  In my project, the "Products" tab has a box where I choose the xdctools version, and down below that I can choose the platform.  Here's a screenshot:

    Same as mine!  I was referencing this thread, see bottom/answer:

    May have seen something to that effect other places as well.

    Brad Griffis said:

    Can you elaborate on the issue?

    What further information would be of use?  As mentioned, the project is compiling, but linker has a variety of issues.  The "without a SECTIONS specification" was the first up in the list, so that is what I mentioned here.  Supposedly, the platform should provide that information, no?  I see the section the linker is complaining about defined in the Platform.xdc file in my platform repository.  Is there a .cmd that should be referenced from the platform?  I don't see one there.  My platform is not directly in the project/is a separate repository, as I may want to use the same platform across multiple projects.

    Thanks,

    Robert

  • Robert,
    Could you please clean and rebuild and post the complete console output? Could you also post a screenshot of your Products tab?
  • Sasha Slijepcevic said:
    Robert,
    Could you please clean and rebuild and post the complete console output? Could you also post a screenshot of

    your Products tab?

    Hi Sasha,

    I've sort of had some answers to the original questions of this thread, but have just as many left.  Please advise.

    'Invoking: XDCtools'

    "C:/ti/xdctools_3_50_03_33_core/xs" --xdcpath="C:/ti/bios_6_53_01_03/packages;C:/ti/xdctools_3_50_03_33_core;C:/git/0/1/3/Misc/platform;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C674 -p 2 -r debug -c "C:/ti" --compileOptions "-g --optimize_with_debug" "../2.cfg"
    configuring 2.xe674 from package/cfg/2.cfg ...
    gmake[1]: Entering directory 'C:/git/0/1/3/Code/src/sysbios'
    asme674 C:/ti/bios_6_53_01_03/packages/ti/sysbios/family/c64p/Hwi_asm.s62 ...
    gmake[1]: Leaving directory 'C:/git/0/1/3/Code/src/sysbios'
    gmake[1]: Entering directory 'C:/git/0/1/3/Code/src/sysbios'
    cle674 C:/ti/bios_6_53_01_03/packages/ti/sysbios/BIOS.c ...

    >> Compilation failure
    makefile:70: recipe for target 'BIOS.obj' failed
    "C:/ti/bios_6_53_01_03/packages/ti/sysbios/BIOS.c", line 36: fatal error #5: could not open source file "xdc/std.h"

    Robert

  • The first thing you need to do is to figure out why you have C:/ti/xdctools_3_50_03_33_core in your xdcpath. That path is incomplete, and you get the actual path to XDCtools files automatically, you don't need to add it. So, check your Products tab, and if you have an XDCtools path under Other Repositories, please delete that item. After you do that, clean and rebuild.
    Also, you can add the following to your config script to get extra output:
    xdc.module("xdc.cfg.SourceDir").verbose = 3;

    rtsc.eclipse.org/.../SourceDir.html
  • Sasha Slijepcevic said:
    The first thing you need to do is to figure out why you have C:/ti/xdctools_3_50_03_33_core in your xdcpath. That path is incomplete, and you get the actual path to XDCtools files automatically, you don't need to add it. So, check your Products tab, and if you have an XDCtools path under Other Repositories, please delete that item. After you do that, clean and rebuild.
    Also, you can add the following to your config script to get extra output:
    xdc.module("xdc.cfg.SourceDir").verbose = 3;

    rtsc.eclipse.org/.../SourceDir.html

    Where the xdc.module command goes?

    I did the other suggestion, and am now left with this.  Please advise

    gmake[1]: Leaving directory 'C:/git/0/1/2/Code/Debug'

    gmake: *** No rule to make target 'C:/git/0/1/2/Code/Debug/configPkg/config.bld', needed by 'configPkg/compiler.opt'.
    gmake: *** No rule to make target 'C:/git/0/1/2/Code/Debug/configPkg/config.bld', needed by 'configPkg/compiler.opt'.
    gmake: *** No rule to make target 'C:/git/0/1/2/Code/Debug/configPkg/config.bld', needed by 'configPkg/compiler.opt'.
    gmake: *** No rule to make target 'C:/git/0/1/2/Code/Debug/configPkg/config.bld', needed by 'configPkg/compiler.opt'.

  • xdc.module command goes into your config script, which is 2.cfg.
    I still need to see the complete output to be able to tell what went wrong. But please always clean first, before you create that output.
  • Sasha Slijepcevic said:
    xdc.module command goes into your config script, which is 2.cfg.
    I still need to see the complete output to be able to tell what went wrong. But please always clean first, before you create that output.

    IP naming keeps me from full paste (anything beyond a few lines becomes burdensome to change names). 

    I removed the previous errors by referencing your previous post here:

    and just removing the Build Configuration File reference in Advanced Options.

    Here's the latest problems.  I specified the IRAM section in my platform, so not sure why it's complaining about not having that definition.

    <Linking>

    warning #10247-D: creating output section "IRAM" without a SECTIONS specification
    warning #10346-D: Symbol "__STACK_SIZE" is a COFFABI symbol deprecated in EABI; use EABI symbol "__TI_STACK_SIZE" instead. For additional information, please see the 'C6000 EABI Migration' guide at processors.wiki.ti.com/.../C6000_EABI:C6000_EABI_Migration
    "configPkg/linker.cmd", line 133: error #10099-D: program will not fit into available memory. run placement with alignment fails for section "GROUP_1" size 0x217 . Available memory ranges:
    IRAM size: 0x40000 unused: 0x23d max hole: 0x200
    "configPkg/linker.cmd", line 154: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".vecs" size 0x200 . Available memory ranges:
    IRAM size: 0x40000 unused: 0x23d max hole: 0x200
    "configPkg/linker.cmd", line 145: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".switch" size 0x115 . Available memory ranges:
    IRAM size: 0x40000 unused: 0x2d max hole: 0x8
    "configPkg/linker.cmd", line 132: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".stack" size 0x800 . Available memory ranges:
    IRAM size: 0x40000 unused: 0x2d max hole: 0x8
    warning #10346-D: Symbol "$bss" is a COFFABI symbol deprecated in EABI; use EABI symbol "__TI_STATIC_BASE" instead. For additional information, please see the 'C6000 EABI Migration' guide at processors.wiki.ti.com/.../C6000_EABI:C6000_EABI_Migration
    "configPkg/linker.cmd", line 139: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".cinit" size 0x8ac5 . Available memory ranges:
    IRAM size: 0x40000 unused: 0x13 max hole: 0x8

  • It seems you made it successfully to the link step. At this point you custom platform, which you named "2" is contributing the linker command file. I would have to see Platform.xdc and Platform.xs to be able to debug further. If you don't want to post them publicly, you can click on my name, then on Connect, and then Send a private message. There you can attach relevant files.
  • Sasha Slijepcevic said:
    It seems you made it successfully to the link step. At this point you custom platform, which you named "2" is contributing the linker command file. I would have to see Platform.xdc and Platform.xs to be able to debug further. If you don't want to post them publicly, you can click on my name, then on Connect, and then Send a private message. There you can attach relevant files.

    E2E wouldn't accept a .xdc or .xs, so I cut and paste their contents below.

    Robert

    platform.xdc

    /*!
    * File generated by platform wizard. DO NOT MODIFY
    *
    */

    metaonly module Platform inherits xdc.platform.IPlatform {

    config ti.platforms.generic.Platform.Instance CPU =
    ti.platforms.generic.Platform.create("CPU", {
    clockRate: 336,
    catalogName: "ti.catalog.c6000",
    deviceName: "TMS320C6746",
    customMemoryMap:
    [
    ["L1PSRAM",
    {
    name: "L1PSRAM",
    base: 0x11E00000,
    len: 0x00008000,
    space: "code",
    access: "RWX",
    }
    ],
    ["IROM",
    {
    name: "IROM",
    base: 0x11700000,
    len: 0x00100000,
    space: "code/data",
    access: "RX",
    }
    ],
    ["L1DSRAM",
    {
    name: "L1DSRAM",
    base: 0x11F00000,
    len: 0x00008000,
    space: "data",
    access: "RW",
    }
    ],
    ["IRAM",
    {
    name: "IRAM",
    base: 0x11800000,
    len: 0x00040000,
    space: "code/data",
    access: "RWX",
    }
    ],
    ["L3_CBA_RAM",
    {
    name: "L3_CBA_RAM",
    base: 0x80000000,
    len: 0x00020000,
    space: "code/data",
    access: "RWX",
    }
    ],
    ["DDR",
    {
    name: "DDR",
    base: 0xc0000000,
    len: 0x08000000,
    space: "code/data",
    access: "RWX",
    }
    ],
    ],
    l1DMode: "32k",
    l1PMode: "32k",
    l2Mode: "256k",

    });

    instance :

    override config string codeMemory = "IRAM";
    override config string dataMemory = "IRAM";
    override config string stackMemory = "IRAM";

    config String l1DMode = "32k";
    config String l1PMode = "32k";
    config String l2Mode = "256k";
    }

    Platform.xs

    /*!
    * File generated by platform wizard. DO NOT MODIFY.
    *
    */

    function getCpuDataSheet(cpuId)
    {
    return this.$module.CPU.getCpuDataSheet(cpuId);
    }

    function getCreateArgs()
    {
    return this.$module.CPU;
    }

    function getExeContext(prog)
    {
    return this.$module.CPU.getExeContext(prog);
    }


    function getExecCmd(prog)
    {
    return this.$module.CPU.getExecCmd(prog);
    }


    function getLinkTemplate(prog)
    {
    return this.$module.CPU.getLinkTemplate(prog);
    }

  • Also, if of use, here is the contents of linker.cmd file in Debug\configPkg

    /*
    * Do not modify this file; it is automatically generated from the template
    * linkcmd.xdt in the ti.targets.elf package and will be overwritten.
    */

    /*
    * put '"'s around paths because, without this, the linker
    * considers '-' as minus operator, not a file name character.
    */


    -l"C:\git\0\1\2\Code\Debug\configPkg\package\cfg\cmm_pe674.oe674"
    -l"C:\git\0\1\2\Code\src\sysbios\sysbios.ae674"
    -l"C:\ti\bios_6_53_01_03\packages\ti\targets\rts6000\lib\ti.targets.rts6000.ae674"
    -l"C:\ti\bios_6_53_01_03\packages\ti\targets\rts6000\lib\boot.ae674"

    --retain="*(xdc.meta)"


    --args 0x0
    -heap 0x0
    -stack 0x800

    MEMORY
    {
    L1PSRAM (RWX) : org = 0x11e00000, len = 0x8000
    IROM (RX) : org = 0x11700000, len = 0x100000
    L1DSRAM (RW) : org = 0x11f00000, len = 0x8000
    IRAM (RWX) : org = 0x11800000, len = 0x40000
    L3_CBA_RAM (RWX) : org = 0x80000000, len = 0x20000
    DDR (RWX) : org = 0xc0000000, len = 0x8000000
    }

    /*
    * Linker command file contributions from all loaded packages:
    */

    /* Content from xdc.services.global (null): */

    /* Content from xdc (null): */

    /* Content from xdc.corevers (null): */

    /* Content from xdc.shelf (null): */

    /* Content from xdc.services.spec (null): */

    /* Content from xdc.services.intern.xsr (null): */

    /* Content from xdc.services.intern.gen (null): */

    /* Content from xdc.services.intern.cmd (null): */

    /* Content from xdc.bld (null): */

    /* Content from ti.targets (null): */

    /* Content from ti.targets.elf (null): */

    /* Content from xdc.rov (null): */

    /* Content from xdc.runtime (null): */

    /* Content from ti.targets.rts6000 (null): */

    /* Content from ti.sysbios.interfaces (null): */
    /* Content from ti.sysbios.family (null): */

    /* Content from xdc.services.getset (null): */

    /* Content from ti.sysbios.family.c62 (null): */

    /* Content from xdc.runtime.knl (null): */

    /* Content from ti.sysbios.family.c64p.primus (null): */

    /* Content from ti.catalog.c6000 (null): */

    /* Content from ti.catalog (null): */

    /* Content from ti.catalog.peripherals.hdvicp2 (null): */

    /* Content from xdc.platform (null): */

    /* Content from xdc.cfg (null): */

    /* Content from ti.platforms.generic (null): */

    /* Content from cmm (null): */

    /* Content from ti.sysbios.hal (null): */

    /* Content from ti.sysbios (null): */

    /* Content from ti.sysbios.rts (ti/sysbios/rts/linkcmd.xdt): */

    /* Content from ti.sysbios.rts.ti (ti/sysbios/rts/ti/linkcmd.xdt): */

    /* Content from ti.sysbios.family.c64p (ti/sysbios/family/c64p/linkcmd.xdt): */
    ti_sysbios_family_c64p_Cache_l1dSize = 32768;
    ti_sysbios_family_c64p_Cache_l1pSize = 32768;
    ti_sysbios_family_c64p_Cache_l2Size = 262144;

    /* Content from ti.sysbios.knl (null): */

    /* Content from ti.sysbios.timers.timer64 (null): */

    /* Content from ti.sysbios.gates (null): */

    /* Content from ti.sysbios.xdcruntime (null): */

    /* Content from ti.sysbios.heaps (null): */

    /* Content from ti.sysbios.utils (null): */

    /* Content from configPkg (null): */

    /* Content from xdc.services.io (null): */


    /*
    * symbolic aliases for static instance objects
    */
    xdc_runtime_Startup__EXECFXN__C = 1;
    xdc_runtime_Startup__RESETFXN__C = 1;

    SECTIONS
    {
    .text: load >> IRAM
    .ti.decompress: load > IRAM
    .stack: load > IRAM
    GROUP: load > IRAM
    {
    .bss:
    .neardata:
    .rodata:
    }
    .cinit: load > IRAM
    .pinit: load >> IRAM
    .init_array: load > IRAM
    .const: load >> IRAM
    .data: load >> IRAM
    .fardata: load >> IRAM
    .switch: load >> IRAM
    .sysmem: load > IRAM
    .far: load >> IRAM
    .args: load > IRAM align = 0x4, fill = 0 {_argsize = 0x0; }
    .cio: load >> IRAM
    .ti.handler_table: load > IRAM
    .c6xabi.exidx: load > IRAM
    .c6xabi.extab: load >> IRAM
    .sysinit: load > IRAM
    .vecs: load > IRAM
    xdc.meta: load > IRAM, type = COPY

    }
  • I’ve gotten through most everything (not all understood), with a complete link ... by changing most to DDR. But I still can’t figure out why this warning is popping up:

    warning #10247-D: creating output section "IRAM" without a SECTIONS specification

    If I add in a .cmd file with

    SECTIONS
    {
    IRAM :> IRAM
    }

    to the project, the warning goes away. But seems redundant, IRAM is already defined in my platform, and I’m and not sure why the rest of the memory regions aren’t generating a similar error.
  • Somewhere in your code you are defining a section IRAM, which is different from a memory region IRAM. Most likely, there is a pragma somewhere that allocates something to the section IRAM.

    There should be a memory map file with the extension .map somewhere in your Debug subdirectory. That might give more clues.
  • Sasha Slijepcevic said:
    Somewhere in your code you are defining a section IRAM, which is different from a memory region IRAM. Most likely, there is a pragma somewhere that allocates something to the section IRAM.

    There should be a memory map file with the extension .map somewhere in your Debug subdirectory. That might give more clues.

    I looked through all my code and only found this.  But it seems to be some effect from the .cfg/sys-bios processing, no?

    ./Debug/configPkg/package/cfg/0_pe674.c: #pragma DATA_SECTION(ti_sysbios_heaps_HeapMem_Instance_State_0_buf__A, "IRAM");
    ./Debug/configPkg/package/cfg/0_pe674.c:__T1_ti_sysbios_heaps_HeapMem_Instance_State__buf ti_sysbios_heaps_HeapMem_Instance_State_0_bu f__A[16384] __attribute__ ((section("IRAM")));
    ./Debug/configPkg/package/cfg/0_pe674.c:__FAR__ const CT__ti_sysbios_BIOS_heapSection ti_sysbios_BIOS_heapSection__C = "IRAM";

  • I think these settings are generated based on some code in your config script. Go through the script and check if there are any HeapMem related or BIOS related settings that reference IRAM.
  • I guess it was the last statement below, in my .cfg file (now commented out, which resulted in the warning going away).

    BIOS.swiEnabled = true;
    BIOS.heapSize = 0x00004000;
    //BIOS.heapSection = "IRAM";


    Thanks,
    Robert
  • Sasha Slijepcevic said:
    I think these settings are generated based on some code in your config script. Go through the script and check if there are any HeapMem related or BIOS related settings that reference IRAM.

    Yes, as noted.  I'll close this thread out/mark answered, and open a new one for any other issues that arise.

    Thanks all,

    Robert