What is embedded systems programming?
Embedded systems programming, also known as embedded programming, facilitates the development of consumer-facing devices that don't use conventional operating systems the way that desktop computers and mobile devices do.
Microprocessors and microcontrollers are built into these embedded devices to aid in the performance of a single function or set of related functions. Common examples of embedded systems include microwaves, smart refrigerators, industrial robots, video consoles and satellites.
Many embedded systems might not have a user interface (UI) if they are programmed to carry out a specific task inside a device such as the computers that control an automobile's tire pressure monitoring system or antilock brake system. Due to the lack of a human interface, these embedded systems use sensors to monitor specific features and can initiate an automated action in response to data received from the sensor. Yet, other embedded systems, such as those seen in mobile devices, will have intricate graphical UIs using a touchscreen, LED and button technologies.
Best operating systems for embedded systems
Most embedded applications are in real time, meaning they respond to an outside event in a predictable way. Therefore, embedded systems frequently use real-time operating systems (RTOSes) to ensure that applications can handle data fast. Many embedded systems also require the system to process data within a set period. The RTOS measures processing delays in tenths of a second as the smallest delay can cause a system failure.
The two popular OS concepts for real-time systems are known as event driven and time sharing. If the new task has a greater priority than the old one, an event-driven operating system (OS) will switch to the new task. In an event-driven system, the OS controls the functions based on their level of importance. A time-sharing OS changes function frequently using a clock interrupt. There is no priority level given to the jobs and to ensure that each duty is finished, the embedded software often switches between them.
While many embedded operating systems are suitable for various devices, the choice of OS for an embedded system can be considerably influenced by the hardware layout and personal preferences of the programmer. Two typical ways to categorize embedded operating systems are whether they run on microprocessors or microcontrollers and whether software engineers use them, especially for certain industries or devices.
The following embedded operating systems are most often used in specific industries, electronic devices and embedded software programming:
- Automotive. Embedded Linux, QNX, Integrity and Android OS.
- Consumer electronics. Embedded Linux and Android and WebOS. Televisions and set-top cable boxes are some examples of consumer electronics.
- Industrial. Desktop Windows, Linux, embedded Linux and bare metal for machine control.
- Agriculture and construction. RTOS for electronic control units and embedded Linux for operator terminals.
- Medical devices. Embedded Linux, QNX, VxWorks, bare metal and FreeRTOS.
- Aviation. VxWorks, Embedded Linux.
What is embedded hardware?
An embedded system is an amalgamation of both computer hardware and software layers. The central processing unit (CPU), which acts as the primary system controller, is the foundation of the hardware layer.
The following hardware components are commonly found in an embedded system's CPU:
- Microprocessor. This contains only a CPU and has minimal power to perform one simple operation.
- Microcontroller. This multitasking chip integrates the CPU, I/O ports and RAM/ROM memory to perform several tasks.
- Memory. This includes devices for data storage.
- I/O. These are devices for carrying out input and output operations.
- Buses. A computer bus is used for transferring data between hardware components.
- Sensors. These are used for converting physical data into analog electrical signals.
- Analog-to-digital converters (ADC). These transform analog electrical signals such as sound or light into digital ones that the processor can read.
- Digital-to-analog converters (DAC). These can transform the processor's digital signals into electrical ones.
- Actuators. Actuators enable the functioning of mechanisms based on the signal from the processor; for example, making a motor move.
- Peripherals. These include peripheral devices such as cameras, printers, scanners and keyboards.
Embedded hardware elements can be integrated on one board, comprising a system-on-chip (SoC). A more complex board such as a system-on-module (SoM) can also be used, which is the integration of many chips.
What is embedded software?
Depending on the complexity and use of the device, the software layer might include a variety of components.
The following four components typically make up an entire embedded software suite:
- Firmware. This is a built-in program written for specific hardware.
- Operating system. This is the software used for setting rules and controlling system resources. It includes device drivers that provide an application programming interface (API) for upper software components and makes them communicate with hardware parts. Operating systems can either be general-purpose or real-time.
- Middleware. This is a mediator that enables communication between upper and lower software levels. Middleware is created for a definite operating system and lies between an OS and application software.
- Application software. This is the software that directly performs the system's functions and interacts with end users.
All these components are included in large, complex embedded systems, although basic embedded solutions could be missing some software elements, such as an operating system.
Internet of things (IoT) devices cannot function without embedded systems. Learn more about their operation, their parts and how to choose the correct embedded system for an IoT device.