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.

How to use dual core in c code for parallel processing on panda board by using OMAP 4430 processor ...?

Hi ,

I am using the panda board with dual core cortex A9 processor with core 0 and core 1.

I am working on windows platform with ccs v 5.1.

I want to access the both the cores...

How can i access this....???????

(

My idea:

i want to use both the cores for my applications .Want to do  for parallel processing of the data ,

Like, parsing of 1st  Macroblock by core1 in one frame of video and simultaneously processing of the 0th Macroblock by core 0 in same frame.

Parallel  parsing and processing by using two cores..

But i don't know how to do this in c code..

Like , If i will take  some macro,

For example

#define core0

--

processing()

--

and

#define core 1

--

parsing()

--

.

But what is that particular macro that i have to use ?????

I know one setting in CCS v5.1 where  I can make one core as master and one as slave but I am not that much confidant on this for parallel processing..

Just guide me.......

Regards,

Studinstr.

  • Please Reply !!!!!!!!!!!!!!!!!!!!1

  • Please Reply ...

    -Studinstru

  • I think my question is not wrong and i put correct question in proper form too..

    But still i am not getting the answer from your side ....

    -Studinstru

  • Do you mean one application running in both processors at same time?

  • To read about it you can check libc documentation,

    ./arm-2010q1/share/doc/arm-arm-none-linux-gnueabi/pdf/libc.pdf

    Chapter 22: Resource Usage And Limitation

    Exact link about using one or assigning a CPU

    22.3.5 Limiting execution to certain CPUs.

    This chapter contains useful information about resources and its uses.

    Check the index for more information.


  • This file libc.pdf belongs to the tool chain used in 4AI releases

    for example see

    http://omapedia.org/wiki/4AI.1.4-P1_OMAP4_Icecream_Sandwich_Release_Notes

    look for

    Tool Chain for building Kernel and Drivers

    The Kernel and Driver sources are built using Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux version (This particular version is needed for the AFS to work properly).

    This tool chain can be obtained from [2].

    It contains a link to download the tool chain, the file is contained inside this package.

  • @Israel.

    Ya i want to use both cpu.

    At least i want to access the core 1(as two cores are there  core0 and core1  in omap4430).

    I want to do parallel processing by using this idea.

    Is it possible to do this or shall i think other ....

    Any modification i have to do in gel files of cortexA9_core1 to access the core 1.

    As there is one option in ccs v5.1 regarding accessing the cortexA9_core1 by making it slave processor.

    But am getting some error after this.. Shall i modify the .cmd file to access the core 1

    If it work (accessing core1 only )then ,I 'll go with the using dual core....

    Please comment on this.....!

    As i am waiting for your guidance !!!!!!!!!!!!!

    -Studinstru

  • As I am working on CCS v5.1 in windows Platform,

    I am not able to work on drivers and kernal for any modification for accessing the core1.

    So instead of this , any other way to access the core 1??????

    -Studinstru.

  • @Manuel,

    Thanks for the reply.

    I am not able to access the link:

    ./arm-2010q1/share/doc/arm-arm-none-linux-gnueabi/pdf/libc.pdf

    -studinstru

  • I think it is possible, but your application may consist on two process, so what comes to my mind is that you can make a fork and then tie the process to one cpu. ie parent to cpu0 and child to cpu1. Then you can keep the process in sync to avoid duplicating jobs by using IPCs.

    There are some books that can give you more details of how to do that or also internet is a good resource.

    ie: Linux System Programming is one of my favourites where I learned a lot.

    About CCS I am not that familiar with that, you may look for documentation and/or ask in the CCS forum.

  • Sorry I forgot you mentioned about CCS, there is a function in IPC tools.

    ./ipc_1_23_01_26/packages/ti/ipc/MultiProc.h
    /*!
     *  @brief      Sets executing processor's MultiProc id
     *
     *  @param      id  MultiProc id
     *
     *  @return     MultiProc status:
     *              - #MultiProc_S_SUCCESS: MultiProc id successfully set
     *              - #MultiProc_E_FAIL:    MultiProc id cannot be set at this time
     */
    Int MultiProc_setLocalId(UInt16 id);

    There are some post for this file in BIOS forum, and other forum is Code Composer Forum

    In CCSv5 installation directory you can find the IPC tools directory inside there is a doc directory that contains IPC_Users_Guide.pdf and a HTML help.

    ./ipc_1_23_01_26/docs/cdoc/ti/sdo/utils/MultiProc.html

    that is found by accessing index.html

    /ipc_1_23_01_26/docs/cdoc/index.html

    you could search for help too in http://processors.wiki.ti.com

    About libc.pdf file you need to download the tool chain tarball to get access to the file, try doing a file search in the whole directory.