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.

TMS320F28388D: How to use CPU1 and CPU2 together

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

Hi All,

I am using TMS320F28388 controller for my project. With CPU1 I am able execute/debug my code.

Now I am planning to use CPU1 and CPU2.

1. What are the project configuration changes required to use both the cores?

2. How to debug both the cores.

Thanks in advance

Regards

Dipin

  • Hi Dipin,

    Please take a look at the C2000Ware DriverLib example for dual core at:

    C/ti/c2000/C2000Ware_4_01_00_00/driverlib/f2838x/examples/c28x_dual/led

    Basically, You can start with empty_project with dual_core, and it will set up the project include path and linker path for your.

    Here is the link which walks through 'debugging multicore with CCS':

    https://software-dl.ti.com/ccs/esd/documents/ccs_multi-core-debug.html

    Thanks & Regards,

    Santosh

  • Hello,

    Thanks for the reply.

    We took the example code ipc_ex1_basic_c28x1 & ipc_ex1_basic_c28x2. 

    In this example code we are sending commands from CPU1 to CPU2 and data is received at the ISR of CPU2.

    But when we tried the same logic to send command from CPU2 to CPU1 we are not able to  receive data at ISR of CPU1.

    Could you suggest and example code for IPC communication from CPU2 to CPU1.

    Thanks in advance

  • Navya,

    The data flow for IPC is same way in both directions. I am not sure what is not working. Is it data not available from CPU2 to CPU1, or it does not interrupt CPU1. 

    There are multiple examples that can be referred. You can start with IPC training:

    https://dev.ti.com/tirex/explore/node?node=AYlvYCIFS3m3S0PporZnCQ__jEBbtmC__LATEST

    In C2000 Academy, it walks through how to develop the code from scratch and build up the code which sends data bidirectionally. 

    The solution of the lab exercise is located at: 

    C:/ti/c2000/C2000Ware_4_01_00_00/training/device/f2837xd/module11_inter_processor_communications

  • Hello Santosh,

    While running example code ipc_ex1_basic_c28x1 & ipc_ex1_basic_c28x2 the sequence flow is getting stuck at  IPC_waitForAck(IPC_CPU1_L_CPU2_R, IPC_FLAG0);  and also flow is not going to __interrupt void IPC_ISR0() of CPU2. What could be the reason behind this. I have not made any changes in the example code.

    Regards

    Navya Anna Prince

  • Navya,

    I just tested the example and it works as expected. I am not sure if you are building and loading CPU2 and running it. If it gets stuck in ACK in cpu1, it means that CPU2 is not running.

    Here is the sequence you need to follow:

    • Select ipc_ex1_basic_c28x1 project, and press 'Debug' icon. When prompted to download to CPU1 and CPU2, uncheck CPU2. So this binary will be compiled, built and downloaded to CPU1 only. It will halt in main() function for cpu1.
    • Now select ipc_ex1_basic_c28x2 project, right-click and press 'Build project.
    • Now go to Debug view, connect CPU2, and then go to CCS menu Run -> Load -> Load Program, and press 'Browse Project'. Select '

      ipc_ex1_basic_c28x2.out'. After loading it will halt in CPU2 main(). Press F8 to run the core.

    • Now select ipc_ex1_basic_c28x1 project and press 'F8' to run. It should work, and will not get stuck.

    I will recommend one more time to go through IPC module of the C2000 Academy. I provided the link earlier. It will be useful to understand the whole flow and hand-shake mechanism used for two cores.

  • Hi,

     

    Last year, TI released Academy style online training on C2000 devices. The objective of the training is to provide step-by-step guidance to get started with C2000 family of real-time MCU. We know you have looked at C2000 Academy for some modules. We want to reach out to you if you can share your experience with Academy. Do you have any feedback/suggestion to improve it? We are contently looking for ways to improve the content so that it is more useful to the customer, so any feedback/suggestion will be really helpful.

     

    Thank you so much for taking the time to provide your feedback.

     

    Thanks & Regards,

    Santosh Jha