Building Embedded Linux Systems shows you how to design and build your own embedded systems using Linux® as the kernel and freely available open source tools as the framework. Written by an active member of the open source community, the book is structured to gradually introduce readers to the intricacies of embedded Linux, with detailed information and examples in each chapter that culminate in describing how Linux is actually put on an embedded device.
Copyright
Dedication
Preface
Audience of This Book
Scope and Background Information
Organization of the Material
Hardware Used in This Book
Software Versions
Book Web Site
Typographical Conventions
Contact Information
Acknowledgments
Chapter 1. Introduction
Section 1.1. Definitions
Section 1.2. Real Life and Embedded Linux Systems
Section 1.3. Example Multicomponent System
Section 1.4. Design and Implementation Methodology
Chapter 2. Basic Concepts
Section 2.1. Types of Hosts
Section 2.2. Types of Host/Target Development Setups
Section 2.3. Types of Host/Target Debug Setups
Section 2.4. Generic Architecture of an Embedded Linux System
Section 2.5. System Startup
Section 2.6. Types of Boot Configurations
Section 2.7. System Memory Layout
Chapter 3. Hardware Support
Section 3.1. Processor Architectures
Section 3.2. Buses and Interfaces
Section 3.3. I/O
Section 3.4. Storage
Section 3.5. General Purpose Networking
Section 3.6. Industrial Grade Networking
Section 3.7. System Monitoring
Chapter 4. Development Tools
Section 4.1. Using a Practical Project Workspace
Section 4.2. GNU Cross-Platform Development Toolchain
Section 4.3. C Library Alternatives
Section 4.4. Java
Section 4.5. Perl
Section 4.6. Python
Section 4.7. Ada
Section 4.8. Other Programming Languages
Section 4.9. Integrated Development Environments
Section 4.10. Terminal Emulators
Chapter 5. Kernel Considerations
Section 5.1. Selecting a Kernel
Section 5.2. Configuring the Kernel
Section 5.3. Compiling the Kernel
Section 5.4. Installing the Kernel
Section 5.5. In the Field
Chapter 7. Storage Device Manipulation
Section 7.1. MTD-Supported Devices
Section 7.2. Disk Devices
Section 7.3. To Swap or Not to Swap
Chapter 8. Root Filesystem Setup
Section 8.1. Selecting a Filesystem
Section 8.2. Using an NFS-Mounted Root Filesystem to Write a Filesystem Image to Flash
Section 8.3. CRAMFS
Section 8.4. JFFS2
Section 8.5. Disk Filesystem over NFTL
Section 8.6. Disk Filesystem over RAM Disk
Section 8.7. Mounting Directories on TMPFS
Section 8.8. Live Updates
Chapter 9. Setting Up the Bootloader
Section 9.1. Bootloaders Galore
Section 9.2. Server Setup for Network Boot
Section 9.3. Using LILO with Disk and CompactFlash Devices
Section 9.4. Using GRUB with DiskOnChip Devices
Section 9.5. U-Boot
Chapter 10. Setting Up Networking Services
Section 10.1. The Internet Super-Server
Section 10.2. Remote Administration with SNMP
Section 10.3. Network Login Through Telnet
Section 10.4. Secure Communication with SSH
Section 10.5. Serving Web Content Through HTTP
Section 10.6. Dynamic Configuration Through DHCP
Chapter 11. Debugging Tools
Section 11.1. Debugging Applications with gdb
Section 11.2. Tracing
Section 11.3. Performance Analysis
Section 11.4. Memory Debugging
Section 11.5. A Word on Hardware Tools
Appendix A. Worksheet
Section A.1. Project Identification
Section A.2. Hardware Summary
Section A.3. Development Tools
Section A.4. Kernel
Section A.5. Root filesystem
Section A.6. Storage Device Organization
Section A.7. Bootloader Configuration and Use
Section A.8. Networking services
Section A.9. Custom Project Software
Section A.10. Debug Notes
Section A.11. Additional Notes
Section A.12. Embedded Linux Systems Worksheet
Appendix B. Resources
Section B.1. Online
Section B.2. Books
Section B.3. Publications
Section B.4. Organizations
Section B.5. Linux and Open-Source-Oriented Hardware Projects
Appendix C. Important Licenses and Notices
Section C.1. Exclusion of User-Space Applications from Kernel's GPL
Section C.2. Notices on Binary Kernel Modules
Section C.3. Legal Clarifications About the Kernel by Linus Torvalds