Embedded Linux
Finn Schiermer Andersen, July 2000
Summary and Conclusions
Linux will be a major player in the embedded OS landscape. It emerges as the platform
of choice for many vendors of various sorts of equipment. Traditionally, embedded systems
are based on proprietary kernels and small microcontrollers. This will change. The development
in CMOS technology constantly lowers the price difference between 8-bit controllers and
low-power implementations of 32-bit general purpose CPUs. Meanwhile, everybody now wants to
put their equipment "on the net" requiring TCP/IP and multitasking. Implementing and
supporting applications and kernels of this degree of complexity with proprietary software
incurs a high cost. Thus, the incentive to replace microcontrollers with general purpose CPUs
and in-house developed kernels with a standard operating system is growing rapidly. Putting
a linux kernel in your fridge or your TV may sound like a gimmick today, but will make good
economical sense tomorrow.
From a research viewpoint, Linux itself (embedded or not) is not interesting. It is just another
platform. What is interesting is:
- Design of communication and application architectures supporting a distributed system
in which individual components may drop out and reenter without prior notice; and where
very small "client" subsystems may suddenly move between subnets and their servers, as
when you move a small appliance from your home and into your car.
- Design of services that fits a future home and workplace filled with communicating
smart equipment. Institutions like IT-C where technicians and designers work together
may be an ideal environment for initiating interesting inventions in this area and
possibly even spawning small startups on the way. Take a look at
Adomo for inspiration.
- Reliability. Lots of embedded applications are mission critical. Using ctrl-alt-del
is not an option. But the systems in which Linux will be used will most likely be
about as complex as a 1994-96 desktop computer and whith corresponding processing
power. Formal techniques may fall short when applied to multi-component software
systems of such complexity. Restricting the expressive power of the programming language
to facilitate formal techniques may not be an option, because one of the main attractions
to linux in the first place is the wealth of software already available.
It is not crystal clear to which extent these problems are actually well placed under the
RCES program. Surely, we are talking about embedded systems here, but they are not significantly
more ressource constrained than your average desktop computer. There will be less than a
factor of 10 difference between a high-end desktop and a high-end embedded device running
linux in terms of both processing power and memory size.
I believe the most interesting focus in an embedded linux laboratory residing with IT-C would
be in design of future services for communicating smart devices. This is a vast open design
space ripe with opportunities. IT-C with its novel mix of technicians and designers may be
uniqely placed to initiate and/or nurture development in this area. Such activity may
(and should) spawn commercial opportunities.
Contents
This document comprises the following sections
- Overview of the embedded landscape. Explaining a few important distinctions
used in the rest of this document.
- Hardware platforms. A short round-up of the two most important hardware
platforms for high-end embedded products.
- Embedded Linux Distributions. With links to the most prominent distributors.
- Some interesting products. This section gives an idea of the current state
of high-end embedded linux products.
And finally some links to relevant organisations.
The purpose of this document
The purpose of this document is to investigate the concept of an "embedded linux laboratory"
to be established at IT-C in Copenhagen under the RCES (resource constrained embedded systems)
program. This document is based on extensive searches on the internet including commercial
web-sites, journals related to linux or to embedded systems, mailing-lists and unix usenet
newsgroups. The familiar spam-mail title "get paid to surf the net" has taken on new dimensions
for me during this work.
Overview of the embedded landscape
Only a part of the embedded landscape is well suited to Linux. Before going into more depth
with this part, we'll briefly characterise the embedded landscape to sort out where Linux
is relevant.
Four complexity levels
We may separate it into 4 levels or segments according to their complexity.
- 32-bit CPU +MMU. The top level consists of systems which are scaled down versions
of desktop computers. These systems all contain MMU (Memory mamagement unit) -- the
device which allow separation of process address spaces and protects processes against
each other and the kernel against processes. These systems will run Linux with little
modification.
- 32-bit CPU -MMU. This layer differs from the one above by omitting the MMU. Special
versions of linux, targetted specifically towards this segment, exist. In this layer
we will also find survivors from the architectures of the 80'ies such as MC68K
derivatives.
- 8-/16-bit Microcontrollers. This is the major part of the embedded landscape. These
systems are generally incapable of running Linux because the kernel requires at
least a 32-bit address space.
- Dedicated hardware. Very small systems. Controlled by dedicated state machines.
The two top levels are growing in importance as 32-bit embedded processors get cheap. The
top layer is especially interesting because it allows us to use existing software with
little or no modification.
The importance of the MMU
The MMU allow each process to have its own protected address space. It also protects the
kernel from individual processes. It is a powerfull debugging aid during development because
it allows the use of memory allocators designed to pinpoint memory administration leaks
in applications.
The MMU allow the use of shared libraries. The same code segment may be mapped into the
address space of multiple
processes. This greatly reduces stress on the working memory as well as on
the filesystem. The larger and more complex the platform, the more important is sharing in
order to reduce storage requirements.
Technically, shared libraries can be implemented in software. It is currently not known if
that is an established option for Linux.
The importance of a Real Time Operating System
Traditionally, real time operating systems (RTOS) have been required by many embedded systems. A
RTOS implements strictly priority based scheduling ensuring that the highest priorty thread
will always run. Linux, on the other hand, is based on fairness scheduling. Major distributions
of Linux for embedded systems now include a (soft) real time scheduler which augments the
standard scheduler in the linux kernel.
Meanwhile, the importance of real time constraints is diminishing for two reasons: 1) The
processors are getting faster relative to most peripheral equipment, and 2) the peripherals
are getting more tolerant because they include more buffering.
Conclusion
Work with embedded Linux should be based on a 32-bit CPU + MMU platform. The levels below
either does not run Linux or requires a number of modifications to standard software. Further,
the 32-bit - MMU segment will be reduced in size. The cost of an MMU is low in terms of
die space, and consequently it will become standard.
The rest of this document reflects this.
Major hardware platforms
There is a strong tendency towards System-on-a-Chip (SoC) solutions. Actually, the RAM and other
storage devices will continue to be on their own chips. SoC's usually integrate both a general
purpose CPU and most of the I/O controllers present on a standard PC motherboard. To make the
level of complexity integrated more visible, a brief presentation of the major architectures
follows.
PowerPC
Motorola produces some nifty implementations of the PowerPC architecture. The PowerPC architecture
is a typical 32-bit general purpose programming model (64-bit versions exist, but not embedded) of
the RISC era. It includes 32 32-bit registers, MMU, and caches. Several SoC's exist, for example the
MPC623e whit these features:
- PowerPC integer core (no floating point), MMU, 16+8Kb cache.
- Parallelly running communication processor with 16 bit DSP like fixed arithmetic.
(pipelined multiply-accumulate)
- Dedicated hardware/firmware for more than 10 communication protocols, including
USB, Ethernet, ISDN, V.32bis modem and infrared communication (IrDA).
- DMA into/from virtual memory space.
- Memory controller for eight banks, supporting glueless integration.
- Video controller and LCD controller configurable for a variety of screens.
- Hardware data- and code-breakpoints for debugging.
- 75MHz, about 0.2 - 0.3 Watt
Visit
Motorola for technical details.
PowerPC linux will run on such a beast.
StrongARM
The ARM (Advanced Risc Machine, former Acorn Risc Machine) is an architecture specifically
designed for the embedded or low cost, low power markets. ARM was bought by Digital and later
sold to Intel who now owns the rights and produces the StrongARM processers. The ARM
architechture is a RISC-like 32-bit architecture with 16 registers. It is not ideally
suited for high-performance implementations, but works well in the embedded or low-cost
segment for which it was designed. The ARM architecture also include the THUMB small-footprint
instruction subset, which reduces code bandwidth requirements with about 30%. In contrast
to the big RISC machines such as the PowerPC, the code density for ARM corresponds to or is
better than x86 code density.
The StrongARM 1110 is the SoC of choice here. It includes the ARM processing core and roughly
the same communication facilities as the PowerPC 623e. It does not have a separate communication
processor. Visit
Intels StrongArm developer site.
ARM Linux will run on such a platform.
Others
Embedded x86's are generally underperformers compared to
the RISC players when meassured in performance/watt. On the
other hand, Linux for x86 is the most mature linux variant.
MIPS also develops many different low power processors and
cores for use in embedded platforms. I've left out the MIPS
platform because porting of Linux to mips looks
immature
General observation
Linux will usually run on hardware targetted at the WinCE (embedded windows)
platform. Consequently, looking for products shipped with WinCE is one way
of finding potentially interesting hardware platforms. Currently there are
no commerciallay available offerings of handhelds born with Linux.
Instead, you grab your favourite WindowsCE based handheld and "flash in"
the new operating system. Apparently, this may be
tricky!
(see step 12 in the description)
Embedded Linux distributions
Several distributors specialize in scaled down linux distributions. This not only
implies trimming fat from the kernel itself, but also includes lightweight
implementations of other (user-space) infrastructure components, such as the
windowing system.
Some suppliers:
- Hard Hat Linux (MontaVista software). Available
for x86, PowerPC and ARM platforms.
- Blue Cat Linux (LynuxWorks). Available
for x86 and PowerPC platforms.
- Embedix (Lineo). Available for PowerPC and x86,
support for ARM is currently beeing implemented.
- RTLinux (FSMLabs. RTLinux is a minimal real time
operating system running standard Linux as a preemptible thread (sic).
- uClinux (RT-Control. Micro-controller linux
is the premier adaption of Linux for non-mmu processors (microcontrollers).
Many more can be reached through LinuxDevices
web portal.
Unfortunately, specific combinations of hardware and linux distributions are
untested. This is most likely because the development of embedded hardware is
going very fast at the moment. We will have to get a suitable hardware platform
along with several linux distributions and try them out.
Interesting Products
Products are combinations of a hardware platform, an OS (often WinCE) and
tailor made applications. Of the five products introduced below are 3
handheld computers, one single-board-computer and a smartcard. The 3 handhelds are
all based on the StrongARM platform, while the single-board-computer is
based on PowerPC. The smartcard is based on a low power derivative from
the old MC68K series.
They form a representative picture of the current emerging market:
- The StrongARM architecture seems to be preferred for high-end
personal assistants.
- The PowerPC seems to be preferred in the industrial setting, i.e.
instrument controllers, smart phones, routers/switches. Perhaps
because of the integrated parallel communication processor?
- The smartcards use of uCLinux serves to illustrate the dividing
line between the CPU+MMU and the CPU-MMU segments. It is currently
not economically feasible to produce a smartcard running full-fledged
Linux.
Itsy
The Itsy
is a pocket computer developed as a research project by DEC Western Research Lab
in 1998. It is not a commercial product, but all schematics are available on the net allowing
you to build one by yourself. The Itsy is based on the StrongARM architecture.
Ipaq
The Ipaq (Bitsy)
is a WinCE based handheld developed and sold by Compaq. Compaq also provides the
instructions for installing Linux on the device instead of WinCE.
Compaq has donated the site
www.handhelds.org to promote handheld computers.
View a
photo of the Ipaq running X. The Ipaq is based on the StrongARM hardware platform.
Yopy
The Yopy
is supposed to be the first Linux based handheld. Unfortunately, it appears to
be mostly vapourware so far.
Denx TQM
The TQM produced by TQC
in germany is more like a traditional single board computer. It is based
on the PowerPC embedded processor series.
The TQMs are small --- half the size of a credit card ---
and comes with up to 64MB of memory. Denx
supports a distribution of PowerPC
linux specifically suited for the card. Denx also supports deployment of custom solutions.
smartdata.ch
The swiss company, Smartdata
(try article, if server
unavailable),
has developed what appears to be the smallest running Linux installation
yet: a smart card 2.9mm thick with 2Mb ram, 4Mb flash and Linux. It is capable of running a web
server. Unlike the other products it runs a version of uClinux and does not have a MMU.
recomendations
We should by an Ipaq to get hands-on experience with this kind of device and with the
product development cycle suited for it. If/when the Yopy leaves the vapourware state, it
would provide the easiest way to obtain a handheld Linux.
Interesting Links
Magazines, Journals and Articles
The most important portals are:
Two sample articles: Take a look at
Linux strafes the embedded landscape or
One-chip
Linux systems hasten arrival of Post-PC Era.
A Good Laugh
For a good laugh check out deepLinux and look under
"about us:company".
Other organisations
Two other organisations to watch:
- handhelds.org. The site donated by
Compaq to support linux on handheld computers.
- linuxce.org. The organisation trying
to replace WinCE with Linux on all applicable platforms.
Directions
Going further requires some hands-on experience. I recommend buying an IPaq and
trying out the recipes for installing Linux, and/or buying an evaluation board
(starter kit) for TQM modules and Denx customised Linux distribution.
Finally,
but perhaps most importantly,
some kind of vision or statement of purpose is needed to advance the
idea of an embedded linux lab further.