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.

LAUNCHXL-F28P65X: Multicore project CCS Theia

Part Number: LAUNCHXL-F28P65X
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

Tool/software:

Hello,

I try to setup a multicore project in CCS Theia. There is an example project in C2000Ware for multicore microcontrollers. It uses a third project which combines the CPU1 and CPU2 project.

This example uses sysconfig which I don’t want to use.

 

The second example project does not use sysconfig but does not use a multicore project.

 

I tried to setup this multicore project by myself, but I cannot change the project type. In CCS the project type can be changed by creation of new projects:

 

In CCS Theia, at creation is this option not available, and after creation it cannot be changed anymore:

 

How does this setup work in CCS Theia. I would like to have this multicore project so I can build, load, connect and debug both cores. I found the following resources, but they do not help for CCS Theia:

https://software-dl.ti.com/C2000/docs/C2000_Multicore_Development_User_Guide/_static/pdf/C2000_Multicore_Development_User_Guide.pdf

https://software-dl.ti.com/ccs/esd/documents/application_notes/appnote-system_project_debug_launch.html

 

Does anyone know how to do this or have any recourse for this?

Best regards,

Roman

  • Hi Roman,

    If you're not using SysConfig, then you don't need the third project. Each CPU can have their own project respectively.

    Best,

    Ryan Ma

  • Hey Ryan,

    Yes, I tried that, and it worked. With this third system-project I could load and connect to both cores directly. Are those system-projects not implemented in Theia yet?

    Best regards,

    Roman

  • Hi Roman,

    Let me walk you through on how to create a non sysconfig based multi core project using the "System" project that ties together the other two projects.

    The following folder structure must be used within 

    1. Create a new empty folder within c28x_dual folder

    • C:\ti\c2000\C2000Ware_5_03_00_00\driverlib\f28p65x\examples\c28x_dual\led_multi_no_syscfg

    2. Create another folder within the new folder called CCS

    3.  Within the CCS/ folder create a project spec, here is an example

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <projectSpec>
    <project
    name="led_ex3_blinky_sysconfig_multi"
    configurations="
    CPU_FLASH,
    CPU_RAM,
    CPU_LAUNCHXL_FLASH,
    CPU_LAUNCHXL_RAM,
    "
    device="TMS320F28P650DK9"
    outputType="system"
    cgtVersion="22.6.1.LTS"
    >
    <pathVariable name="C2000WARE_ROOT" path="../../../../../../" scope="project" />
    <file path="../system.xml" action="copy" openOnCreation="false"/>
    <configuration name="CPU_FLASH"
    ></configuration>
    <configuration name="CPU_RAM"
    ></configuration>
    <configuration name="CPU_LAUNCHXL_FLASH"
    ></configuration>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2. Go up one folder, within led_multi_no_syscfg, Create these two example ipc files for each cpu

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //#############################################################################
    //
    // FILE: led_ex2_blinky_sysconfig_cpu1.c
    //
    // TITLE: SysConfig LED Blinky Example
    //
    //! \addtogroup driver_dual_example_list
    //! <h1> LED Blinky Example</h1>
    //!
    //! This example demonstrates how to blink a LED using CPU1 and blink another
    //! LED using CPU2 (led_ex1_blinky_cpu2.c).
    //!
    //! \note In the default CPU2 linker cmd file, GS4, FLASH_BANK3 and FLASH_BANK4
    //! are used for allocating various CPU2 sections. The CPU1 application
    //! assigns the ownership of these memory regions to CPU2 by using SysConfig.
    //! Please note that CPU2 .out file can be loaded only after CPU1 completes
    //! this configuration.
    //!
    //! The erase setting (CPU1/CPU2 On-Chip Flash -> erase setting) needs to be
    //! configured as selected banks only (Choose the corresponding BANKS allocated
    //! for CPUs) or necessary sectors only before loading CPU1/CPU2.out file
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //#############################################################################
    //
    // FILE: led_ex2_blinky_sysconfig_cpu2.c
    //
    // TITLE: SysConfig LED Blinky Example
    //
    //! <h1> LED Blinky Example (CPU2) </h1>
    //!
    //! This example demonstrates how to blink a LED using CPU2.
    //!
    //! \note In the default CPU2 linker cmd file, GS4, FLASH_BANK3 and FLASH_BANK4
    //! are used for allocating various CPU2 sections. The CPU1 application
    //! assigns the ownership of these memory regions to CPU2 by using SysConfig.
    //! Please note that CPU2 .out file can be loaded only after CPU1 completes
    //! this configuration.
    //!
    //! The erase setting (CPU1/CPU2 On-Chip Flash -> erase setting) needs to be
    //! configured as selected banks only (Choose the corresponding BANKS allocated
    //! for CPUs) or necessary sectors only before loading CPU1/CPU2.out file
    //! (This is applicable only for FLASH configuration)
    //!
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    3. The last step is creating the system.xml file that is referenced from the projectspec in the same folder

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <system>
    <project configuration="@match" id="project_0" name="led_ex3_c28x_dual_blinky_cpu1">
    </project>
    <core id="C28xx_CPU1" project="project_0"/>
    <project configuration="@match" id="project_1" name="led_ex3_c28x_dual_blinky_cpu2">
    </project>
    <core id="C28xx_CPU2" project="project_1"/>
    <preBuildSteps>
    </preBuildSteps>
    <postBuildSteps>
    </postBuildSteps>
    </system>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Your final folder should look like this

    Within CCS/ folder:

    Within CCS Theia, you should see this led_ex3_blinky_sysconfig_multi project that references the other two core application projects

    Best regards,

    Ryan Ma

  • Hey Ryan
    Thank you for your help. It worked to set up this multi core template project.
    But overall, it is so hard to get things running in Theia. No idea how to set up a static library, setting up the debug configuration and so on. Also, not a lot of help can be found online, maybe it is just too early. I think it is better to start without Theia and start with the normal CCS.
    Best regards,
    Roman