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.

locating memory segments while using VLPB OMX DSP example on TI816x

I am using VLPB OMX example for porting code for the DSP. This code requires a large amount of data memory. I am locating the data memory in the logical segment ".far" which is located in the physical segment DSP_DATA at address 0x99500000. The allocation fails due to insufficient memory size.

I see in http://processors.wiki.ti.com/index.php/EZSDK_Memory_Map that there are two big physical memory segments DSP_ALG_HEAP in address 0x98000000 and CMEM at address 0x96C00000.

How can i allocate statically my data memory in one of these segments? Or alternatively is there another physical segment dedicated for the DSP where i can locate my data memory? If so how can this be done?

Thanks,
Gabi 

  • Hi TI experts

    Can anyone answer this please?

  • The sections DSP_ALG_HEAP  and CMEM  are presently used by applications other than OMX (like the C6Accel) and using these sections might lead to resource conflicts if you plan to use C6 tools.

     

    On top of it, OMX (DOMX to be exact), needs that all data pointers come from pre-defined Shared Regions so that data pointers can portable across A8 and DSP.

    Archith


  • Hi Archith,

    Thanks very much for your answer.
    So what do you suggest to do in our case when we are calling DSP through OMX and for the DSP processing a lot of data memory is required but there is not enough memory size in DSP_DATA at address 0x99500000?

    Thanks,
    Gabi 

  • In Addition to my previous post i want to add that first i am not intending to use C6Accel only the OMX and second that the allocation i am doing in the DSP are used locally on the DSP and the final data will be placed on the buffers allocated as output buffers of the OMX VLPB component.

  • well i figure it out myself so to whom ever may be concerned about this issue do as follows:

    1) In /ezsdk/component-sources/omx_xx_xx_xx_xx/packages/ti/omx/buildMemSegmentDefinition.xs file add the desired segment, for example:

     

      memory[i] = ["DDRALGHEAP",

      {

              name: "DDRALGHEAP",

              base: 0x98000000,

              len:  0x01400000,

              space: "code"

      }];

     

    2) In ezsdk/component-sources/omx_xx_xx_xx_xx/packages/ti/omx/demos/dm81xx/AppMemSegPlacementCfg.cfg in function init() do section mapping to memory regions, for example:

     

    Program.sectMap[".xxx_data"]        =  "DDRALGHEAP";

     

    3) In application use #pragma DATA_SECTION(variable_name, ".xxx_data")