Please enable JavaScript to view this site.

winIDEA Help

Version: 9.26.16

Navigation: Multi-core debugging

Scroll Prev Top Next More

Overview

In this topic:

Introduction

Symmetric multiprocessing (SMP)

Asymmetric multiprocessing (AMP)

Getting started

SMP/AMP Examples

 

 

Introduction

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).

 

 

Symmetric multiprocessing (SMP)

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.

 

AMP_MMS

 

Switching between cores

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     .

 

i-icon

If the first core (CPU0) is included in an SMP group, then the Debug > SMP menu is already available.

 

 

 

Breakpoints management

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.

 

 

Asymmetric multiprocessing (AMP)

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.

AMP - Two separated Applications are executing on separate cores.

 

Switching between AMPs

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 management

Breakpoints are managed separately for each AMP. Setting a breakpoint in one AMP doesn't affect breakpoints in other AMPs.

 

Multi-core synchronization

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.

 

Multi-core trace and profiling

If you are using Automatic Analyzer Configuration, winIDEA will automatically trace all the cores of the configured process - see analyzer configuration dialog.

 

 

 

Getting started

Tutorials

Refer to [SMP/AMP Tutorials](Multi-core-debug-tutorials) for the basic configuration steps.

 

winIDEA Workspace Examples

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.

 

winidea-workspace-examples-smp

 

Automate your workflow with winIDEA SDK

The guidelines for SMP and AMP debugging with winIDEA SDK are available in the How to use the SDK.

 

 

SMP/AMP Examples

 

 

More resources

Timing Analysis Across Two ECUs - Webinar

Pure SMP system - Video Tutorial

Hybrid AMP/SMP system - Video Tutorial

 

 

Copyright © 2026 TASKING