By Jake Edge
October 10, 2007
Linux is embedded in a huge number of different devices, but the
high-profile gadgets – the Nokia N800 and OpenMoko phone for example
– get all the attention. Those gadgets use Linux as a selling point
and a differentiator, trying to appeal to developers and power users who
can customize the devices to do exactly what they want. Meanwhile, the
vast majority of embedded Linux devices are running it quietly. For those
systems, Linux provides a stable platform, with support for a large number
of architectures and devices, that just works.
Consumer electronics makers are turning to Linux in a big way.
Sony provides an eye-opening list of
their devices that run Linux, which covers a
wide spectrum of the products that Sony makes; things like digital cameras,
video cameras, televisions, audio gear, and professional video equipment.
Other companies also have Linux web pages, none quite like the one that
Sony provides, and the Consumer
Electronics Linux Forum (CELF) has started gathering links to those
sites on their embedded Linux wiki.
Linux provides a number of advantages for embedded developers, the most
obvious is its price. Commercial embedded operating systems typically
charge royalties on a per-device basis, which can be a significant factor,
especially for low-end devices. For high-end devices, especially professional
grade equipment, the cost of the OS is much less of an issue, but the Linux
feature set and hardware support still make it an attractive choice.
One of the advantages that Linux provides is virtual memory – commercial
embedded operating systems often rely on a flat memory layout.
Virtual memory has a number of useful benefits: process isolation, shared code segments, as well
as the ability to overcommit memory. Tim Bird, Sony kernel hacker and
architecture group chair for CELF, puts it this way:
[...] one of the important reasons for using Linux
is its support for virtual memory. There is one product where
the amount of RAM allocated for an application is 10MB, but the
application couldn't fit in this. By using Linux, and
over-committing memory, the OS, libs and the application and
its data were able to fit into the RAM budget. Obviously,
Linux itself and the support programs and libs (primarily
busybox and glibc) must be as trim as possible in order to
make this work. So Sony is always concerned about kernel
and program size.
Another area of importance to the embedded world is the variety of hardware
supported by Linux. Not only is there support for many of the CPU
architectures used in embedded devices, but there are drivers for all
kinds of peripherals that might be used in the design. If a driver does not
exist for the specific peripheral device being used, there is probably a driver for something
similar that can be used as a template for a new driver.
Alternatively, the Linux Driver Project – which we covered last week – is
willing to write the driver given some information about how the device
operates.
Support for multiple network protocols, different bus architectures, and
various peripheral connections (USB, Firewire, etc.) are also very important, depending on the
intent of the device. Because the Linux community is large, and growing,
it can support many more options than the commercial
embedded OS vendors can. In addition, as the development staff at a
consumer electronics company come up to speed on Linux, it will make sense
to use it in more devices. This will lead to more supported devices, CPUs,
bus architectures, network protocols, and so on.
The added features of Linux do come with a cost, which Bird refers to, of
larger kernels and libraries. The linux-tiny project is an effort
to reduce the size of the kernel, so-called kernel bloat, for embedded and
small systems, which has been pretty well received by kernel hackers.
It is a testament to the Linux developers that
it already runs on everything from mainframes to mobile phones; it is a
rare OS indeed that will make the effort to scale over that wide a range,
with the inherent tensions between the needs of the various
constituencies.
It probably isn't possible to get a shell prompt on your television or
video camera, as these devices aren't meant to be user serviceable, at
least at the OS level. User modifications or updates to the code may well be
difficult or impossible as well. For devices that are not connected to the
internet, which is presumably the case for the majority of them, this is
probably a non-issue. Presumably the device manufacturers have ways of
upgrading if bugs or security flaws are discovered, but those would be
handled by service centers or the like. Those who are opposed to the
"Tivo-ization" of the kernel will be less than pleased, but most kernel
hackers seem willing to have it used that way, so long as the code is made
available.
We will be seeing Linux in more places as time goes on as it is proving a
robust solution for all kinds of applications. Perhaps you stare at Linux
all day, hacking on code, working on graphics, or running a word processor,
it is quite possible that you may also be
staring at Linux at night, inside the television in your living room.
(
Log in to post comments)