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
    • Smart Homes
    • Tools, Software and IDEs blog
    • Works on Arm 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 Heterogeneous Software Development
  • 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
  • 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
  • Product update: Arm Development Studio 2022.2 now available

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2022.2 is now available, providing support for PSA-ADAC authenticated debug.
    • December 7, 2022
  • Product update: Arm Development Studio 2022.1 now available

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2022.1 (and 2022.b) is now available.
    • July 25, 2022
  • Arm Compiler for Linux: what is new in the 22.0 release?

    Ashok Bhat
    Ashok Bhat
    Arm Compiler for Linux 22.0 is now available with performance improvements and support for new hardware like AWS Graviton 3.
    • May 27, 2022