Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Heterogeneous Software Development
  • 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
  • ds-5
  • smp
  • compiler
  • heterogeneous
  • software_development
  • ds-5_development_studio
  • Debugger
  • amp
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Heterogeneous Software Development

Michelle Page-Croft
Michelle Page-Croft
November 11, 2015
3 minute read time.

Heterogeneous Software Development

By Stephen Theobald

ARM-based platforms come in a variety of processor configurations, and these platforms now often have more than one ARM processor.  These multi-core platforms have usually been “Symmetric Multi-Processing” (SMP) systems, where a cluster of identical CPUs work together co-operatively with a common memory map.  More recently, heterogeneous Asymmetric Multi Processing (AMP) and AMP+SMP systems that have different CPUs with different profiles are becoming available now too.  An effective combination is ARM Cortex-A and Cortex-M family cores in a single package. The Cortex-M core offers low interrupt latency for good real time response, and with low power consumption.  Cortex-A cores offer higher performance but consume more power.  Having both classes of core in a single package enables the System Designer to partition a system optimally, for the best balance between low power and low latency versus heavy application workloads.  For example, an AMP+SMP system might have one or more cores running an OS such as Linux in SMP mode, and an additional core running an RTOS or bare-metal application.

Examples of AMP+SMP devices include Freescale’s i.MX7 Dual (2 x Cortex-A7 + Cortex-M4), Texas Instruments OMAP5432 (2 x Cortex-A15 + 2 x Cortex-M4), and Xilinx UltraScale MPSoC (4 x Cortex-A53 + 2 x Cortex-R5). AMP devices are also available, such as Freescale’s i.MX7 Solo (Cortex-A7 + Cortex-M4) and the Vybrid™-series such as VF6xx (Cortex-A5 + Cortex-M4). ARM’s own “Juno” development platform contains 2 x Cortex-A57 + 4 x Cortex-A53 cores, plus a Cortex-M3 System Control Processor for power control.

DS-5 allows you to compile code for both classes of core, and then debug them both together.  DS-5’s code development environment provides C/C++ compilers for ARMv7 and ARMv8 embedded code (both ARM Compiler 5 and the new ARM Compiler 6), and a Linaro GCC compiler for Linux applications, Linux kernel and kernel modules. 

Use ARM Compiler 5 to build your embedded/RTOS code for Cortex-M, -R or (32-bit) A-class devices.  ARM Compiler 5 is now TÜV SÜD certified and can be used for safety-related software development, together with the ARM Compiler Qualification Kit.  ARM Compiler 6 is the next-generation C/C++ compilation toolchain targeting embedded software development.  ARM Compiler 6 supports all the latest ARM processors, including 64-bit ARMv8.

DS-5 Debugger is able to debug both SMP and AMP system designs.  Linux-based targets can be debugged via gdbserver other Ethernet.  Bare-metal and RTOS targets can be debugged either by traditional JTAG-based debug hardware such as DSTREAM, or via CMSIS-DAP over USB.  DS-5 Debugger allows simultaneous connection to multiple cores, so for example, you can be debugging the Linux SMP kernel on the A-class cores and then switch seamlessly to debugging an RTOS on the M-class core.  The screenshot below shows simultaneous debugging of the Linux kernel booting on a dual 2 x Cortex-A7, and an RTOS on Cortex-M3. There the two disassembly views (bottom center), one showing the Linux kernel stopped at a breakpoint at “start_kernel”, and the other showing the RTOS sitting on a WFI (Thumb2) instruction.  The source code of the Linux kernel is shown (bottom left), and a trace of its instruction execution history (bottom right).

Cortex-A7x2 Kernel + Cortex-M3.png

Summary

The Compiler and Debugger within DS-5 support multiple cores and OSs well, meeting the needs of heterogeneous architectures today. ARM’s software development tools have come a long way within the past 25 years, and to celebrate ARM’s 25th birthday we’re giving the first 20,000 customers the chance to try the latest version of DS-5 again. Get your free serial number »

See these related topics:

  • Jonathan Simmonds' blog Using DS-5 with the Freescale i.MX 6SoloX
  • Multicore debug of Freescale™ Vybrid Controllers via USB with ARM® DS-5™ video
Anonymous
Tools, Software and IDEs blog
  • Python on Arm: 2025 Update

    Diego Russo
    Diego Russo
    Python powers applications across Machine Learning (ML), automation, data science, DevOps, web development, and developer tooling.
    • August 21, 2025
  • Product update: Arm Development Studio 2025.0 now available

    Stephen Theobald
    Stephen Theobald
    Arm Development Studio 2025.0 now available with Arm Toolchain for Embedded Professional.
    • July 18, 2025
  • 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