Overview
In this topic:
•Symmetric multiprocessing (SMP)
•Asymmetric multiprocessing (AMP)
This topic explains the background of handling multi-core debugging in winIDEA IDE and winIDEA SDK, multiprocessing modes, and other specifics.
You can configure each Application separately, and then switch Process debugging contexts on the fly.
An Application running in its own Memory Space is called a Process, which gets assigned its distinctive process ID.
A Memory Space can be a single core, multiple cores, or an MMU-controlled virtual memory on one or more cores.
winIDEA provides support for debugging multi-core systems, allowing you to debug either:
•Single application running on multiple cores (SMP)
•Multiple applications running on separate cores (AMP)
By default, all the cores are automatically observed via Session Explorer. Session Explorer also lists process IDs (process URLs).
In Symmetric multiprocessing (SMP), all cores are identical and have equal access to the system's resources (memory, Ethernet, HDMI). The Operating System (OS) views these cores as a single processing unit, and the same instance of an application or operating system can run on any/all core(s). Any core can execute any task, controlled via OS. SMP is typically used for tasks that can be parallelized easily, and it aims to distribute the workload evenly across all available cores.
With an SMP binding in winIDEA, you debug one Application on multiple (identical) cores. All the cores are executing the same Application (optional Operating System - OS) from the same Memory Space.
An SMP binding allows access to the Process debug context of all cores. This happens within same winIDEA.
You can conveniently switch between cores:
•Automatically - If a breakpoint is hit by any of the SMP cores, winIDEA will automatically focus on that specific core.
•Manually - If you need to see what some other SMP core is doing at that time, change the focus
oDouble-clicking on a specific core in Session Explorer
oSelecting Debug > SMP > Core.
When you switch between cores, it synchronizes the Core Registers and accordingly refreshes:
•Editor
•Disassembly
•Locals
•Callstack
•etc.
In the bottom right corner, winIDEA Debug status will show depending on a selected core [CPU1] STOP .
|
If the first core (CPU0) is included in an SMP group, then the Debug > SMP menu is already available. |
Once you set a breakpoint somewhere in your code, the breakpoint will be configured for all the cores that are observed within the SMP. This ensures that any core executing the code at the breakpoint will trigger the stop.
Once the breakpoint is reached, the Process debug context will focus the core that hit the breakpoint.
When a SoC features two or more cores from different architectures, use asymmetric multiprocessing (AMP). In AMP, you debug multiple applications on separate cores which can use different architectures. It is a system where not all SoCs are treated equally, and each core typically runs a different Application. When winIDEA downloads the applications code, the applications for all core are programmed in the SoC internal program flash.
AMP - Two separated Applications are executing on separate cores.
You can conveniently switch between cores and view them side-by-side via
•Double-clicking on a specific core Session Explorer
•Selecting Debug > Core > coreN
Breakpoints are managed separately for each AMP. Setting a breakpoint in one AMP doesn't affect breakpoints in other AMPs.
Multi-core synchronization allows you to run and stop multiple cores simultaneously among other customization options. It depends on the architecture you are using.
Depending on your system debug requirements, you might want to have multiple cores synchronized so that in case one core stops on a breakpoint, other cores stop as well. For SMP to operate properly - cores in an SMP must always be synchronized.
Core synchronization can be achieved automatically or manually.
If you are using Automatic Analyzer Configuration, winIDEA will automatically trace all the cores of the configured process - see analyzer configuration dialog.
Refer to [SMP/AMP Tutorials](Multi-core-debug-tutorials) for the basic configuration steps.
winIDEA includes a collection of Example Workspaces that cover a range of supported SoCs architectures and hardware combinations, together with predefined AMP and SMP configurations. These Examples are perfect for simulation, and evaluation, and as references for your own configurations.
Follow Start with Example Workspaces Tutorial and filter, e.g., SMP.

The guidelines for SMP and AMP debugging with winIDEA SDK are available in the How to use the SDK.
•Timing Analysis Across Two ECUs - Webinar
•Pure SMP system - Video Tutorial
•Hybrid AMP/SMP system - Video Tutorial