An Embedded System is a programmable electronic system that is used for a very specific purpose. Think of a printer in your office. Inside this printer, one or more microprocessors operate, with a limited amount of memory and peripheral electronics to take data and print it out on paper. The tasks of this embedded system are manifold:
- Communication with the PC via network, USB or similar.
- Reaction to keystrokes on the printer
- Feedback on the printer display
- Control of the entire printer mechanics (motors, sensors, etc.)
- Control and monitoring of the entire system
Depending on the desired printer performance (color, resolution, pages/minute), these tasks must be performed more or less quickly. For this purpose, as with PCs, there are processors of different performance classes. Well-known processor families are ARM, MIPS, Coldfire, 8051, but also the Intel x86 series known from the PC world.
In the past, embedded systems were programmed directly in assembler, the machine language of the processor. Memory was expensive and very limited at that time. Assembler programming was still manageable to this extent and it was possible to optimize the programs down to the last bit. Reading, analyzing and maintaining the programs was only feasible with high effort. With growing functionality this way was no longer practicable. The complexity of tens of thousands of lines of assembly code led to the use of new "higher-level" programming languages such as C, C++ or Java in the embedded world as well. Higher level programming languages and program libraries allow faster realization of embedded programs.
For example, a printer manufacturer can prepare a program library for all the displays in his devices and then simply reuse it in different devices. Over time, the operating systems also moved into the embedded systems. As in a PC, these take over fundamental tasks in the system to exchange data via networks, manage memory or respond to inputs. The embedded operating systems differ in many areas from the known PC operating systems, are usually much leaner and react exactly predictable to events (real-time capable). Well-known representatives of embedded operating systems are VxWorks, Nucleus, QNX but also various Linux variants. Recently, well-known systems such as Windows or Android have also gained a foothold in the embedded sector.
Programming languages - a short digression
Questions about programming embedded systems?