Linux and non-Linux in the same system

Back in October 2017 I tested Keil’s “µVision” IDE which is created to develop applications for the modern ARM Cortex M-type CPU’s. This is an IDE tailored for Windows that seemed very competent.

However, we now see modern CPU’s with the “best of both worlds”: A Linux Cortex-A type core for high-throughput and/or advanced applications, and a Cortex M-type core for real-time/low-latency stuff. The latter may run on any of many smaller operating systems.

To handle these types of applications, ARM/Keil have extended their original “DS-5” Linux development environment, This is based on Eclipse and therefore runs on Linux as well as on Windows (and to a degree also on Mac OSX). It has all the features that comes with Eclipse, including language-aware editors, debuggers etc. However, now it also has the features from the µVision IDE that allows you to select SDK’s from a host of development boards or CPU’s etc. I was introduced to this in a recent workshop held by the danish Nohau.

The new interesting feature in this “combo-IDE” is that it allows you to develop and/or debug the M-core and the A-core(s) together. It also offers a neat way to debug the Linux kernel – see screenshot below:

Linux kernel debugging

You have the following debug-options:

  • JTAG device: Cortex-M Application
  • Same JTAG device: Cortex-A Linux kernel
  • Remote Debugger (via USB or Ethernet): Cortex-A Linux Application

Obviously ARM/Keil would like us all to completely develop “heterogeneous systems” in this environment. This may be a really good option if you have been developing embedded systems on Windows for years, and are hesitating to dive into the new strange world of open-source Linux tools. Understanding Linux as an embedded OS is one thing – but getting into the huge world of tools surrounding it is another.

If instead you come from a modern open-source Linux team, you may be challenged by the small Cortex-M, its small OS. and the Windows tools. By choosing the Eclipse-based DS-MDK you can run everything on your beloved Linux host.

No matter which world you come from, you may find the “mixed world” challenging. Now we are not just discussing tools, but also real-time communication between – and debug of – a system with two very different types of OS’es.

I don’t see many Linux-teams giving up their open-source tools, throwing themselves into DS-MDK. However, there may be a good number of these developers & teams that could use DS-MDK for the Cortex-M development and the system-wide debugging – as yet a tool. In this case they may also find a simpler way to kernel debugging than what they are used to.