You are previewing Linux for Embedded and Real-time Applications.
O'Reilly logo
Linux for Embedded and Real-time Applications

Book Description

This new edition of Linux for Embedded and Real-Time Applications provides a practical introduction to the basics and the latest developments in this rapidly evolving technology. Ideal for those new to using Linux in an embedded environment, it takes a hands-on approach and covers key concepts plus specific applications.

Key features include:

  • Substantially updated to focus on a specific ARM-based single board computer (SBC) as a target for embedded application programming
  • Includes an introduction to Android programming

With this book you will learn:

  • The basics of Open Source, Linux and the embedded space
  • How to set up a simple system and tool chain
  • How to use simulation for initial application testing
  • Network, graphics and Android programming
  • How to use some of the many Linux components and tools
  • How to configure and build the Linux kernel, BusyBox and U-Boot bootloader


  • Provides a hands-on introduction for engineers and software developers who need to get up to speed quickly on embedded Linux, its operation and its capabilities – including Android
  • Updated and changed accompanying tools, with a focus on the author’s specially-developed Embedded Linux Learning Kit

Table of Contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. Copyright
  5. Dedication
  6. Preface
    1. Audience and Prerequisites
    2. Personal Biases
    3. Organization
  7. Part 1: Introduction and Getting Started
    1. Chapter 1. The Embedded and Real-Time Space
      1. What Is Embedded?
      2. What Is Real-Time?
      3. How and Why Does Linux Fit In?
      4. Where Is Linux Embedded?
      5. Open Source Licensing
      6. Resources
    2. Chapter 2. Installing Linux
      1. Distributions
      2. Hardware Requirements
      3. Installation Scenarios
      4. DVD or Live CD?
      5. Installation Process
      6. Resources
    3. Chapter 3. Introducing Linux
      1. Running Linux—KDE
      2. Linux Features
      3. Protected Mode Architecture
      4. The Linux Process Model
      5. The Linux File System
      6. System Configuration
      7. The Shell
      8. Getting Help
      9. Resources
    4. Chapter 4. The Host Development Environment
      1. Cross-Development Tools—The GNU Tool Chain
      2. Install Software
      3. The Terminal Emulator, minicom
      4. Networking
      5. Resources
    5. Chapter 5. The Hardware
      1. Embedded Hardware
      2. ARM Single Board Computer
      3. What About Other Boards?
      4. Setting Up the Mini2440
      5. Flash Memory and File Systems
      6. Preparing the Board
      7. The Boot Loader
      8. Resources
    6. Chapter 6. Eclipse Integrated Development Environment
      1. Overview
      2. Installation
      3. Using Eclipse
      4. The C Development Environment—CDT
      5. The Program
      6. Building the Project
      7. Debugging with CDT
      8. Finish Debugging
      9. Summary
      10. Resources
  8. Part 2: Application Programming in a Cross-Development Environment
    1. Chapter 7. Accessing Hardware from User Space
      1. Review
      2. ARM I/O Architecture
      3. Accessing I/O from Linux—Our First Program
      4. The led Program
      5. A Data Acquisition Example
      6. Resources
    2. Chapter 8. Debugging Embedded Software
      1. Remote Debugging with Eclipse
      2. A Thermostat
      3. Host Workstation as Debug Environment
      4. Debugger Services Framework
      5. Resources
    3. Chapter 9. Posix Threads
      1. Threads
      2. Synchronization—Mutexes
      3. Communication—Condition Variables
      4. Thread Termination and Cancellation
      5. Pthreads Implementations
      6. Upgrading the Thermostat
      7. Debugging Multithreaded Programs
      8. Resources
    4. Chapter 10. Embedded Networking
      1. Sockets
      2. A Simple Example
      3. A Remote Thermostat
      4. Embedded Web Servers
      5. A “Real” Web Server—Boa
      6. Embedded E-mail
      7. Other Application-Level Protocols
      8. Resources
    5. Chapter 11. Configuring and Building the Kernel
      1. Getting Started
      2. Kernel Makefile
      3. Patching the Kernel
      4. Configuring the Kernel—make config, menuconfig, xconfig
      5. Behind the Scenes—What’s Really Happening
      6. Building the Kernel
      7. Booting the New Kernel
      8. Resources
    6. Chapter 12. Kernel Modules and Device Drivers
      1. Kernel Modules
      2. What’s a Device Driver Anyway?
      3. Linux Device Drivers
      4. Debugging Kernel Code
      5. Handling Interrupts
      6. Building Your Driver into the Kernel
      7. Resources
  9. Part 3: Components and Tools
    1. Chapter 13. BusyBox and Linux Initialization
      1. Introducing BusyBox
      2. Configuring and Installing BusyBox
      3. Using BusyBox
      4. A Thermostat Display
      5. User Space Initialization
      6. Resources
    2. Chapter 14. U-Boot Boot Loader and Getting Ready to Ship
      1. U-Boot
      2. Creating a Flash File System
      3. Resources
    3. Chapter 15. Source Code Control—GIT
      1. Background
      2. Introducing Git
      3. Configuring Git
      4. Graphical Git
      5. Resources
    4. Chapter 16. Build Tools
      1. Buildroot
      2. OpenEmbedded
      3. Android
      4. Wrap Up
      5. Resources
  10. Appendix A: U-Boot Commands
    1. Information Commands
    2. Memory Commands
    3. NOR Flash Memory Commands
    4. NAND Flash Memory Commands
    5. Execution Control Commands
    6. Download Commands
    7. Environment Variable Commands
    8. Environment Variables
  11. Appendix B: Why Software Should Not Have Owners