Memory Concepts for Embedded Software

Memory concepts in embedded software development are surprisingly complex. Understanding the underlying concepts and using memory correctly is essential for embedded programming and becomes potentially critical when security and functional safety also need to be considered.

This seminar will provide an overview of the underlying concepts, ensuring that the participants have the knowledge needed to create a reliable and robust software based on optimal memory usage.

The seminar will start with an examination of memory devices, their acronyms, their important properties and their pitfalls. This will include the SoC itself, RAM and ROM, serial vs memory-mapped devices, NOR vs NAND, SLC vs MLC NAND devices and finally, managed vs unmanaged NAND.

The next part of the seminar will cover hardware support for memory. In this section we will look at MPU vs MMU to discover the differences. We will then also look at the 2’nd stage MMU in newer ARM devices to understand how this helps support virtualization.

Static and dynamic memory allocation patterns are then examined. Typical mechanisms for verifying memory integrity when using static memory are examined to understand their consequences. Then we will examine the consequences of dynamic allocation and why both security and functional safety avoid dynamic allocation. This will include a short examination of the hidden mechanisms behind the malloc()/free() functions. Memory leaks and their origins are discussed along with memory fragmentation, performance consequences and problems with garbage collection. Finally, we will take a short look at swapping to understand why this is rarely an option.

This seminar is intended for system and software architects, software engineers and technical leaders who need an in-depth understanding of the optimal use of memory.

A good understanding of software development is required along with reasonable knowledge of C/C++ to understand the examples and exercises.

No examination

The participants of the seminar will have a broad overview of memory devices, how they function and how to use their capabilities to best effect. They will have an in depth understanding of how software can be structured to optimally apply what they have learned.

With Knüvener Mackert GmbH this course is being taught by an expert with the experience from 35 years of real-time software development in embedded systems, spanning both the medical and the automotive industries.
This seminar can also be offered in the form of in-house training at the location of your choice.

General Information

Duration: 1 day
Time: 9:30 – 17.00 Uhr
Language: german or english
Trainer: Gerald Harris, Profile LinkedIn

10% early bird discount on the training fee (till 8 weeks before start)
10% team discount on the training fee (more than 3 participants)
20% early bird team discount on the training fee (both above)

Training-ID: 12.004.


Stuttgart, Germany – on request

Price net € 590,00
Early-bird discount: 10%
Teamdiscount: 10%
Language: german or english
Status: on request
Training ID: 12.004.xx

Excerpt from the training material

Each participant receives one of the world’s best ASPICE guides.