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.

MCU-PLUS-SDK-AM263X: Multi-Core Using A Single .out File

Part Number: MCU-PLUS-SDK-AM263X

Hello,

I'm using the AM263x Control Card and dock.

My company requires a multi-core project built using a single .out file/single CCS project. At the moment, we just want to use the debugger (DevBoot Mode).

There is a multi-core example which has a project per core: C:\ti\mcu_plus_sdk_am263x_08_05_00_24\examples\drivers\ipc\ipc_notify_echo\am263x-cc

But I couldn't find a multi-core project built from a single CCS project.

<Questions>

1) Is there a multi-core example project that is built using a single CCS project (.out) file?

2) Is a multi-core project with a single CCS project (.out) file even possible in principle? Other processor toolchains (e.g AURIX) are able to do this. 

Thank you very much.

  • Turns out, in principle, the answer is yes. I modified Hello World and assigned two cores to the same .out file built using a single CCS project.

    It seems to work:

    So...

    3) If it is possible, then what is the rationale to have multiple CCS projects for a multi-core project? Think I'm missing something....big.

  • Hi Kier,

    What approach we follow is to generate multiple .out files for multicore projects which are then loaded in that core through CCS. There is a specific reason for that.

    In your above application, we just had a simple log being printed in the terminal. When you work with peripherals in a bit complex project, each peripheral instance will have different configurations for each core. For reference, take GPIO, each core will have different GPIO instance and bank configuration.

    Due to the configurations being a bit different for each core, it is recommended to generate multiple .out files rather than having a single .out file and a lot of if else conditions based on cpuID in your code.

    Regards,
    Shaunak

  • Hi Shaunak,

    Thank you very much.

    In the example linker scripts, there is the following comment and accompanying different memory origins for different cores :

        /* when using multi-core application's i.e more than one R5F/M4F active, make sure
         * this memory does not overlap with other R5F's
         */
        OCRAM     : ORIGIN = 0x70040000 , LENGTH = 0x40000

    So the only reason for the above is because there is an assumption that there will be multiple .out files in a multi-core project. Is my understanding correct please?

  • Hi Kier,

    The linker.cmd was designed that way to have the Out of box SDK experience to be spot on. The RAM was divided into 4 parts for each core to get dedicated memory which is non-overlapping.

    It is not a compulsory thing that a multicore project will have multiple .out files but it is recommended that you develop the multicore project the way SDK supports it. That is, multiple .out files. When you would work with certain peripherals as mentioned above (GPIO), the Autogenerated files under the generated/ folder will be slightly different for different cores. Same will be the case with Syscfg, since a lot of peripheral instances are allotted to a specific core.

    When it comes to building simple applications such as the one shared above, it wouldn't matter much since you don't have much going on there, but in case of complex applications, it might break the functionality if not developed carefully.

    Regards,
    Shaunak

  • Thank you Shaunak. That makes sense.