UClinux

From Wikipedia, the free encyclopedia

The correct title of this article is μClinux. The initial letter is shown capitalized due to technical restrictions.


μClinux (which stands for MicroControllerLinux and is pronounced as you-see-Linux) is a fork of the Linux kernel for microcontrollers (µCs, embedded systems) without a memory management unit (MMU).

uClinux was originally created by D. Jeff Dionne and Kenneth Albanowski in 1998. Initially they targeted the Morotola DragonBall family of embedded 68K processors (specifically the 68328 series) on a 2.0.33 Linux kernel. After releaseing their initial work an developer community soon sprung up to extend their work to newer kernels and other microprocessor architectures. In early 1999 support was added for the Motorola (now Freescale) ColdFire family of embedded microprocessors. ARM processor support also became available later that year.

Although originally targeting 2.0 series Linux kernels, it now has ports based on Linux 2.4 and Linux 2.6. There where never any uClinux extensions applied to the 2.2 series kernels.

Since version 2.5.46 of the Linux kernel the major parts of uClinux have been integrated with the main line kernel for a number of processor architectures. Greg Ungerer (who originally ported uClinux to the Motorola ColdFire family of processors) continues to maintain and actively push core uClinux support into 2.6 series Linux kernels. In this regard uClinux is essentially no longer a separate fork of Linux.

The project continues to develop patches and supporting tools for using Linux on microcontrollers. uClinux has support for many architectures, and forms the basis of many products, like network routers, security cameras, DVD or MP3 players, VoIP phone or Gateways, scanners, and card readers.

The current list of supported architectures includes:

. Freescale M68K/ColdFire (*)
. ARM (varients from many vendors)
. Hitachi H8/300 (and SH2) (*)
. NEC v850 (*)
. Xilinx microblaze
. Altera NIOS
. Sparc (the LEON core)
. Analog Devices Blackfin
. Fujitsu FRV (*)
. Hyperstone E1
. OpenCores OR32
. MIPS
. Intel i960


Quality of support varies, with some ports no longer under active development. Those architectures marked (*) are actively maintained in the 2.6 series Linux kernels. ARM support is currently being merged, most core support is in later 2.6 series kernels. Microblaze and Blackfin are actively attempting for inclusion in main line Linux kernels.

Like any part of the Linux kernel, the extensions (in the form of patches) are licensed under the GPL.

Although strictly speaking uClinux is only the operating system kernel, the uClinux project also produced a C library called uClibc (now separately maintained) and a "userland" which can be used as a complete operating system for embedded systems called "uClinux-dist".

The "uClinux-dist" software package contains libraries, applications and tools. It can be configured and built into a kernel with root file system. It was first released by Greg Ungerer in 1999 as the uClinux-coldfire package. In the following years it came to support many architecture families, and now can even build standard Linux architectures (such as x86) as well.

The "uClinux-dist" userland utilities contain tiny http servers, a small 'sh like' shell, and even a fun ascii art star wars film. It also contains many other well know Open Source packages, like samba and freeswan, all of which run on uClinux systems.

For example, the iPodLinux project uses uClinux for its kernel, and so does Mattel's Juice Box, as well as well-known Nintendo DS Linux port, DSLinux, the lesser-known PlayStation port Runix, and the Playstation Portable port.

It has also been used in the Picotux, advertised as the smallest computer running Linux in the world.

[edit] External links