The Embedded Software Guide
The automotive industry transforms year after year. Growth is significant. Within the ecosystem of the Internet of Things convergence, connected cars represent one of the fastest-growing markets. This growth is driven by enhanced safety, the demand for connectivity, and carbon efficiency. In 2022, connected car sales continued to grow by 12%, meaning that at that point, more than 50% of vehicles sold were connected. As a result, working with engineers and developers has become increasingly important for manufacturers. In the following sections, we will look at what embedded software is, the technologies it uses, and our areas of engineering expertise.
What You Need to Know About Embedded Software
Embedded software is a program used within industrial equipment. It is specifically designed for the equipment in which it is housed and would serve no purpose elsewhere. This type of software dates back many years and has evolved with the times. A classic example is the mechanical programmer of a washing machine: this software is essential to the machine’s operation and is of no use outside of it. This remains true today; embedded software must be valued for its functional purpose.
Embedded software has several characteristics. Among these, it must be limited in size and have relatively low energy consumption. It must also meet certain constraints such as autonomy, reliability, security, and memory space.
An embedded system offers numerous advantages. It is designed to carry out a specific task, simplifies the system’s hardware, and reduces costs. An embedded system is a small component within a larger device.
What Are the Main Technologies Used in Embedded Software?
Embedded software requires the use of programming languages. The most widely used today are C, C++, Java, and Ada. Here is an overview of these languages:
- C is the programming language that every programmer knows. It is one of the most widely used and versatile languages, and has inspired many others that adopted a similar syntax, including C++ and Java.
- C++ is the successor to C. It offers features that allow its users to program using a different approach. It is highly popular for object-oriented programming and is widely used in the video game industry.
- Ada is also an object-oriented language. It is perfectly suited to real-time environments where reliability is critical. Its many features reduce the risk of errors.
- Java is a versatile language used across a very wide range of fields, including video game development and the Internet of Things.
In order to function, these languages must use embedded operating systems such as Linux or FreeRTOS. Here is a brief overview of these operating systems:
- Linux is an open-source operating system. Initially developed for personal computers, it found little use in that context but proved its value in other computing systems, such as mobile phones and embedded systems.
- FreeRTOS is one of the most widely used systems today. It is primarily used for embedded systems with code space constraints. It enables real-time execution, features open-source code, and has a very small footprint.
Hardware architectures are also necessary for the proper functioning of embedded software. Below are two key examples, the microcontroller and the SoC:
- The microcontroller is an integrated circuit that brings together all the essential elements for the operation of a computer or other device, including the processor, memory, input/output interfaces, and peripheral units.
- The SoC (System on a Chip) is an embedded system on a single integrated circuit. It can include the microprocessor, memory, and all the components necessary for the embedded system to function correctly.
DUNASYS: The Expert in Embedded Systems Engineering
DUNASYS is a company specializing in connected automotive engineering. We operate across two core areas of expertise. The first is the design and development of embedded units and software. The second is the provision of technical support and consultancy services for our clients. To this end, we offer two modes of intervention: fixed-price projects within our engineering department, and on-site technical assistance and advisory services.
Fixed-Price Projects with Our Engineering Department
At DUNASYS, we have built our strategy around expertise and mastery of embedded systems, covering specification, design, development, diagnostics, analysis, and maintenance. We operate across several divisions:
- Embedded software and networks division: We are recognized experts in automotive, rail, and aeronautical networks and low-level layers. We can also support any company commercializing connected objects.
- Stacks division: We are a Tier 2 supplier of CAN/LIN/MILCAN communication stacks.
- Automated testing division: We design validation, qualification, maintenance, and acceptance test benches.
- Products division: We develop software and hardware tools for the analysis, diagnostics, monitoring, and validation of embedded data.
- Technical Assistance and Advisory Services
We also work directly with our clients to support them on projects that require our expertise. Our engineers deliver high-quality, technically demanding services, made possible through rigorous selection, ongoing monitoring, and tailored training. Our expertise and know-how enable us to meet our clients’ expectations.
Our engineers come from renowned engineering schools and work on missions and projects of varying scope across a wide range of industry sectors. An engineer at DUNASYS possesses a broad range of skills, including embedded software development, C language development on microcontrollers, and C++ development on embedded Linux. Our engineers also demonstrate strong interpersonal qualities such as autonomy, communication skills, and responsiveness.
If you would like to find out more about our engineering services, please visit our engineering page. If you are interested in our services or have any questions, do not hesitate to contact us. We will get back to you as quickly as possible.
DUNASYS, l’expert en ingénierie des systèmes embarqués
DUNASYS is a company specializing in connected automotive engineering. We operate across two core areas of expertise. The first is the design and development of embedded units and software. The second is the provision of technical support and consultancy services for our clients. To this end, we offer two modes of intervention: fixed-price projects within our engineering department, and on-site technical assistance and advisory services.
Fixed-Price Projects with Our Engineering Department
Chez DUNASYS, nous avons orienté notre stratégie sur l’expertise et la maîtrise des systèmes embarqués. Que ce soit sur la spécification, la conception, le développement, le diagnostic, l’analyse et la maintenance. Ainsi, nous avons plusieurs pôles :
-
Embedded software and networks division: We are recognized experts in automotive, rail, and aeronautical networks and low-level layers. We can also support any company commercializing connected objects.
-
Stacks division: We are a Tier 2 supplier of CAN/LIN/MILCAN communication stacks.
-
Automated testing division: We design validation, qualification, maintenance, and acceptance test benches.
-
Products division: We develop software and hardware tools for the analysis, diagnostics, monitoring, and validation of embedded data.
Technical Assistance and Advisory Services
We also work directly with our clients to support them on projects that require our expertise. Our engineers deliver high-quality, technically demanding services, made possible through rigorous selection, ongoing monitoring, and tailored training. Our expertise and know-how enable us to meet our clients’ expectations.
Our engineers come from renowned engineering schools and work on missions and projects of varying scope across a wide range of industry sectors. An engineer at DUNASYS possesses a broad range of skills, including embedded software development, C language development on microcontrollers, and C++ development on embedded Linux. Our engineers also demonstrate strong interpersonal qualities such as autonomy, communication skills, and responsiveness.
If you would like to find out more about our engineering services, please visit our “Technology” page. If you are interested in our services or have any questions, do not hesitate to contact us. We will get back to you as quickly as possible.
Questions & Answers
An embedded application is a program designed to run directly on dedicated hardware, without requiring an advanced user interface. These software programs are often integrated into specific electronic systems, such as automotive control units, smart sensors, or medical devices.
- Unlike standard software that can be installed and run on different operating systems, an embedded application is optimized for a single hardware platform.
- Its development requires programming adapted to hardware constraints (low memory, limited processing power, code optimization).
- It performs critical functions such as engine control, communication management between connected objects, or securing data transactions.
An embedded software engineer is an expert in developing software for embedded systems. Their role is crucial in the design and optimization of electronic products that require high-performing and reliable software.
The main responsibilities of an embedded software engineer include:
- Analyzing needs and hardware constraints.
- Writing and optimizing code in low-level languages (C, C++, embedded Python, etc.).
- Managing system security and data protection.
- Carrying out software tests to guarantee optimal operation.
At Dunasys, our engineers specializing in embedded software develop solutions tailored to business needs.
Embedded system software is a program responsible for executing and managing the functions of the electronic equipment in which it is integrated.
It can be divided into several categories:
- Firmware: A low-level program that manages communication with the hardware and optimizes system resources.
- Embedded operating system: A simplified platform enabling multiple applications to run while managing hardware interactions.
- Middleware: A set of services facilitating communication between different applications within the embedded system.
These software programs are used across numerous sectors: connected vehicles, drones, medical devices, and connected objects. They ensure the proper functioning of devices by optimizing their security and performance.
The distinction between standard software and embedded software rests on several key aspects:
| Criteria | Standard software | Embedded software |
|---|---|---|
| Hardware | Independent (computer, smartphone) | Specific to a piece of equipment |
| Environment | Runs on a standard OS (Windows, Linux, macOS) | Runs on a minimalist or real-time system |
| Resources | High computing power | Limited resources (memory, energy, processor) |
| Updates | Easily modifiable and scalable | Complex to update once deployed |
| Examples | Mobile apps, office software | ABS braking systems, bank cards, drones |
Embedded software must therefore be stable, optimized, and secure, as it is often integrated into critical devices where any error can have serious consequences.
The main languages used in embedded software development are:
- C and C++: for their efficiency and fine-grained resource management.
- Embedded Python: often used for connected objects and embedded AI.
- Assembly: for systems requiring extreme optimization.
- Rust: increasingly adopted for its memory safety.
Developing embedded software involves several challenges:
- Resource optimization (memory, CPU, energy consumption).
- Reliability and robustness (fault tolerance, real time).
- Security (protection against cyberattacks, data management).
- Hardware compatibility with specific equipment.
An embedded system is necessary when:
- The hardware has limited resources (sensors, microcontrollers).
- The software must operate in real time.
- The goal is to ensure autonomous operation without human intervention.
- Maximum data and system security must be guaranteed.
Embedded software is present across numerous sectors:
- Automotive (engine control units, ADAS, infotainment).
- Aeronautics and space (flight system control, navigation).
- Industry 4.0 (programmable logic controllers, industrial robots).
- Telecommunications (mobile networks, IoT systems).
- Medical (connected devices, patient monitoring).
The security of embedded systems relies on several strategies:
- Use of secure protocols for connected object communication.
- Protection against cyberattacks through secure updates.
- Privilege separation between the different components of the system.
- Rigorous source code verification and in-depth testing.
An RTOS (Real-Time Operating System) is an operating system designed for applications requiring deterministic response times. It is used when:
- Tasks must be executed in real time.
- The order of operations is critical (e.g. in an ABS braking system).
- The embedded software must guarantee maximum stability and predictability.
Embedded software testing goes through several stages:
- Unit tests: validation of individual software modules.
- Integration tests: verification of interactions between components.
- Real-world condition tests: running the software on its target hardware.
- Simulation and emulation: use of tools such as QEMU or specific test benches.
The lifespan of embedded software depends on the application sector. In general:
- Automotive: 10 to 15 years (subject to safety standards and updates).
- Aeronautics: 20 to 30 years (extreme reliability criteria).
- Connected objects: 3 to 5 years (rapid technological evolution).
Yes, but it depends on the design of the embedded system:
- Some systems allow OTA (Over-The-Air) updates, as in connected vehicles.
- Others require physical access to reprogram the device.
Firmware is low-level software directly integrated into an electronic component (EEPROM, microcontroller). It is essential for hardware operation.
Embedded software, on the other hand, can be more advanced and is sometimes executed on an embedded operating system.