How-to SMP

16-Sep-2024

If the operating system handles multiple cores and if the application running on multiple cores, you have to define one application and one memory space which would be assigned to the SMP binding.

This tutorial provides step-by-step instructions on configuring an SMP (Symmetric Multiprocessing) binding in winIDEA when multiple Program/Symbol Files are involved.

winIDEA issues a warning in the Progress window if SMP requirements are not met. In this case check your multi-core synchronization settings


General

A typical use case requirement is that the cores run synchronously, i.e. when one core hits a breakpoint, the other cores stop as well. Configure via Hardware | CPU Options | Debugging | Synchronize selected cores (stop/run) when possible.

  • Arm Cortex-M - Cross-trigger channels 0 and 1 (Hardware | CPU Options | SoC) are used for core synchronization.


Tracing and profiling

Core selection

You can select which cores from the SMP configuration will be used for tracing via Analyzer | Analyzer Configuration | Profiler | Core selection.

  • If an Application runs on 2 cores, you have to configure SMP and you will also see 2 cores in Profiler configuration.
  • If you have two applications each running on separate cores, core selection does not matter since you have only one core per application.

Infineon TriCore
  • If you have a TC3xx production device, you have to define a custom trigger to limit the resources used by miniMCDS (supported on the majority of devices).
  • On the TC3xx production device, you can trace only 1 core at a time, but because the timing messages are also recorded, these messages fill up the trace buffer before the core1 is started. If you want to record anything on core1, you have to run the application up to the point where core1 is started and only then run a trace and then run CPU.


More resources

Was this answer helpful?