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.

EVM6678L openmp hello world example doesn't print anything

Hi,

  I'm using CCS5.5 to run the openmp hello world example on TMDXEVM6678L board. Nothing wrong before I loaded the .out file in 4 of the 8 cores, I group the first 4 cores and load the .out file together in that group. But when I run the program, the cores are indicated running, but no print results displayed in the console. And I notice when I loaded the program, there is an error message: 

Can't find a source file at "/db/ztree/library/trees/xdctargets/xdctargets-g32x/src/ti/targets/rts6000/boot.c" 

I don't know what it is. Someone who has any advice, thank you very much.

Jie

  • Hi Jie,

    Please try the following:

    1. Launch your target configuration for your 6678 EVM in CCS Debug perspective

    2. 'Connect Target'

    3. Now for each core, select the core, go to "Tools--> Debugger Options --> Auto Run and Launch Options." Now uncheck the box that says, 'On a program load or restart.'

    4. After completing step 3 for all cores, click on 'Remember my settings'

    5. Now load your .out file on the cores. After loading is completed, cores should be in suspend mode, and at the symbol __c_int00().

    6. Now run the cores

  • Hi Uday,

       Thanks for you replying. I did exactly the same thing as you said, after loading the program, all the cores are suspended and at the symbol __c_int00(), which I think is the entry of main function. Then I click resume to run the program, all cores are in running mode, but no results are outputted.

      Perhaps I think the configure file has some incoherency with my debugging procedure, the number of cores is set 4 in the .cfg file but I have 8 cores connected? Another thing is that when programming with OpenMP, the program seems to treat the DSPs as general CPUs, right? Is there any method to exploit the C6678 DSPs' specific characteristics, acceleration for example?

      Thank you again.

      Regards,

      Jie

     

    Uday said:

    Hi Jie,

    Please try the following:

    1. Launch your target configuration for your 6678 EVM in CCS Debug perspective

    2. 'Connect Target'

    3. Now for each core, select the core, go to "Tools--> Debugger Options --> Auto Run and Launch Options." Now uncheck the box that says, 'On a program load or restart.'

    4. After completing step 3 for all cores, click on 'Remember my settings'

    5. Now load your .out file on the cores. After loading is completed, cores should be in suspend mode, and at the symbol __c_int00().

    6. Now run the cores

  • Hi Jie,

    Yes please try again with changing OpenMP.numProcessors to 8. Let us know if this solves your issue.

    The OpenMP APIs used in the C files are generic, but the configuration file, memory map and CCS project you are using is implemented for the C66x DSP and the C6678 device. You can still leverage the other features of the DSP. What specifically are you looking to do?

  • Hi Uday, I think I got it. When the cores connected are more than that specified in the cfg file, the program should work, though not all the cores are used for multi-thread, but at least the number of cores specified in the cfg file are used. If the cores are less than that in cfg file, then my problem will occur. But still, the message "Can't find a source file at "/db/ztree/library/trees/xdctargets/xdctargets-g32x/src/ti/targets/rts6000/boot.c" still occurred, while it did no harm to the running process, at least for now. 

    For C66x DSPs, they are powerful and I was wondering if they have special instructions for some computing intensive works such as fft or for real-time works which require large bandwidth such as recognition based on video? If so, it should be programmed different from c programs with OpenMP APIs? I don't know if I understand it correctly.

    I also have a panda board with me, the DSP (dsp core actually) on it is C64x which should be in the same family with C6678 (C6000). On the panda board, some workload can be off-loaded to the DSP to save power and shorten processing latency. How about the C6678, does it have similar characteristics (maybe not power efficiency, but performance efficiency)?  

    Thanks anyway.

    Regards,

    Jie