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.

run rtos without ddr ram

I am working on a custom board using the C6748 DSP.  This board will include mDDR RAM, but having the mDDR running is not my first priority.  I have other more critical functions to verify first.  Is it possible to have the TI-RTOS not use the DDR memory space and have the TI-RTOS run from the 128 kb SRAM instead?

Thanks,

Tobyn

  • Hi Tobyn,

    Yes. You can run any program (RTOS/'C' app) on internal memory (L1/L2/L3(shared RAM)).

    Just we have to configure the memory in .cfg file.

  • How do I do this?  When I go to the Program tab in the TI-RTOS .cfg file, I see a Platform Information tab, which lists DDR for all the key memory areas.   However, I do not see a way to change this.  If I click the help link, it takes me to a web site (http://rtsc.eclipse.org/docs-tip/Demo_of_the_RTSC_Platform_Wizard_in_CCSv4) that is for an older version of CCS.  I'm guessing I need to create a new platform file?  How do I do this in CCSv5?


    Thanks,

    Tobyn

  • Hi Tobyn,

    Sorry for the delayed response.

    http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#3_Placing_SYS.2FBIOS_code_in_different_memory_segments

    We can also add "linker.cmd" file into your RTOS project to mention where we can run the code.

    http://www0.egr.uh.edu/courses/ece/ece4437/labsupport/TI-RTOS/TI_RTOS_Kernel_Workshop/TI_RTOS_Kernel_Workshop_Student_Guide_rev2.10.pdf

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/359410.aspx?pi301055=1

    Ex:

    /*
     * 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"D:\TI_RTOS_C6000_examples_sols\Sols\Test_HWI\blink_C6000_HWI_SOL\Debug\configPkg\package\cfg\app_pe674.oe674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\uia_2_00_00_28\packages\ti\uia\sysbios\lib\release\ti.uia.sysbios.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\uia_2_00_00_28\packages\ti\uia\loggers\lib\release\ti.uia.loggers.ae674"
    -l"D:\TI_RTOS_C6000_examples_sols\Sols\Test_HWI\blink_C6000_HWI_SOL\src\sysbios\sysbios.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\uia_2_00_00_28\packages\ti\uia\services\lib\release\ti.uia.services.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\uia_2_00_00_28\packages\ti\uia\runtime\lib\release\ti.uia.runtime.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\uia_2_00_00_28\packages\ti\uia\events\lib\release\ti.uia.events.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\bios_6_40_01_15\packages\ti\targets\rts6000\lib\ti.targets.rts6000.ae674"
    -l"C:\ti\tirtos_c6000_2_00_01_23\products\bios_6_40_01_15\packages\ti\targets\rts6000\lib\boot.ae674"
    
    --retain="*(xdc.meta)"
    
    
    --args 0x0
    -heap  0x0
    -stack 0x400
    
    MEMORY
    {
        IROM (RX) : org = 0x11700000, len = 0x100000
        IRAM (RWX) : org = 0x11800000, len = 0x40000
        L3_CBA_RAM (RWX) : org = 0x80000000, len = 0x20000
        DDR : 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.hal (null): */
    
    /* Content from xdc.rta (null): */
    
    /* Content from ti.uia.events (null): */
    
    /* Content from ti.uia.runtime (null): */
    
    /* Content from xdc.runtime.knl (null): */
    
    /* Content from ti.sysbios.rts (ti/sysbios/rts/linkcmd.xdt): */
    
    /* Content from ti.sysbios.family.c62 (null): */
    
    /* Content from ti.sysbios.family.c64p.primus (null): */
    
    /* Content from ti.uia.services (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.evm6748 (null): */
    
    /* Content from ti.sysbios (null): */
    
    /* Content from ti.sysbios.knl (null): */
    
    /* Content from ti.sysbios.family.c64p (ti/sysbios/family/c64p/linkcmd.xdt): */
    
    /* Content from ti.sysbios.syncs (null): */
    
    /* Content from ti.uia.loggers (null): */
    
    /* Content from ti.sysbios.gates (null): */
    
    /* Content from ti.sysbios.xdcruntime (null): */
    
    /* Content from ti.sysbios.timers.timer64 (null): */
    
    /* Content from ti.sysbios.utils (null): */
    
    /* Content from ti.uia.sysbios (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;
    TSK_idle = ti_sysbios_knl_Task_Object__table__V + 0;
    
    SECTIONS
    {
        .text: load >> DDR
        .ti.decompress: load > DDR
        .stack: load > DDR
        GROUP: load > DDR
        {
            .bss:
            .neardata:
            .rodata:
        }
        .cinit: load > DDR
        .pinit: load >> DDR
        .init_array: load > DDR
        .const: load >> DDR
        .data: load >> DDR
        .fardata: load >> DDR
        .switch: load >> DDR
        .sysmem: load > DDR
        .far: load >> DDR
        .args: load > DDR align = 0x4, fill = 0 {_argsize = 0x0; }
        .cio: load >> DDR
        .ti.handler_table: load > DDR
        .c6xabi.exidx: load > DDR
        .c6xabi.extab: load >> DDR
        .vecs: load > DDR
        xdc.meta: load > DDR, type = COPY
        xdc.noload: load > DDR, type = COPY
    
    }
    

  • The details on how to write the custom linker file make sense, but I am not sure how to implement it or verify it is working properly.  I created a simple custom linker file, which is attached (note: I had to change the extension to .txt to post it here).  My code now builds without error.  However, I get the following error when I go to debug the code:

    C674X_0: File Loader: Data verification failed at address 0x11700000 Please verify target memory and memory map.
    C674X_0: GEL: File: E:\FE_I2C_control\Debug\AFE_TI_cmd.out: a data verification error occurred, file load failed.

    Is there anything special I need to do when using a secondary linker file?

    Thanks,
    Tobyn