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.