Select Page

Embedded software development

The term Embedded stands for embedded. An embedded system is a functional unit that has its own computing kernel, which is "embedded" in the system.

Embedded systems are typically used in decentralized assemblies for the control, regulation, and monitoring of devices.

Embedded software is software specifically designed for embedded systems.

Standard software vs. embedded software

Figure 1: Standard SW vs. Embedded SW

Difference between standard software and embedded software

Traditional software programming uses languages such as ANSI C, C++, Java, Python, etc. The generated software is then typically executed on a PC-based system (desktop or notebook).

The response time of software running on a desktop or notebook computer depends significantly on the following aspects: the architecture of the processing core (single-core or multi-core architecture), the available RAM speed (maximum CPU clock speed), the operating system used, and the number of applications to be run concurrently. Each of these aspects influences the application's performance.

Requirements in embedded software development

A typical requirement for Embedded systems Real-time capability is crucial. Processing with unpredictable speeds is unacceptable. Many applications (especially control systems in safety-critical systems – i.e., systems that could endanger, injure, or even kill a person) require a predictable system response time.

The brakes in a car, for example, must react to the driver's braking with a very short delay (in the range of milliseconds). A PC-based control system could not reliably meet this real-time requirement.

When developing software for an embedded system, it is possible to design the programs in such a way that the delay or processing time of the embedded system can be precisely determined. This includes, for example, the ability to detect an input signal (e.g., the signal from a switch) and generate the motor-off signal at an embedded system output with a maximum response time. This also applies to the response time for inter-module communication or the exchange of telegrams between interface and control modules via bus systems such as USB, Ethernet, CAN, LIN, etc.

Embedded software development: typical applications

  • Automotive engineering: Networking and operation of control modules in the vehicle
  • household appliances: Controls for washing machines, dishwashers and refrigerators
  • Consumer electronics (Brown goods): Digital radios, televisions, e-readers, set-top boxes
  • Telephones and interface devicesMobile phones, smartphones, tablets, gateways (e.g. Fritz!Boxes)

Software tools for embedded software development

Standard software tools must be extended for use in embedded systems. To optimally utilize the architecture of microcontroller systems and their advantages in program execution, extensions to the ANSI C standard are necessary, for example, for the compiler. These extensions allow the programmer to specifically influence the software's performance (execution speed in the CPU). This type of software development, which takes into account the architecture and behavior of the microcontroller used, is called low-level programming.

Embedded software programming

Figure 2: Embedded software programming

Providers of embedded compilers extend the functionality of ANSI-C through type qualifiers for assigning a variable or program (function) to a specific memory area or memory address space (so-called address space qualifiers).

By using address qualifiers, the compiler generates specific memory sections that can be located in architecture-specific address spaces by the linker/locator. Another use is the application of type qualifiers for programs (function qualifiers). These qualifiers distinguish between normal functions and interrupt functions. Depending on the qualifiers used, embedded compilers generate different operation code for the function return instructions.

Compilers for embedded architectures support special data types (extensions to ANSI-C). Using these data types allows programmers, for example, to employ fixed-point arithmetic in addition to floating-point arithmetic. This type of arithmetic is the basis for DSP (Digital Signal Processing) filter calculations..

By using the `volatile` attribute when defining pointers to absolute addresses, embedded programmers can establish absolute address references for placing peripherals in a microcontroller architecture. This makes it possible to access mode, control, and status registers in specific microcontroller-on-chip hardware (e.g., an interrupt status register of a particular timer or an output register of a specific I/O port). `volatile` prevents the compiler from using optimized access to variables. Instead, the peripheral register is guaranteed to be accessed anew each time a memory state is checked within a program loop (software polling). This allows changes to peripheral status variables to be detected within the software loop.

Hardware-related embedded software development

Embedded software development offers a wealth of opportunities for programming low-level software – that is, software that optimally and securely utilizes the unique architecture of a microcontroller. Incorrect application of software in embedded systems can lead to unforeseen errors that may only be discovered very late in the project. Effective and successful application of embedded software requires a thorough understanding of its implications, opportunities, and risks.  

Expertise in embedded software development

Extensive knowledge is the basis for successful embedded programming – from microcontroller architecture and requirements management (Requirements engineering) and architecture design, all the way to the tools for embedded programming (compilers, linkers/locators, debugging and testing tools). Attending an embedded programming training course provides the right access to all this necessary knowledge and skills.

If you are looking for support or want a quick and successful start in the world of embedded software programming, then visit a seminar or one Workshop for embedded software development.

In a compact form, all necessary knowledge is conveyed – from the influence of a microcontroller architecture, the necessity of requirements engineering, the meaning and procedure of architecture design to the use of embedded programming tools (compiler, linker/locator, debugging and test tools).

MicroConsult supports you with training and coaching on all aspects of embedded software development, for example on the following topics:

Embedded C: Programming methods and tools for embedded applications

Embedded C++: Object-oriented programming for microcontrollers with C++/EC++ and UML

Embedded C++ for Advanced Users: Object-Oriented Programming for Microcontrollers with C++/EC++

Embedded software design and patterns with C

Develop clean, efficient, and robust C++ software using classic object orientation and modern C++ language features – The path to clean code

Software architectures for embedded systems and real-time systems

RTOS Fundamentals and Application: Mechanisms and their use in runtime architectures for embedded and real-time systems

Requirements Engineering and Requirements Management for Embedded Systems

Embedded and real-time programming – all training courses

Embedded and real-time operating systems – all training

Coaching: Embedded and real-time programming

Training & Coaching – also in live online format – on the other topics in our portfolio can be found here. here.

Embedded software development: Workshops

Furthermore, there is the possibility to explore the topic area Embedded software development also in tailor-made workshops to address. They are tailored to the specific needs of tasks, projects, teams, and roles.

Please contact us with your questions, requests and requirements – we are happy to assist you at +49 (0)89 450617-71. Or send us the Contact form.

MicroConsult Newsletter

With the MicroConsult newsletter, you'll stay on the pulse of the embedded world. Look forward to proven practical knowledge, real professional tips, and current events – directly from our experts for your project success.

Subscribe now!

Published by

weissblau media

weissblau media