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.

RTOS/AM5728: Running DSP Application from Linux

Part Number: AM5728


Tool/software: TI-RTOS

I'm following this wiki page "http://processors.wiki.ti.com/index.php/Linux_IPC_on_AM57xx"

  • Here's the complete question, for some reason it got truncated from original post.
    I'm following this wiki page "processors.wiki.ti.com/.../Linux_IPC_on_AM57xx" , and I'm able to run ex02_messageq application on AM572x evm. Following the same wiki page, when I try to combine ex02_messageq with led blink example, I'm getting following errors.

    Unresolved symbol ti_utils_exit, first referenced in ./GPIO_log.obj

    What do I need to add in Linker search file path to remove this error. Or how should I fix it?

    Thanks.
  • Here's the screenshot of errors. 

  • Ahmed,

    That symbol is part of the profiling library.

    Can you add following to the configuration just before including the GPIO driver module.

    /* Load Profiling package */
    
    var Utils = xdc.loadPackage('ti.utils.profiling');

    Other way to solve this might be to remove following flags from compiler options.

    --entry_parm=address --exit_hook=ti_utils_exit --exit_parm=address --entry_hook=ti_utils_entry

    Hope this resolves your issue.

    Regard,s

    Rahul

  • After adding "var Utils = xdc.loadPackage('ti.utils.profiling'); " in cfg file, previous error is gone. Now I've getting following error.

    Description: #10099-D configPkg/linker.cmd program will not fit into available memory. run placement with alignment fails for section ".fardata" size 0x4001f4e . Available memory ranges:

    Following is my gpio_test_evmAM572x.cfg
    gpio_test_evmAM572x.cfg



    Please suggest something.
    Thanks.

  • Following is the content of linker.cmd file generated by above gpio_test_evmAM572x.cfg

    /*
    * 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"/home/ghumman/programming/CCS/beagleX15_dsp_blink_with_ipc/Debug/configPkg/package/cfg/gpio_test_evmAM572x_pe66.oe66"
    -l"/home/ghumman/programming/CCS/beagleX15_dsp_blink_with_ipc/src/ipc/ipc.ae66"
    -l"/root/ti/ipc_3_46_00_02/packages/ti/pm/lib/debug/ti.pm_null.ae66"
    -l"/home/ghumman/programming/CCS/beagleX15_dsp_blink_with_ipc/src/utils/utils.ae66"
    -l"/root/ti/ipc_3_46_00_02/packages/ti/deh/lib/debug/ti.deh_vayu.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/board/lib/evmAM572x/c66/release/ti.board.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/drv/spi/lib/c66/release/ti.drv.spi.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/drv/i2c/lib/c66/release/ti.drv.i2c.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/drv/uart/lib/c66/release/ti.drv.uart.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/drv/gpio/lib/am572x/c66/release/ti.drv.gpio.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/csl/lib/am572x/c66/release/ti.csl.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/osal/lib/tirtos/c66/release/ti.osal.ae66"
    -l"/root/ti/pdk_am57xx_1_0_7/packages/ti/utils/profiling/lib/c66/release/ti.utils.profiling.ae66"
    -l"/root/ti/bios_6_46_05_55/packages/ti/targets/rts6000/lib/ti.targets.rts6000.ae66"
    -l"/root/ti/bios_6_46_05_55/packages/ti/targets/rts6000/lib/boot.ae66"
    -l"/home/ghumman/programming/CCS/beagleX15_dsp_blink_with_ipc/src/sysbios/sysbios.ae66"
    -l"/root/ti/ipc_3_46_00_02/packages/ti/trace/lib/debug/ti.trace.ae66"
    
    --retain="*(xdc.meta)"
    
    
    --args 0x64
    -heap 0x0
    -stack 0x8000
    
    MEMORY
    {
    L2SRAM (RWX) : org = 0x800000, len = 0x40000
    OCMC_RAM1 (RWX) : org = 0x40300000, len = 0x80000
    OCMC_RAM2 (RWX) : org = 0x40400000, len = 0x100000
    OCMC_RAM3 (RWX) : org = 0x40500000, len = 0x100000
    EXT_CODE (RWX) : org = 0x95000000, len = 0x100000
    EXT_DATA (RW) : org = 0x95100000, len = 0x100000
    EXT_HEAP (RW) : org = 0x95200000, len = 0x300000
    TRACE_BUF (RW) : org = 0x9f000000, len = 0x60000
    EXC_DATA (RW) : org = 0x9f060000, len = 0x10000
    PM_DATA (RWX) : org = 0x9f070000, len = 0x20000
    }
    
    /*
    * 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.services.getset (null): */
    
    /* Content from ti.sdo.ipc.family (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.catalog.arp32 (null): */
    
    /* Content from ti.catalog.arm.cortexm4 (null): */
    
    /* Content from ti.catalog.arm.cortexa15 (null): */
    
    /* Content from ti.platforms.evmDRA7XX (null): */
    
    /* Content from ti.trace (null): */
    
    /* Content from ti.sysbios.hal (null): */
    
    /* Content from ti.sysbios.interfaces (null): */
    
    /* Content from xdc.runtime (null): */
    
    /* Content from ti.sysbios.knl (null): */
    
    /* Content from ti.sysbios (null): */
    
    /* Content from ti.sysbios.family.c64p (ti/sysbios/family/c64p/linkcmd.xdt): */
    
    /* Content from ti.sysbios.family.c66 (ti/sysbios/family/c66/linkcmd.xdt): */
    ti_sysbios_family_c66_Cache_l1dSize = 32768;
    ti_sysbios_family_c66_Cache_l1pSize = 32768;
    ti_sysbios_family_c66_Cache_l2Size = 0;
    
    /* 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.timers.dmtimer (null): */
    
    /* Content from ti.sysbios.family (null): */
    
    /* Content from ti.targets.rts6000 (null): */
    
    /* Content from ti.utils.profiling (null): */
    
    /* Content from ti.osal (null): */
    
    /* Content from ti.csl (null): */
    
    /* Content from ti.drv.gpio (null): */
    
    /* Content from ti.drv.uart (null): */
    
    /* Content from ti.drv.i2c (null): */
    
    /* Content from ti.drv.spi (null): */
    
    /* Content from ti.board (null): */
    
    /* Content from ti.deh (null): */
    
    /* Content from ti.sysbios.gates (null): */
    
    /* Content from ti.sysbios.heaps (null): */
    
    /* Content from xdc.runtime.knl (null): */
    
    /* Content from ti.sdo.utils (null): */
    
    /* Content from ti.sdo.ipc.interfaces (null): */
    
    /* Content from ti.sysbios.syncs (null): */
    
    /* Content from ti.sysbios.family.c62 (null): */
    
    /* Content from ti.sysbios.xdcruntime (null): */
    
    /* Content from ti.pm (null): */
    
    /* Content from ti.sysbios.family.shared.vayu (null): */
    
    /* Content from ti.sysbios.utils (null): */
    
    /* Content from ti.ipc.remoteproc (ti/ipc/remoteproc/linkcmd.xdt): */
    
    
    /*
    * Set entry point to the HWI reset vector 0 to automatically satisfy
    * any alignment constraints for the boot vector.
    */
    -eti_sysbios_family_c64p_Hwi0
    
    /*
    * We just modified the entry point, so suppress "entry point symbol other
    * than _c_int00 specified" warning.
    */
    --diag_suppress=10063
    
    /* Content from ti.sdo.ipc.family.vayu (null): */
    
    /* Content from ti.sdo.ipc.notifyDrivers (null): */
    
    /* Content from ti.sdo.ipc (ti/sdo/ipc/linkcmd.xdt): */
    
    SECTIONS
    {
    
    ti_sdo_ipc_init: load > EXT_DATA, type = NOINIT
    }
    
    /* Content from ti.ipc.ipcmgr (null): */
    
    /* Content from ti.ipc.transports (null): */
    
    /* Content from ti.ipc.rpmsg (null): */
    
    /* Content from ti.ipc.family.vayu (null): */
    
    /* Content from ti.ipc.namesrv (null): */
    
    /* Content from ti.sdo.ipc.heaps (null): */
    
    /* Content from ti.sdo.ipc.gates (null): */
    
    /* Content from configPkg (null): */
    
    /* Content from xdc.services.io (null): */
    
    /* Content from ti.sdo.ipc.family.ti81xx (null): */
    
    
    /*
    * symbolic aliases for static instance objects
    */
    xdc_runtime_Startup__EXECFXN__C = 1;
    xdc_runtime_Startup__RESETFXN__C = 1;
    
    SECTIONS
    {
    .text: load >> EXT_CODE
    .ti.decompress: load > EXT_CODE
    .stack: load > EXT_DATA
    GROUP: load > EXT_DATA
    {
    .bss:
    .neardata:
    .rodata:
    }
    .cinit: load > EXT_DATA
    .pinit: load >> EXT_DATA
    .init_array: load > EXT_DATA
    .const: load >> EXT_DATA
    .data: load >> EXT_DATA
    .fardata: load >> EXT_DATA
    .switch: load >> EXT_DATA
    .sysmem: load > EXT_DATA
    .far: load >> EXT_DATA
    .args: load > EXT_DATA align = 0x4, fill = 0 {_argsize = 0x64; }
    .cio: load >> EXT_DATA
    .ti.handler_table: load > EXT_DATA
    .c6xabi.exidx: load > EXT_DATA
    .c6xabi.extab: load >> EXT_DATA
    systemHeap: load > EXT_DATA
    .tracebuf: load > TRACE_BUF
    .errorbuf: load > EXC_DATA
    .resource_table: load > 0x95000000, type = NOINIT
    .vecs: load > EXT_CODE
    xdc.meta: load > EXT_DATA, type = COPY
    
    }



    Thanks.

  • Ahmed,

    Please attach source and configuration files into E2E rather than copy pasting it into the forum. The formatting of the text is lost and things are difficult to parse and follow. I have done this with your last 2 post, please use the Rich Formatting feature and attach the files in the forum.

    The same build issue is discussed here so check this post for resolution:

    https://e2e.ti.com/support/development_tools/compiler/f/343/t/576965?pi317851=2

    Hope this helps.

    Regards,
    Rahul

  • Sorry about that. I'm attaching the files now. I did follow this post(https://e2e.ti.com/support/development_tools/compiler/f/343/t/576965?pi317851=2).  Once I added  following three lines at the end of gpio_test_evmAM572x.cfg, 

    Memory.defaultHeapInstance = Program.global.heap0;
    Program.sectMap["systemHeap"] = Program.platform.stackMemory;
    Program.sectMap[".fardata:benchmarking"] = "DDR3";

    the error changes to: 


    #10099-D configPkg/linker.cmd program will not fit into available memory. run placement with alignment fails for section ".fardata:benchmarking" size 0x4000000

    #10265 configPkg/linker.cmd no valid memory range(null) available for placement of ".fardata:benchmarking"

    Following screenshots show my CSS General Settings. 

    3644.gpio_test_evmAM572x.cfg

  • One difference I noticed between my error and error given in this post (e2e.ti.com/.../576965 is that my error doesn't say what are the available memory ranges where as error in that post says Available Memory Ranges: L2SRAM size: 0x80000 unused: 0x7ef72 max hole: 0x7ef6c. Is there anything else I need to add in cfg file to define memory ranges?

    Thanks Rahul for your help.
  • The compilation problem is resolved. What I did is instead of following Rahul's first solution, I followed his second solution which is removing these flags from compiler options: --entry_parm=address --exit_hook=ti_utils_exit --exit_parm=address --entry_hook=ti_utils_entry and magically the problem got resolved.

    Thanks Rahul.
    I appreciate your help.