Embedded Software Development Software design challenges for real-time multicore MCU systems

Autor / Redakteur: Thomas Batt and Ingo Pohle * / Franz Graser

Developing embedded software for multicore architectures is a complex undertaking: Developers have to be aware of tricky aspects like task and data assignments to specific cores, to only name a few.

Anbieter zum Thema

Figure 1: Memory implementation in multicore
Figure 1: Memory implementation in multicore
(Source: MicroConsult)

Complex applications like controls for automotive and industrial systems or the Internet of Things (IoT) in combination with functional safety requirements (e.g. according to ISO 26262) and security require specific hardware support for safety and security features as well as higher calculation power in the control units. The application software is even more complex. It has to execute more instructions but should not cause higher power consumption.

Systems like notebooks, tablets, smartphones etc. try to meet these requirements by implementing multicore CPUs that operate in parallel; however, they do not offer higher operation frequency. To benefit from this technological approach, automotive software designers requested microcontroller chip manufacturers to develop multicore microcontrollers that include additional on-chip support for safety and security functions. This add-on functionality shall meet all requirements for system control units that combine high calculation power, safety & security support and powerful peripherals for real-time applications.

Existing embedded software designed for execution on a single core now has to be
adapted for execution on multicore systems. Initially, software migration seems to be easy and done. However, software developers have to consider numerous tricky aspects like function/task assignment to specific cores and interrupt controllers, data assignment to core private or global memory as well as the synchronization of data resp. results of multicore software execution.

New applications designed for portable systems like PCs, notebooks, phones etc. are typically processed in symmetric multicore microprocessors where the application software can be executed on any of the available cores. The software can be virtualized to tasks and assigned by a hypervisor, at runtime, to one of the CPUs that is free resp. can be allocated.

Real-time application software has to be extended and executed on a system according to functional safety (e.g. at one of the defined safety levels, SIL 1 - SIL 4 or ASIL-A - ASIL-D). An additional security option may be required if the application requires internet access or software tuning protection.

Depending on the real-time, safety and security requirements, highly sophisticated multicore microcontroller architectures have to be used. In contrast to multicore microprocessors (CPUs) used for entertainment and communication systems, these aspects must be considered for machine control units that may cause a machine to operate improperly, thus resulting in physical injury or direct or indirect harm to the health of people.

Another problem might arise when industrial systems operate in connection to the internet. While this type of application largely facilitates operation and provides many new options, e.g. remote control, the system must be protected against any unexpected result (start, stop, change operation, etc.) or destruction. For example, a seventeen year old hacker stopped the operation of a blast furnace in Germany, causing damage to the system and loss of several hundred million euros.

Singlecore software solutions for automotive or industrial control systems have to be redesigned so that all real-time, safety and security requirements are met. For this reason, a new generation of multicore microcontrollers was built with asymmetric core architecture. It offers on-chip hardware in a “low-cost” microcontroller design for all of these requirements. With this approach, it is not really possible to use technologies like software virtualization or distributing systems like a hypervisor in this kind of heterogeneous microcontroller architecture.