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.

C6657: OpenMP example fails

hi,

I trried to examine the basic OpenMP example (http://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_User_Guide#Multicore_Hello_World_Example) on my C6657 EVM. After setting the number of Processor to 2 and creating a platform with MSMCRAM_NOCACHE section, I get the following error:

 

With this failure signature it is difficult to find out what is going wrong. Any idea to solve the problem?

Thank you. Regards, Gregor

  • Nobody any idea or any hint what I could check additionally?

  • What is the exact error?

     

    When you're changing the number of processors, make sure you're updating the value in the .cfg file and in the .c file.

  • hi Chris,

    thank you for reply!

    I got the error above (screen shot): unresolved symbols: #10234-D.

    The unresolved symbol ist "omp_qmssGblCfgParams".

    I found this variable in Navigator.c (see below), but do not know how to interprete this error message.

    > in .c file, I changed to: #define NTHREADS 2

    > in .cfg file, I changed to: OpenMP.setNumProcessors(2);

     Thanks for help!

    Regards, Gregor

  • Hi Gregor,

    Based on the screenshot in your most recent post, it seems that the error is unrelated to your changes.  This is a build error, so changing the number of OMP cores shouldn't be causing this.

    I noticed your first post mentions you're using the C6657EVM, and your most recent post indicates you have the C6678 OMP example project.  Which hardware are you using?

    So to recap,

    1. Did the project work & run successfully before you made any changes?
    2. Check the "MCSDK PDK" you are using: is it TMS320C6657 to match your hardware?  (Look in Project Properties -> General -> RTSC tab)
  • HI Chris,

    thanks for your ideas. Actually my explanations got a bit confusing in my last post. Sorry for that.

    I have the C6657 EVM (TMDSEVM6657LS).

    > I copied the OMP - HelloWorld example from the link in the first post:

    > When I choose the ti.omp.examples.platforms.evm6678 (just for testing), no building errors, but after loading the .out to my platfrom it runs directly and I do not get any output. That's way I assumed the changing to the right platform might be a good idea.

    > When I choose the ti.platforms.evm6657 (there is no omp.examples.platform fpr 6657 as I know), I get the following error:

    > After some search online, I created my own platform, based on the C6657 device:

    > When I try to build this, I get the error described above:

    Unfortunately I do not know how to look inside the ti.omp.examples.platforms.evm6678. This would be quite interesting I guess.

    Actually I just wanted to have some basic example for C6657 with using the Multicore functionality, as I want to use this in future. Maybe you know some alternative way?

    Thanks+Regards. Gregor

  • I'm not sure yet what those errors mean.

    I also suggest going back to the C6678 platform.  You mentioned that it built without error, so I would do that and take special care to make sure you start the OpenMP project correctly on the cores.  Follow the guidance on the previous link, and make sure you "Group" the cores and hit "execute" on all of them at the same time.  (They should all be paused/suspended before you hit run/execute on the group).

    GregorS said:

    Unfortunately I do not know how to look inside the ti.omp.examples.platforms.evm6678. This would be quite interesting I guess.

    To do this, one way is to look at the .map file generated.  (It should be in the "Debug" folder in your project).  So, first, make sure that ti.omp.examples.platforms.evm6678 platform is selected in the project properties.  Then build.  Now you can open the .map file, and it'll show you the memory sizes and locations (L2, MSMCSRAM, DDR, etc.).  It will also show you where the different code sections (e.g. .data, .far, .cinit, .bss, etc) are located in memory and how large they

    To see a few other details, look in the linker.cmd file.  Both the linker.cmd and the .map files are automatically generated when you have a good (i.e. successful) build.

    GregorS said:

    Actually I just wanted to have some basic example for C6657 with using the Multicore functionality, as I want to use this in future. Maybe you know some alternative way?

    If you want to use OpenMP, you must be careful when merging it with other "common" SYS/BIOS software components.  I asked about this in another thread of mine:

    If/how you use OpenMP depends on your application, really.

    Also, in general, this document is a start for Multicore programming.  (It gives good ideas, but sadly no help on implementation).

    • http://www.ti.com/lit/an/sprab27b/sprab27b.pdf 

    You can also try the IPC C6657 example CCS projects: there is one for IPC's MessageQ & one for IPC's Notify.  They run on multiple cores and show off some of the multicore communication functionalities.