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.

Parallel Processing on OMAP-L138 possible?

Other Parts Discussed in Thread: OMAP-L138, OMAPL138

Hi,

I'm new to developping software on the OMAP-L138. I've already completed the following steps:

1.) Followed steps from Logic PD's OMAP-L138 Quick Start Guide to set up the board

2.) Executed some basic DSP-side examples with CCSv5 and GEL-Files from the BSL-Module

3.) Set up the DVSDK on a Linux-Host

4.) Set the Board to boot from tftp with nfs

5.) Run the basic DSPLink Examples

What i'm trying to do now is to let the two processors (DSP and ARM) work parallel. My idea was to somehow start an application on the DSP-side which runs forever (or until the board is powered off again) and nevertheless being able to work on the ARM with Linux. The next step would be to write a Linux application which is able to connect to the running DSP and retrieve the actual result of the calculation. After that the DSP should continue running the application loaded at the beginning. (An alternative for the last step would be writing and reading to shared memory so that the DSP doesn't have to be interrupted).

Any ideas how this could possibly work?

Regards Fabian

  • Fabian,

    Yes, the OMAP-L138 architecture allows you to do just that.You could device a custom method or use DSPLink to let the DSP flag the ARM after it is done processing the data and the ARM can copy it to another location/buffer as the DSP continues processing the next (frame of?) data.

    The following links will help with a better understanding of the boot process:

    http://processors.wiki.ti.com/index.php/OMAP-L138_Bootloader.

    http://www.ti.com/lit/an/sprab41d/sprab41d.pdf

    Regards,

    Sunil Kamath

  • Hi Sunil,

    Thanks for your answer :) I now have some further questions:

    1.) If I use DSPLink, I have to start the process in the background (like ./sampleapplication & ) for being able to work with Linux in parallel right?

    2.) The command for pausing the process (Ctrl + Z) isn't working, but all other commands (Ctrl + C or kill %processId) are working, any suggestions?

    3.) How do I prevent other applications from accessing the memory region where the arm has copied the results from the DSP to? And how do I allow one special application (not the one copying the data to a memory region) to access the results?

    Thanks in advance

    Fabian

  • Hi Fabian,

    If you use DSPLINK, you don`t necessarily need to have the process run in the background but that can be an option to allow other processes to run in parallel in Linux.

    Not sure the Ctrl+Z option is supported in the Linux PSP distribution, you might want to check this on the Linux forums.

    It is the system integrates responsibility, to partition the system in such a way that the two processors do not use overlapping memory regions or there is a semaphore based mechanism to access shared memory.  In addition to that OMAPL138 has Memory protection feature that prevents different masters in the SoC from accessing a region that is owned by a particular master. You can refer to this thread to understand and implement this on the SoC.

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/158135.aspx

    Regards,

    Rahul