“Embedded system” is a term one often comes across in various fields of modern technology. Wherever we deal with software and electronic equipment, there’s the chance of encountering this term. So, what is actually an embedded system all about?
A very generic definition of such a system could easily state that it is a combination of software and hardware closely related to each other and designed to perform specific tasks. However, this description would not be too precise. A curious reader might notice at this point that all software is designed for some purpose, and some hardware is required to run it. In order to make this definition more specific, let me say then what an embedded system is definitely not. Such a system will certainly not be called personal computers, smartphones, or, even more so, servers providing cloud services. And why is that, one may ask? Well, these systems do combine hardware and software, but they are versatile ones, not designed for a specific purpose, and the software itself is only slightly dependent on the hardware.
For instance, we can run a music player application on a PC or smartphone, which will result in a sound signal at the output of the hardware layer (in this case, the sound card). However, as we all know, the computer is not just designed to play music. It is a complex device with high computational power components and in order to run such an application, it requires an operating system and several additional software, such as drivers for the aforementioned sound card.
Having all that in place, we can easily use such a system for countless tasks, including playing music. An undeniable advantage, in this case, is the large independence of software from hardware. While creating such an application, our attention must be focused more on the type of intended operating system, and the latter will manage the data conversion into the sound signal for us.
In terms of costs, energy, or mobility, for instance, this may not always be the optimal solution. What’s worth bearing in mind above all is that the more complex a system you have, the greater the risk of errors occurring in it and the lower its reliability.
So, let’s consider the other option: building a device dedicated to meeting only one purpose. Here we can mention the very popular portable MP3 players from not so long ago. And these can be easily called embedded systems. Those devices were designed both from the hardware and software perspective for a well-defined purpose – playing music.
They were equipped with a small processor with quite modest parameters, but sufficient for the intended purpose and, above all, cheap and energy-efficient. Additionally, they did not require an operating system or complex software, which makes the process of their design even simpler and mitigates the risk of potential errors.
Obviously, embedded systems are not the only functionality that can be carried out by a computer. The second and most significant area where we will encounter embedded systems are the systems that are practically irreplaceable with a standard computer.
For instance, let’s look into the controller of an automatic washing machine. While it is still quite possible to imagine a user interface of such an artifact based on Windows or Android (although it would definitely be an excess of form over substance), it would be extremely difficult to efficiently connect such a system with the components necessary for the operation of the washing machine: motor driver, sensors, etc.
And here we are getting to the most important feature of embedded systems – a dedicated hardware layer often equipped with numerous peripherals allowing both the setting of control and execution signals, as well as a very fast response to the received input signs.
So, what peripherals do we have in mind, exactly? Let’s take a glance at the past first. A dozen or so years ago, the market for microcontrollers, i.e. processors for embedded applications, was quite limited. There were mainly simple units with 8-bit architecture, clocked with the frequency of single MHz at most, equipped with a few, maybe a dozen or so, kB of operating memory. Nevertheless, even then they allowed the creation of systems, though not necessarily too complex ones, but strongly connected with hardware. They had several channels of analog-to-digital converters, timers, digital interfaces like SPI, or more for industrial use: RS232 or RS485.
These basic peripherals made it possible, for instance, to operate even several sensors converting any value (temperature, pressure, acceleration) into an analog electrical signal, and also to perform operations in a strictly specified time. Systems based on such controllers were mainly applied in automation and industrial environments.
And how are things nowadays? Well, when it comes to the possibilities given by microcontrollers and embedded processors, it is safe to say that we are now limited only by our imagination.
32-bit platforms, including multi-core ones clocked at hundreds of MHz, Megabytes of operating memory with the possibility of enhancement by external circuits, display controllers, fast digital interfaces such as USB or Ethernet, and even WiFi or Bluetooth – all of this enables the development of not only simple washing machine controllers or production line controllers, but also brings a bundle of possibilities that would be too long to mention in this short article.
Let’s take a bit of a deeper dive into two of today’s most rapidly-developing areas: IoT and Safety & Security. The first one, IoT – Internet of Things, stands for, to put it plainly, often quite simple devices based on embedded systems, such as heating, air conditioning, or lighting controllers, which alone may not revolutionize the market, but if we equip them with the ability to communicate via the Internet with other devices of that type as well as with complex server applications, we will obtain a complete, fully remotely manageable and “intelligent” automation system for houses, hotels, office buildings, or factories.
Another edge of embedded systems, or to be more precise, software dedicated to such systems, is the possibility of ensuring a much higher level of security in comparison to applications based on popular, complex operating systems. Considering how often we receive updates and security patches for systems in our computers or smartphones, we can be sure that many bugs and vulnerabilities have not yet been identified by their authors.
In the everyday use of such systems, it may not sound like a biggie, but when it comes to the safety of property or more importantly human life, dedicated means must be used. And that is where embedded systems come into play again.
Proprietary, heavily limited software that can be tested much more thoroughly is just one of the many pros. And we have also mentioned the peripherals built into the processors. It is not difficult to find microcontrollers nowadays that are equipped with encryption accelerators connected to DMA, which will allow, with no additional load on the processor core, the encryption of huge amounts of data using the latest known algorithms. If you add a dedicated memory for secret keys to the set, you get a system for the secure transmission of strictly secret data, e.g. in access authorization systems.
And what about reliability? Across many industries, especially Safety & Security, a system is required to operate reliably with no interruptions for 5, 10, or even 25 years often in adverse high or low temperatures. No challenge for a well-designed embedded system, that is. Again, we can easily find controllers dedicated to working in a wide range of temperatures, with a guaranteed degree of reliability, and equipped with the so-called Watchdog keeping an eye on the uninterrupted operation of the software.
Embedded systems offer practically unlimited application possibilities. They have an edge over conventional computer systems wherever higher reliability, deterministic software, and integration with hardware are required and at the same time, a very high computing power is not necessary. They will prove useful where it is beneficial to use a dedicated hardware platform and more resources can be devoted to the preparation of dedicated software.
Here at Solwit we develop and test embedded software of all types. From embedded systems to complete IoT solutions with an eye on attack resistance.