Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Linux runs on a large and ever-growing number of machine architectures, but not all these architectures are actually used in embedded configurations, as already mentioned. A quick look at the arch subdirectory of the Linux kernel sources shows 24 architectures supported in the official kernel at the time of this writing, with others maintained by developers in separate development trees, possibly making it into a future release of the official kernel. Of those 24 architectures, we will cover 8 that are used in embedded Linux systems (in alphabetical order): ARM, AVR32, Intel x86, M32R, MIPS, Motorola 68000, PowerPC, and Super-H. The following discussion will look at each of these architectures in terms of the support provided by Linux to the CPUs belonging to that architecture and the boards built around those CPUs. It will also cover the intricacies of Linux’s support as well as some of the possible caveats.
MMU-Less Linux Systems Running uClinuxIn addition to the eight architectures mentioned previously, Linux also runs on uClinux-based systems—such as those based on the Blackfin from Analog Devices—and the Microblaze soft-synthesizable IP core from Xilinx used in a growing number of newer FPGA-based devices running Linux. These systems don’t feature a traditional MMU (memory management unit), a defining characteristic of modern Unix-like systems and the hardware support for the operating system concept of virtual memory abstraction. These processors are typically intended as an alternative to older 8-bit microcontrollers in low-cost devices where cost sensitivity or FPGA fabric gate utilization still precludes use of a processor with an MMU. uClinux-based systems have included commercial printing solutions, home entertainment devices, and the original iPodLinux port. (Modern iPhones and iPods are based around more powerful ARM processors that include a full MMU and so eventually will be able to run the official Linux kernel, once the port is complete.) uClinux is feature complete and is supported in the official Linux kernel. We will not cover the MMU-less architectures supported by uClinux in this chapter (even though such support has now been integrated into the official 2.6 series Linux kernel) because this book is primarily concerned with 32-bit (and higher) systems featuring a full MMU, but also because more and more processors that you are likely to encounter are now able to have an MMU. Few new architectures are being seriously considered that don’t provide at least a basic MMU (and many are also now beginning to feature complete virtualization technologies—even in the embedded space). The bottom line: if you are interested in learning more about uClinux, we suggest that you first read this section, and then investigate one of the texts available on that subject, or consult http://www.uclinux.org. |