Chapter 1 Introduction 1.1 Why Linux? 1.2 Embedded Linux Today 1.3 Open Source and the GPL 1.3.1 Free Versus Freedom 1.4 Standards and Relevant Bodies 1.4.1 Linux Standard Base 1.4.2 Open Source Development Labs 1.5 Chapter Summary 1.5.1 Suggestions for Additional Reading Chapter 2 Your First Embedded Experience 2.1 Embedded or Not? 2.1.1 BIOS Versus Bootloader 2.2 Anatomy of an Embedded System 2.2.1 Typical Embedded Linux Setup 2.2.2 Starting the Target Board 2.2.3 Booting the Kernel 2.2.4 Kernel Initialization: Overview 2.2.5 First User Space Process: init 2.3 Storage Considerations 2.3.1 Flash Memory 2.3.2 NAND Flash 2.3.3 Flash Usage 2.3.4 Flash File Systems 2.3.5 Memory Space 2.3.6 Execution Contexts 2.3.7 Process Virtual Memory 2.3.8 Cross-Development Environment 2.4 Embedded Linux Distributions 2.4.1 Commercial Linux Distributions 2.4.2 Do-It-Yourself Linux Distributions 2.5 Chapter Summary 2.5.1 Suggestions for Additional Reading Chapter 3 Processor Basics 3.1 Stand-alone Processors 3.1.1 IBM 970FX 3.1.2 Intel Pentium M 3.1.3 Freescale MPC7448 3.1.4 Companion Chipsets 3.2 Integrated Processors: Systems on Chip 3.2.1 PowerPC 3.2.2 AMCC PowerPC 3.2.3 Freescale PowerPC 3.2.4 MIPS 3.2.5 Broadcom MIPS 3.2.6 AMD MIPS 3.2.7 Other MIPS 3.2.8 ARM 3.2.9 TI ARM 3.2.10 Freescale ARM 3.2.11 Intel ARM XScale 3.2.12 Other ARM 3.2.13 Other Architectures 3.3 Hardware Platforms 3.3.1 CompactPCI 3.3.2 ATCA 3.4 Chapter Summary 3.4.1 Suggestions For Additional Reading Chapter 4 The Linux Kernel——A Different Perspective Chapter 5 Kernel Initialization Chapter 6 System Initialization Chapter 7 Bootloaders Chapter 8 Device Driver Basics Chapter 9 File Systems Chapter 10 MTD Subsystem Chapter 11 BusyBox Chapter 12 Embedded Development Environment Chapter 13 Development Tools Chapter 14 Kernel Debugging Techniques Chapter 15 Debugging Embedded Linux Applications Chapter 16 Porting Linux Chapter 17 Linux and Real Time Appendix A: GNU Public License Appendix B: U-Boot Configurable Commands Appendix C: BusyBox Commands Appendix D: SDRAM Interface Considerations Appendix E: Open Source Resources Appendix F: Sample BDI-2000 Configuration File Index