Embedded systems have been around practically as long as computer systems have been around, simply by definition.  A computer system is embedded if it is designed around a single task, however complex, and engineered to those specifications as far as performance, hardware, and software are concerned.  A network-enabled HD television is an embedded system, as is an iPod, a cellular phone, or any of the myriad of computers that run a modern automobile (or of the hundreds that might run a commercial jet or spacecraft).  This is in opposition to “general purpose” computers, such as desktop or laptop PCs.  The line gets fuzzy around smartphones, servers, and other machines that are capable of multiple complex tasks, often simultaneously, yet still meet the definition of being engineered for a specific purpose.

Hair-splitting aside, embedded systems as a class of devices have a few things in common which are of great interest to computer engineers.  The most important of these is customization.  Software is a component in a larger overall system, and when the requirements of that system (and the hardware) is strictly defined, or changes during the project as often happens, the software must be able to easily change with it.  Software should not be a limiting factor in system design if at all possible.

This is where embedded Linux, and open-source in general, becomes interesting to system designers.  Linux is not only customizable, it is locally customizable.  You can operate on your own copy.  If you don’t like what it does, you can change the source code, create new components, or search (in places like sourceforge.net, among others) the thousands of projects already created and shared by other people.   Collaboration, rather than competition, has become a tremendous positive force in embedded device engineering.

This entire idea is in direct competition with the paradigm of proprietary software.  “Closed” systems offer nothing with this level of potential customization and control.  There is a price to freedom, of course—the ramp-up cost of learning a new system, of course, and the lack of a responsible party to blame if something turns out differently from expectations.  The first is on par with (or, frankly, often easier than) the same ramp-up with proprietary systems, and the second can be mitigated by hiring someone to take the blame.  There are now several large players in the embedded Linux marketplace offering support and customization (full disclosure: I work for one), and most offer legal indemnification.  All of the commercial providers currently offer royalty-free operating systems, and in the embedded world, that cost difference can mean the difference between success and failure.

And none of the business-level decisions above even approach the quality differences.  Linux has been recognized in all embedded sectors as being equal to—or superior to—traditional proprietary embedded operating systems.  It helps to have thousands of motivatd developers working on your project for free.

Given all of this, embedded Linux has become interesting because of the cost and quality advantages it has.  But why now?  Why was embedded Linux not so popular ten years ago?

The answer is partly that the scalability of Linux was really first being explored as the kernel itself was maturing.  Ten years ago, Linux was only about 8 years old, and many capabilities simply had not yet been developed.  One was in process, though, and that is real-time support, which is key to many commercial embedded systems.  Real-time support has progressed from 1997, when the first real-time patches were being introduced, through 1999, when the first embedded Linux support company (MontaVista Software—my employer) came into existence, through sucess and regression in the early 2000s, until now.

At this point in history (early 2009), embedded Linux is on par performance-wise with most traditional real-time operating systems.  It is also far more scalable than the proprietary RTOSes, and is exploding in growth in diverse sectors, from servers to cell phones to automotive and space systems to dedicated consumer devices.  Many pundits and market analysts consider Linux in general to be the strongest sector in software engineering, period.

The fastest-growing segment in computer engineerng five years ago was servers, the machines that deliver the data.  Today, that title appears to have been taken by consumer devices, consumers of that service, and the fastest-growing in this arena are mobile internet devices (MIDs), netbooks, and smartphones.  Embedded Linux is poised as a leader in all of these niches.   Businesses have caught on, and tipping points have been reached.

In other words, embedded Linux is suddenly interesting because it is highly customizable, royalty-free, and good, and has been becoming so for a long time.   And it is getting better at a logarithmic rate.  That sure makes it interesting to me.

Want to learn more about embedded Linux?  Join us in the Meld community.