To fully appreciate the good example projects using embedded Linux mentioned here, it is important that you understand the details about what embedded software is today. The easiest way to describe embedded software is to say that embedded software is the software which is supplied with electronic hardware like consumer electronics or a component such as a computer graphics card. We can also describe embedded software as the software which is programmed directly onto the hardware components.
These descriptions would therefore classify the lesser thought of device drivers as being embedded software even though they reside in larger operating systems.
A Better Understanding
The above descriptions however, may or may not be enough to get a clear picture of embedded software. To explain in another way, any software you commonly find in consumer electronics, phones, car electronic systems, household appliances, televisions, toys, installation disks that come with computer components and many more alike can be regarded as embedded software.
This list would indicated that embedded software is normally less complex and is targeted at a specific function. This is not really the case as embedded software can also be found in a more industrial scale such as in the robotics industry, control systems for manufacturing, airline electronics, air traffic control and nuclear power control which form just a few examples of complex embedded systems. In short, there is no limit to the capabilities of embedded software today as it was in the past.
Characteristics of Embedded Software
What differentiates embedded software from other software? The line is somewhat clear, and yet the clear differences seem to lose relevance in this fast paced growth in the technology industry today.
Embedded software is usually designed for a special purpose on specific hardware. This software normally comes supplied with the specific software embedded in chipsets that act as Read Only Memory (ROM). This is common for example in watches and calculators. It may also be stored on disks but designed to run on specific CPU architectures such as air traffic control systems.
This in contrast with non-embedded systems which are designed to be general purpose operating systems with their vast uses being defined by the different applications that can be installed so as to leverage the operating systems resources and interfaces to meet a particular needs.
Increasingly you find that embedded software or firmware as it is called in some cases, are capable of receiving updates and upgrades directly through various methods such as over the air in the case of set-top boxes and through computer interfaces such as smartphones and network routers.
It is not strange today to find real-time embedded operating systems being capable of crossing the threshold and supporting semi-embedded systems in a bid to diversify their functions and MeeGo is one such example.
The MeeGo Project
MeeGo is one example of an embedded project using Linux. MeeGo was born out of the merging of two other separate Linux embedded projects Maemo and Moblin.
Maemo is a Linux based operating system developed by the Maemo open source community and backed by Nokia which is primarily used for smartphones and Internet tablets. The most notable device using Maemo is the Nokia N900.
On the other hand Moblin was developed by the Linux Foundation with support from Intel which targeted embedded devices, netbooks and other Mobile Internet Devices (MIDs).
MeeGo which is hosted by the Linux Foundation with support from Nokia, Intel, AMD, Novell and the MeeGo open source community is a typical example of an embedded Linux based mobile operating system.
MeeGo is very flexible and is designed for several platforms centered around mobile devices and consumer electronics. Even though it can be used in netbooks and low powered desktops, MeeGo has its strengths in mobile computing with the likes of smartphones, tablets as well as set-top boxes and in-vehicle infotainment devices.
The Future of MeeGo; an Introduction of Meltemi and Tizen
Interesting though, MeeGo is expected to be split up in 2012. The two supporting companies that brought MeeGo to the world are stepping away to continue development on two totally new MeeGo derived embedded Linux projects.
Nokia is heading off to continue work on Meltemi which is an mobile operating system for their line of feature phones which is slated to replace Nokia's propriety embedded mobile operating system popularly known as Series 40 or just S40.
Intel's plans for MeeGo are centered around continuing the work in the form of Tizen as a new embedded Linux operating system that is focused on HTML5. The view of Intel is HTML5 is widely seen as having a significant future in embedded software applications which MeeGo was not originally designed for as MeeGo development is based on the Qt development framework.
MeeGo work will continue to be maintained by the online community.
Examples With Source Code
The Qt development framework maintained by Nokia has some great documentation where you can get information and tutorials on how to develop embedded software. The development documentation also goes further to provide examples which include the source code to various simple programs which can be found here.
There are several projects using embedded Linux, most which are propriety or closed source and yet we use them every day. Several device manufacturers adopt Linux as the underlying software for their hardware components, consumer electronics and toys. You definitely have these items in your homes right now but you may not aware of it.
There are few good example projects using embedded Linux that are generally available and widely known such as those mentioned above. Fortunately enough, they provide us with plenty to make us understand more about embedded Linux.
- Maemo Community, maemo.org/
- Qt reference documentation for Embedded Linux, doc.qt.nokia.com/4.7-snapshot/qt-embedded-linux.html
- Sreenshots taken by Author
- Image Credits: Nokia Press, press.nokia.com/products/media/6917/photo/nokia_n9_07/
- Embedded Software, Advances in Computers by Edward A. Lee, ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf
- MeeGo, meego.com/
- Moblin Linux Foundation project, moblin.org/