Even in the field of embedded systems the trend goes to more and more powerful CPUs, which can be used to open up new applications for embedded systems.
Not only the CPUs but also the tasks and the programs of embedded systems get more and more complex. That is the reason, why it is no longer acceptable to develop software for embedded systems using low-level languages like assembler instead of more abstract and portable high-level languages like ANSI C/C++.
Even the peripheral devices of typical embedded systems got more complex in the last years. It is not unusual for today’s embedded systems to offer e.g. IP support. That is one additional reason why most today’s systems need an operating system.
Several manufacturers have recognized this problem. They offer microcontrollers which are based on x86 cores. This makes them compatible to the widely used PC architecture. So developers are able to use common operating systems and development tools. This is a great advantage compared to other embedded architectures, because the manufacturers of these architectures do not offer special development tools like ANSI C compilers for their architectures.
Advantages of Linux
In the last years Linux gained relevance especially on the server market and gets now more and more important on the market of embedded systems. Compared to other popular PC operating systems Linux has got several advantages especially for the embedded market:
- You do not have to pay any kinds of license fees, because Linux is distributed under the terms of the GNU General Public License.
- There are compilers for all common programming languages like ANSI C/C++. It is possible to choose the optimal language for each project. Most embedded architectures offer only assemblers and in some cases simply ANSI C compilers.
- Linux is distributed with the complete source code. That makes it possible to adapt the kernel to the special needs of a project. It is really easy to add new drivers for special devices to the operating system.
- It is possible to install a complete Linux system on a floppy disk or a 2 Mbytes flash ROM. That means that you can create really small Linux systems.
- Linux has got all functions of a server operating system like: multitasking, network support, remote administration, memory protection, etc.
- A lot of embedded systems should be connected to IP networks. Therefore the embedded systems needs not only network support but also server software. In most cases it is not necessary to develop such software for Linux systems, because there are programs for most common protocols (e.g. FTP, FTP, SMTP, NNTP, SMP). Even these programs can be used without a fee in most cases. For example you could create an embedded system, which can be configured via an HTML interface. The data created by this systems can then be sent via e-mail.
As most other multitasking system the normal Linux system is not real-time capable. That means that the operating system does not guarantee a maximum time after which a process gets computing time. This is not a problem for most applications. Only embedded systems which are responsible for controlling machines depend on real-time guarantees.
Consider a barrel filling machine. The embedded system opens a valve und the fluid flows into the barrel. A little bit later a sensor reports that the barrel is full. Unfortunately the controlling process gains computing power 10 seconds later. At this point of time it is to late to close the valve: the barrel is already overflowed.
There are miscellaneous real-time add-ons like Xenomai so that you can use Linux even for such controlling tasks.