Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
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 and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems 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
  • What is new in LLVM 16?

    Pablo Barrio
    Pablo Barrio
    Arm contributions from Arm to the new release include the usual architecture and CPU additions and new features such as, function multi-versioning and strict floating point support.
    • May 1, 2023
  • Product update: Arm Development Studio 2023.0 now available

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2023.0 now available with support for Arm Neoverse V2 processor.
    • April 27, 2023
  • What is new in LLVM 15?

    Pablo Barrio
    Pablo Barrio
    LLVM 15.0.0 was released on September 6, followed by a series of minor bug-fixing releases. Arm contributed support for new Arm extensions and CPUs.
    • February 27, 2023