There's a great deal of excitement surrounding the use of Linux in embedded systems -- for everything from cell phones to car ABS systems and water-filtration plants -- but not a lot of practical information. Building Embedded Linux Systems offers an in-depth, hard-core guide to putting together embedded systems based on Linux. Updated for the latest version of the Linux kernel, this new edition gives you the basics of building embedded Linux systems, along with the configuration, setup, and...
This work is an in-depth guide to putting together an embedded system based on the Linux kernal. It features procedures for selecting, configuring, building, and installing a target-specific kernel; creating a complete target root file system; cross-compiling utilities; and more.
Preface ixIntroduction 1Definitions 2Real Life and Embedded Linux Systems 5Design and Implementation Methodology 27Basic Concepts 33Types of Hosts 33Types of Host/Target Development Setups 39Types of Host/Target Debug Setups 41Generic Architecture of an Embedded Linux System 43System Startup 47Types of Boot Configurations 48System Memory Layout 51Hardware Support 55Processor Architectures 56Buses and Interfaces 64I/O 72Storage 79General-Purpose Networking 81Industrial-Grade Networking 83System Monitoring 85Development Tools 87A Practical Project Workspace 89GNU Cross-Platform Development Toolchain 91C Library Alternatives 115Java 129Perl 131Python 134Other Programming Languages 135Eclipse: An Integrated Development Environment 135Terminal Emulators 147Kernel Considerations 155Selecting a Kernel 156Configuring the Kernel 161Compiling the Kernel 165Installing the Kernel 167In the Field 169Root Filesystem Content 173Basic Root Filesystem Structure 173Libraries 177Kernel Modules 183Kernel Images 183Device Files 184Main System Applications 193Custom Applications 201System Initialization 201Storage Device Manipulation 209MTD-Supported Devices 209Disk Devices 231To Swap or Not To Swap 234Root Filesystem Setup 235Filesystem Types for Embedded Devices 235Writing a Filesystem Image to Flash Using an NFS-Mounted Root Filesystem 254Placing a Disk Filesystem on a RAM Disk 254Rootfs and Initramfs 255Choosing a Filesystem's Type and Layout 258Handling Software Upgrades 261Setting Up the Bootloader 273Embedded Bootloaders 274Server Setup for Network Boot 278Using the U-Boot Bootloader 285Setting Up Networking Services 301Network Settings 302Busybox 303Dynamic Configuration Through DHCP 303The Internet Super-Server 305Remote Administration with SNMP 309Network Login Through Telnet 312Secure Communication with SSH 314Serving Web Content Through HTTP 317Provisioning 321Debugging Tools 325Eclipse 326Debugging Applications with gdb 328Tracing 333Performance Analysis 336Memory Debugging 344A Word on Hardware Tools 348Introduction to Real-Time Linux 351What Is Real-Time Processing? 351Should Your Linux Be Real-Time? 352Common Real-Time Kernel Requirements 356Some Typical Users of Real-Time Computing Technology 358The Linux Paths to Real-Time 360The Xenomai Real-Time System 365Porting Traditional RTOS Applications to Linux 366The Xenomai Architecture 368How Xenomai Works 375The Real-Time Driver Model 379Xenomai, Chameleon by Design 385The RT Patch 387Interrupts As Threads 388Priority Inheritance 398Configuring the Kernel with the RT Patch 401High-Resolution Timers 407The Latency Tracer 410Conclusion 417Index 419