Multi-Core Debugging

From SEGGER Wiki
Revision as of 15:20, 30 January 2023 by Erik (talk | contribs)
Jump to: navigation, search

Multiple cores in one SoC increases the functionality as well the performance of a single SoC. However, when it comes to debugging, multi-core SoCs are not as straight forward or as simple as they sound. Why? Customer requirements highly depend on the actual use case and on the available multi-core debug related features provided by the chosen SoC such as individual reset functionality of the different cores. Those requirements make it difficult to provide a out-of-the-box solution, which covers all use cases. For that reason, the J-Link supports the most common use cases by default. This behavior should be well documented on the corresponding device family page. Other scenarios can be also supported but may require some custom configurations. Please feel free to get in touch with SEGGER in such cases.

Memory

There are two different approaches:

  • Shared memory regions
  • Exclusive memory regions

Latter one is quite simple to handle from J-Link perspective because the main as well as the secondary core handle their dedicated memory regions, only. Compared to this, shared memory regions are more difficult to handle due to the different requirements / use cases:

  • Main core session initializes the entire shared memory region
  • Main core session initializes only parts of the shared region while the second core session initialize the remaining memory
  • ...

Terminologies

Basically, there are two different approaches when it comes to multi-core setups:

  • SMP (Symmetrical multiprocessing)
  • AMP (Asymmetrical multiprocessing)

Both approaches are supported by the J-Link. Hybrid solutions are supported as well.