Klaus Elk Books

Embedded Software

Embedded software is specialized software - controlling devices or machines. Typically these devices do not have normal screen and keyboard, although often they will have some kind of buttons and maybe a small screen and/or LEDs.

The embedded software is used in customized products - ranging from the size of a button to a five-story high diesel engine in a ship. I discuss the level of this customization - as well as the many parameters involved when doing designs - in my book Embedded Software for the IoT where the below picture is found:

Customization levels as Russian dolls
You may customize on the chip-level - bringing in an Arm MCU as IP - or you make your own board with MCU on, or you buy a pre-fabricated board. Then make a product.

Whereas most PC-programmers are not really aware of the internals of their computer, most embedded programmers need to understand many details of the inner workings. This is demonstrated with the figure below from my latest book - Microcontrollers with C

.
The internals of a typical Microcontroller (MCU)
The internals of a typical Microcontroller (MCU)

A typical embedded developer is a "Jack of all trades". On top of the domain-knowledge (automotive, audio, medical etc) they need to understand hardware and how to control it - like:

When it comes to building software, most PC-programmers can simply press the "Build"-button in Visual Studio. Embedded programmers know that you have a compiler, assembler and linker working together to build your system - as seen in the figure below. The program needs to be downloaded - typically also flashed - and at least someone in the team needs to know what happens next before the program is ready to execute the first instruction in "main".

This is also described in Microcontrollers with C

.
The GNU toolchain
The GNU ToolChain

What happens in the program after the initial phases can be divided in two parts:

Please note that "introspective" and "extrospective" are not normally words used in the embedded software domain - they simply serve a purpose here.

I have a page on toolchains and another on embedded trends.
Black Elk

© 2026 KlausElk.com & ElkTronic.dk