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.

SharedRegion Configuration

I have a sample application that creates a shared region for use by the A8 and the DSP. A buffer from the SR is being allocated and filled on the DSP, a notification is sent to the A8, and the correct data is being read from the buffer by the A8. The test application is working as it should, no problems.

Now I need to integrate this same functionality into my application. What is the process for creating a shared region within the memory map of my Netra device? According to the memory map there is a section (IPC_SR_COMMON) that is a shared region, but it is defined a cached and I require non-cached memory. There is another section (IPC_SR_HOST_DSP) that I cannot find where it is defined at all. There are memory segment definitions in OMX and there are others in Linux. Do I need to modify both? Just looking for the general process for setting this up.

Thanks,

  • Duncan,

    What SDK are you using? It will help us route your question to the correct team. It would be good to list your device and software components as well.

    In general, you must reserve a portion of the memory map for each shared region you want to create. When using SYS/BIOS on the DSP, this is typically done in a platform instance or in the platform package. Once you have the memory map setup, you then configure the SharedRegion module in your DSP executable's config script with the base address and size. I'm guessing that you are using SysLink on the host side. SysLink will discover the shared region configuration when it loads the DSP; you don't have to configure it on the host side.

    You want the shared region on the DSP to be non-cached. Keep in mind that the DSP uses MAR bits to control the cachability of external memory. Each MAR bit maps to a 16 MB block. You must keep this alignment requirement in mind when partitioning the memory map.

    It also looks like you are using OMX. If so, and if there is firmware running on the slave processors, then you need to be compatible with the existing memory map used by the firmware. You will need to consult the SDK team for details on how to add your own shared region sections.

    ~Ramsey

  • Ramsey,

    Sorry about that, I am using ezsdk_dm816x-evm_5_04_00_11 on a dm8168. It is a custom board, but very similar to the dm816x-evm.

    Yes, I am using SysLink on the host side. Thanks for the hint on the MAR bits, I'll keep that in mind.

    Yes, we are using OMX, that is where the details start getting fuzzy. Getting the test app running without having to worry about the other slaves was pretty straight forward, and works very well.

    Thanks for the reply,

  • Duncan,

    If I understand correctly, your stand-alone DSP test program works fine. Now you are trying to integrate this test program into your application which uses OMX, and hence must be compatible with the EZSDK software stack and memory map. Have I got this correct?

    I'm not on the EZSDK team, but here are some links I found which might help.

    http://processors.wiki.ti.com/index.php/EZSDK_Memory_Map - EZSDK Memory Map Overview
    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/114568.aspx - C6a816x EVM Memory Map and Syslink
    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/133141.aspx - OpenMAX on DSP & TI8168 Memory Maps

    If this still does not lead to a resolution, try a new post in this forum with a more specific title to catch the EZSDK team's eye. Something like, "How to add a shared region in the EZSDK Memory Map". You can try searching this forum as well as the http://processors.wiki.ti.com web site for similar threads.

    ~Ramsey

  • Ramsey,

    Yes, you are correct.

    I have the memory map link, but I will take a look at the other two. If these do not help, I will try your suggestion.

    Thanks for your help,

    Duncan