This book includes a complete series of real-world interfacing examples designed to introduce embedded Linux from hardware and software perspectives. After you create an embedded Linux development environment, you will step through hardware and software interfacing examples, using asynchronous serial communication, the PC parallel port, USB, memory I/O, synchronous serial communication, and interrupts. All interfacing examples are then tied together using system integration. All this material is presented by using a winter resort automation project called Project Trailblazer. You can find the book's source code and scripts at www.embeddedlinuxinterfacing.com.
The following text briefly summarizes each chapter.
Chapter 1, "Introducing Embedded Linux," describes the brief history of Linux as an embedded operating system and the implications of using open-source software in product design.
Chapter 2, "System Architecture," introduces a winter resort automation project called Project Trailblazer and develops a series of project requirements. Project Trailblazer and its requirements form the basis for the book's interfacing examples.
Chapter 3, "Selecting a Platform and Installing Tool Sets," describes the process of platform selection. Four target boards which use x86, StrongARM, and PowerPC processors are selected for Project Trailblazer. This chapter then describes the creation of an embedded Linux development workstation called tbdev1. All the development tools are either installed or compiled, including the cross-compiled tool chain for the StrongARM and PowerPC processors.
Chapter 4, "Booting Linux," describes the Linux boot process, from power-on to the bash prompt. Using a minimum root filesystem, each target board is booted using Linux version 2.4.
Chapter 5, "Debugging," configures gdb and gdbserver for target board debugging over the Ethernet network. A cross-compiled version of helloworld is remotely executed and debugged.
Chapter 6, "Asynchronous Serial Communication Interfacing," describes the Linux serial port device driver for control of port signals and buffers. An RFID tag reader, an LCD display, and control circuitry are interfaced to the Linux serial port.
Chapter 7, "Parallel Port Interfacing," describes interfacing AC circuits to an x86 target board's parallel printer port. A custom device driver called helloworld_proc_module that uses a /proc directory entry is introduced.
Chapter 8, "USB Interfacing," describes connecting a camera and speakers for visual input and audio output to a target board's USB port.
Chapter 9, "Memory I/O Interfacing," describes interfacing AC circuits to the StrongARM and PowerPC target boards' CPU buses.
Chapter 10, "Synchronous Serial Communication Interfacing," describes SPI and I2C connections and communications. A low-cost SPI temperature sensor and I2C LED display driver are interfaced to the target boards.
Chapter 11, "Using Interrupts for Timing," describes Linux timing sources and the measurement of each target board's average interrupt latency. An event timer with 1ms accuracy is developed to measure race times.
Chapter 12, "System Integration," describes the creation of the Project Trailblazer database. Target and server bash scripts are developed, using this database for collection and distribution of temperature, image, and authentication data.
Chapter 13, "Final Thoughts," summarizes the interfacing projects and discusses embedded Linux topics that are not addressed elsewhere in the book.