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.

RTOS/TMDSEVM6678: Multitasking on multicore C6678

Part Number: TMDSEVM6678

Tool/software: TI-RTOS

Dear all,

I am a newbie to the TI development tools and processor. So please excuse the maybe very novice question. I am building an application on EVM-6678, Code Composer Studio v7.4

1. The primary question: If I build a SYS/BIOS application with say 5 tasks and load it on all cores of the C6678, does the SYS/BIOS kernel dynamically schedule the 5 tasks on 5 of the 8 cores. If yes, can I get the Core ID on which any of the task is presently executing. Please guide me to a relevant updated document pertaining to CCS v7.4. 

2. Can I mix SYS/BIOS application to use OpenMP. Is it possible that one of the tasks above uses openMP constructs to parallel execute a loop on 4 cores of C6678. Is any such sample code available and updated document available. Please guide.  

Regards

Harash

  • The team is notified. They will post their feedback directly here.

    BR
    Tsvetolin Shulev
  • Hi Harash,

    No, SYS/BIOS kernel will not dynamically schedule your tasks to cores unless you manually load/schedule the tasks to cores based on core ID.

    Yes OpenMP is an option as you have explored. You can configure the index of the master core and the number of cores available to the runtime, e.g.
    var OpenMP = xdc.useModule('ti.runtime.ompbios.OpenMP');
    OpenMP.masterCoreIdx = 0;
    OpenMP.numCores = 3;
    see details here: downloads.ti.com/.../configuring_runtime.html

    Regards,
    Garrett
  • Hi Garrett

    Thanks for the quick informative reply. I need to know one more thing. Can my application have a mix of both: SYS/BIOS tasks and some of these tasks use OpenMP to hasten the execution of some number crunching routines. I will slightly elaborate on this. My application has a set of modules that need heavy processing. I want to speed these up by use of OpenMP. The application also has a set of co-ordinating modules that need to be executed at regular intervals, perform a very small activity like send / receive some data over ethernet or UART or capture some data from some sensor and then go to sleep. I want to run these as classical SYS/BIOS tasks since I liked the TI support available for these for scheduling, Task_sleep, inter-task communication, NDK, etc. Is building such an application possible. Please suggest. I am totally lost on how to go about it.

    Regards

    Harash

  • Hello. I made a project based on "NIMU_emacClientExample" and integrated omp functionality into it using openmp examples. So in main() function tasks are created and in some tasks OpenMP is used for processing. So core0 is responsible for sending/receiving data and other cores are used for processing when needed. If this is the case you mean, then yes, it is possible.
  • Thanks Sergey for the wonderful positive reply. That relieves me of a lot of stress. Looks like this is what I am aiming at. I tried to make one such application but did not work out. It would be helpful if you can guide me a bit on that. I am using CCS v7.4 with TMDSEVM6678. As I understand,

    a. I need to create a SYS/BIOS application

    b. Add OpenMP support to the project

    c. Modify the configuration file to include OpenMP requirements

    d. Create a new Platform to include OpenMP support.

    Please tell if I have missed out anything. Or if I am totally off. Please guide. Thanks

    Regards

    Harash

  • Yes, all is correct. My steps:

    1. Create a working project "NIMU_emacClientExample".

    2. In project properties write predefined symbols: SOC_6678, DEVICE_C6678, USE_BIOS

    3. Create a new platform (based on "ti.runtime.openmp.platforms.evm6678").

    4. Modify *.cfg (actually it is a mix of the one from "client.cfg" and "omp_config.cfg").

    5. In project properties activate compiler support for OpenMP.

    6. Create new tasks before BIOS_start() in main().

    7. Use omp in created tasks.

    * my configuration (old SYS/BIOS, XDCtools because of incompability while using openMP libraries)

    • CCS v7.3
    • Compiler TI v8.2.2
    • SYS/BIOS 6.46.5.55
    • XDCtools v3.32.1.22
    • IPC v3.46.2.04
    • NDK v2.25.1.11
    • OpenMP v2.6.2.00
    • PDK v2.0.7
  • Thanks a lot Sergey. I was finally able to put things together and get application with SYS/BIOS and OpenMP support. I started with a New CCS RTOS Typical Project. Followed the steps suggested and the application is up.

    I would like to indicate for all other people attempting a similar application that default package versions were used for the purpose.

    CCS v7.4

    Compiler v8.2.2

    SYS/BIOS 6.52.00.12

    XDCtools 3.50.4.43

    IPC v3.47.0.0

    OpenMP v2.6.2.1

    PDK v2.0.8

    Once again I thank the community  and Mr. Sergey for the help.

    Regards

    Harash.