Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Graphics and Gaming
    • High Performance Computing
    • Innovation
    • Multimedia
    • Open Source Software and Platforms
    • Physical
    • Processors
    • Security
    • System
    • Software Tools
    • TrustZone for Armv8-M
    • 中文社区
  • Blog
    • Announcements
    • Artificial Intelligence
    • Automotive
    • Healthcare
    • HPC
    • Infrastructure
    • Innovation
    • Internet of Things
    • Machine Learning
    • Mobile
    • Smart Homes
    • Wearables
  • Forums
    • All developer forums
    • IP Product forums
    • Tool & Software forums
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Software Tools
  • Developer Community
  • Tools and Software
  • Software Tools
  • Jump...
  • Cancel
Software Tools
Tools, Software and IDEs blog Developing for multi-core and heterogeneous devices made easy
  • Tools, Software and IDEs blog
  • Forums
  • Videos & Files
  • Jump...
  • Cancel
More blogs in Software Tools
  • 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

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
  • Updated AArch64 Docker images for PyTorch and TensorFlow

    Jason Andrews
    Jason Andrews
    Docker images for TensorFlow and PyTorch running on Ubuntu 18.04 for Arm are now available. This article explains the details to build and use the Docker images for TensorFlow and PyTorch on Arm. Tens…
    • February 23, 2021
  • Cloud infrastructure for continuous integration tests

    Christopher Seidl
    Christopher Seidl
    This blog introduces a cloud-based continuous integration (CI) workflow for embedded projects that uses model-based simulation.
    • February 18, 2021
  • Process isolation with Arm FuSa runtime system

    Vladimir Marchenko
    Vladimir Marchenko
    In this blog, read about process isolation with Arm FuSa runtime system.
    • February 18, 2021