Blog

Testing Embedded Systems - Richard Seidl

Written by Richard Seidl | Oct 15, 2024 3:00:00 AM

In this episode, we take a deep dive into the world of embedded software development. We look at the particular challenges of testing embedded systems, which are often strongly linked to the hardware. We emphasize that quality and adherence to standards such as MISRA are crucial. We also discuss the role of agility in embedded development and emphasize the importance of good communication within the team.

“With functional safety systems, you have a regular environment. If you have a certain target level, you simply have to develop according to certain standards.” - Alexander Eisenhuth

Alexander Eisenhuth is a software architect and supports manufacturers of embedded systems with his mentoring in the development of their software architecture. His specialty is using targeted 1:1 mentoring to make junior software architects fit in their role as software architects so that they can master their challenges more effectively. What fascinates him again and again about the work of the software architect in agile processes is the interaction between the two roles of architect and team. An important task of the agile software architect is to identify architecture work and implement it together with the team wherever possible.

Highlights of this Episode:

  • Embedded systems are specialized systems within other systems, such as ABS systems in cars or coffee machines.
  • Quality assurance and testing are particularly challenging for embedded systems as they are closely linked to the hardware.
  • There are special coding standards such as MISRA and static code analysis that ensure that the source code complies with certain rules.
  • Embedded systems often have limited resources, which influences the choice of programming language and libraries. C, C++ and Rust are common languages.
  • Agility and continuous integration are also important in embedded development to ensure high quality.

Embedded software development and quality assurance

In this podcast episode, Richie talks to Alex Eisenhut about the challenges and peculiarities of embedded software development, particularly in the area of testing and quality assurance.

Introduction to the world of embedded software

Hello and welcome to a new episode of our podcast! Today we’re delving into the fascinating world of embedded software development. How do you test these special systems? How do you ensure their quality? And what is particularly important in the safety-critical area? Our guest is Alexander Eisenhut, an expert in this field. Alex starts by explaining that embedded systems are often integrated into larger systems and have specialized tasks. One example of this is the ABS system in a car. These systems require special test methods as they are closely linked to the hardware.

Quality assurance from an architect’s perspective

Alex, who works as a software architect for embedded systems, emphasizes that quality plays a central role. He describes that testing embedded systems is particularly challenging as they often interact directly with the hardware. This requires testing within the context of the system. To illustrate this, Alex explains the difficulties of simulating scenarios such as a car’s ABS system, where exact timing is crucial. He emphasizes that quality assurance starts with the architecture, using specific coding standards such as MISRA and static code analysis.

Resource constraints and programming languages

Another important aspect in the development of embedded software is the limited resources. Alex explains that depending on the requirements, the hardware can be dimensioned differently. In some cases, only a few kilobytes of RAM are available, which requires efficient code. The choice of programming language and libraries also play a decisive role here. Traditionally, a lot of programming is done in C or C++, but modern languages such as Rust are also gaining in importance, especially due to their security features.

Test types and development processes

The safety requirements for many embedded systems require specialized types of testing. Alex describes the regulatory framework for functionally safe systems and explains the process from specifications to formal testing. The development process often starts with evaluation boards before specific hardware is developed. Various test stages are run through: Unit tests, integration tests without hardware and finally system tests on the final hardware. Agile development has also made inroads here, with regular iterations and adjustments to user feedback playing an important role.

Challenges and agility

A big issue in embedded development is collaboration between hardware and software teams. Richie remembers previous projects in which this communication was difficult. However, Alex emphasizes that agility is also possible in this area, as long as the mindset is right. Joint considerations and flexible approaches are crucial here. Automation also plays a major role: CI pipelines are standard and enable continuous integration and automated tests on target systems.

Final thoughts and tips

“What are the biggest challenges in embedded development?” asks Richie in conclusion. According to Alex, it is often time-to-market pressure and communication problems with requirements and their implementation. Compliance with security standards is also a challenge. For those interested, Alex recommends the Embedded Software Engineering Congress (ESE) in Sindelfingen - a great opportunity for networking and learning. Finally, Richie thanks Alex for the informative discussion and wishes all listeners an enjoyable immersion into the world of embedded software.