[LWN Logo]
[Timeline]
From: Jennifer Finlinson <jennifer@lineo.com>
Subject: Technical Information on Linux and MMU-less processors
Date: Fri, 4 Aug 2000 16:42:00
To: lwn@lwn.net


Jennifer Finlinson
Lineo, Inc.
Tel: 801-426-5001 x264
Cell: 801-319-2173
Jennifer@lineo.com
www.lineo.com



CPU Support Under uCLinux 
"Running Linux on low cost, low power processors" 
  
Technical Bulletin

August 4, 2000 
Embedded devices like PalmPilots, Lineo's uCsimm microcontroller module,
 voice-over-IP telephones , a programmable logic controller, digital indoor
cameras, and Lineo's line of VPN Internet routers among others, use "MMU-less"
processors to reduce both cost and power consumption.  Although these
devices are very compact and low in power, they all run Linux.  This "Technical
 Bulletin" briefly describes some of the technical issues associated with
creating these types of products under Linux -- specifically Lineo's uClinux.

What's an MMU?? 
Standard computer systems include a fixed amount of system memory -- usually
RAM (e.g. 64 MB) -- which is manipulated by the hardware and operating
system to allow the computer to perform multi-tasking in an efficient
and safe manner.  The piece of hardware that actually performs this function
is a subset of the CPU architecture called the Memory Management Unit
(MMU). 
The MMU implements what is called "virtual memory" -- "virtual" because
it represents an addressable space which is larger than the actual physical
memory of the system, and "memory" because this space is treated exactly
as if it were physical memory (e.g. RAM).  Within this virtual space,
each user space program (e.g. application) gets its own independent section,
protecting both the OS and the user space programs from faulty or malicious
user space software. 
The MMU is an indispensable feature for desktop and high-end platforms.
 However the power, memory and cost overhead of the MMU generally makes
it a poor choice for deeply embedded applications.  Fortunately a whole
class of CPUs, referred to as MMU-less CPUs, is available. 
Running Linux on MMU-less processors 
Traditionally, Linux has been optimized for full featured CPUs.   However,
since its initial release in 1998, uClinux has provided a very small memory
footprint especially tailored for those processors which lack an MMU.
 Although originally developed for the Motorola 68EZ328 chip, uClinux
now supports an expanding line of processors including: 
Motorola DragonBall (M68EZ328), M68328, M68EN322, ColdFire 5206e, 5307,
5407, MC68EN302 and MC68EN360
ARM7TDMI
ETRAX
Intel i960
When developing for these processors, designers must manually coordinate
each task's memory allocation.  Consequently, writing complex applications
for MMU-less systems can be more challenging than developing for systems
which include a MMU, but for simple applications like those generally
found on a deeply embedded system, code development under uClinux is actually
quite straightforward.  Also, programs executing on MMU-less processors
are not intrinsically unsafe as some would believe.  One look at the wide
array of devices running on low cost, low power processors provides evidence
of the usability of uClinux. 
uClinux is the leader in ultimate Linux portability because the kernel
and most of the uClinux applications and services have been heavily optimized,
resulting in a code base that is much smaller than the "original" Linux
distribution.  Despite this small code size, uClinux still retains the
main advantages of the Linux operating system: stability, superior network
capability, and excellent file system support. 
Some of uClinux' features include: 
Common Linux API
uCkernel < 512 kb
uCkernel + tools < 900 kb
A full TCP/IP stack  (uClinux is an internet-ready OS perfect for embedded
systems)
Support for numerous other networking protocols
Files systems:  NFS, ext2, MS-DOS, and FAT16/32 are supported.
Where can I get it? 
uClinux is an open source project that can be freely distributed under
the GNU General Public License. Continued development is funded, supported
and hosted by Lineo. Lineo also provides the official distribution CD
of uClinux with support for the Motorola Dragonball and ColdFire, and
beta support for the ARM7TDMI and i960.  This CD can be ordered from the
uClinux order desk.  Alternatively the source can be downloaded from 
http://www.uClinux.org 

About Lineo, Inc. 
Lineo™, Inc. develops, markets and sells embedded Linux system software
and applications that provide OEMs and consumers with simple, low-cost
software for interacting with the Internet via embedded devices. Lineo
owns the Embedix™ product family including Embedix Linux, Embedix SDK
and Embedix Browser. Lineo also owns other technologies designed to improve
connectivity while reducing system requirements and per-unit costs. Visit
Lineo, Inc. at www.lineo.com. For more information, contact Lineo, Inc.
via e-mail: info@lineo.com or telephone: (801) 426-5001.