Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Developing for multi-core and heterogeneous devices made easy
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Arm Development Studio
  • Arm Compiler
  • Debugger
  • Tutorial
  • DSTREAM
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Developing for multi-core and heterogeneous devices made easy

Ronan Synnott
Ronan Synnott
February 21, 2019
3 minute read time.

You are no doubt aware that Arm processors come in all sizes, the Cortex-A profile provide the highest performance, often implemented in multi-core configurations, with functionality to support rich operating systems. The Cortex-R profile target hard real-time applications, and Cortex-M for the lowest power, deeply embedded solutions.

You have also likely noticed an ever-increasing convergence of technologies, and more functionality going into existing systems. A coffee maker may now have an advanced user interface, and even be connected to the internet. To address the needs of such systems, there is a trend among silicon vendors to provide devices that consolidate what would previously been implemented by different components.

These heterogeneous devices commonly include (clusters of) Cortex-A processors combined with one or more Cortex-M processor such as the latest platforms STM32MP1 and i.MX 8M Mini. Though it could be any combination of processors that you can imagine. The benefits these devices offer go well beyond the bottom line, offering enhanced security for your data, convenient sharing of system resources, and a unified debug infrastructure.

Development tools support for heterogeneous devices

The Arm Debugger, provided as part of Arm Development Studio is designed to be easy to use with the latest Arm cores, in the most complex, arbitrary configurations. There is out-of-the-box configurations available for almost 6000 devices, including a number of heterogeneous SoCs, alongside powerful utilities to define your own as needed.

The debugger provides both low-level functionality (viewing registers, memory, cache data for example) and higher level features such as OS awareness, stack views, and code instrumentation. These capabilities extend to the separate connections of each CPU in the system, meaning that even if they are running entirely different software stacks, the data displayed can be formatted appropriately for each. The below shows an example of a Cortex-A running Linux in parallel with a Cortex-M running an RTOS. See that the debugger is connected to both processors simultaneously, with OS awareness of each software stack.

Debugging multi-core heterogeneous device with Development Studio

Many systems can generate trace, giving the execution history of the processors. In a heterogeneous system the processors are likely running asynchronously, with different clock speeds. Trace can be simultaneously collected from each source (perhaps with the new high-performance parallel trace DSTREAM-PT hardware unit) and synchronized via timestamps to analyze what each was doing at the same point in time.

Example trace output from heterogeneous device

Which compiler to use?

Development Studio contains the latest Arm Compiler, and is optimized for embedded applications, giving the best performance at the lowest footprint. For more information on the latest compiler release, I recommend reading my colleague's blog post on Arm Compiler 6.11. We know also that many users may select to run Linux (or Android) on the applications processor. The open source GCC compiler is the recommended build tool for this scenario. Developer Studio Bronze Edition was created for this purpose, providing the Arm Compiler for building bare-metal or RTOS based code to run on the Cortex-M, along with a comprehensive debug environment for the entirety of the system, including the Linux kernel and application space. Users developing kernel modules and device drivers, as well as applications, can now more readily get access to the power of the Arm debugger.

Are you attending Embedded World this year? Please come to the Arm booth (hall 4, booth 140) to see Development Studio in action supporting such platforms.

We also invite you to try it out for yourself, by downloading a free 30-day evaluation version of Development Studio.

Download free trial

Anonymous
Tools, Software and IDEs blog
  • GCC 15: Continuously Improving

    Tamar Christina
    Tamar Christina
    GCC 15 brings major Arm optimizations: enhanced vectorization, FP8 support, Neoverse tuning, and 3–5% performance gains on SPEC CPU 2017.
    • June 26, 2025
  • GitHub and Arm are transforming development on Windows for developers

    Pareena Verma
    Pareena Verma
    Develop, test, and deploy natively on Windows on Arm with GitHub-hosted Arm runners—faster CI/CD, AI tooling, and full dev stack, no emulation needed.
    • May 20, 2025
  • What is new in LLVM 20?

    Volodymyr Turanskyy
    Volodymyr Turanskyy
    Discover what's new in LLVM 20, including Armv9.6-A support, SVE2.1 features, and key performance and code generation improvements.
    • April 29, 2025