Embedded Linux: Hardware, Software and Interfacing
Dr. Craig Hollabaugh
Table of Contents Introduction
Part I - Getting StartedChapter 1 - Introducing Embedded Linux
Why Linux, Why Now?
What Is an Embedded System?
What Does Real-Time Mean?
Implications of Open Source
Summary
Additional Reading
Chapter 2 - System Architecture
Introducing Project Trailblazer
The Silverjack Resort Layout
Project Trailblazer Requirements
Safety Requirements
Operations Requirements
Supplier Requirements
The Project Trailblazer System Architecture
Summary
Chapter 3 - Selecting a Platform and Installing Tool Sets
Sources of Information
The Project Trailblazer Strategic Direction
Building tbdev1, the Embedded Linux Development Workstation
Getting Started
Installing the Linux Operating System
Installing the Native GNU Tool Chain and Other Applications
Building the GNU Tool Chain for Cross-Compiling
Summary
Additional Reading
Chapter 4 - Booting Linux
The Target PBRs
The Linux Boot Process
The Linux root Filesystem
Required Files for init
Required Files for bash
The root Filesystem Binary Files: Compile or Download?
Creating the root Filesystem
Deciding Which Package to Use
The Process for Building the root Filesystem
Running buildrootfilesystem
Installing the TFTP Server
Installing minicom
Booting the Embedded Planet RPX-CLLF
Embedded Planet RPX-CLLF Target PBR Review
Booting the Brightstar Engineering MediaEngine
Brightstar Engineering MediaEngine Target PBR Review
Booting the Tri-M MZ104 and the COTS PC with a Flash IDE Drive
Flash IDE Technology
Preparing the Tri-M MZ104 and the COTS PC
Booting the Tri-M MZ104 Target
Tri-M MZ104 Target Platform Boot Requirements Review
Boot Comparison
Summary
Additional Reading
Chapter 5 - Debugging
Introducing gdb
Local Debugging
Remote Debugging
Network-Mounting the root Filesystem Configuring the NFS Server
Configuring the Target Kernels
Summary
Additional Reading
Part II InterfacingChapter 6 - Asynchronous Serial Communication Interfacing
The Project Trailblazer Asynchronous Serial Hardware
Development Environment
Target EIA/ TIA-232-E Compliance
Linux Serial Communications
Setting the Serial Port Control Signals with setSerialSignal
Reading the Serial Port Control Signals with getSerialSignal
Providing Serial Communication for bash Scripts, Using querySerial
Summary
Additional Reading
Chapter 7 - Parallel Port Interfacing
Control Using the Parallel Port
Standard Parallel Port Control with Port I/ O
Monitoring Lift Operation Using Port I/ O
Snow-Making Control Using Port I/ O
Standard Parallel Port Control Using ppdev
Developing a Custom Device Driver
Understanding helloworld_proc_module
Compiling, Inserting, and Testing helloworld_proc_module on the MediaEngine
Standard Parallel Port Control Using the Custom Device Driver liftmon_snowcon
Enhancements to helloworld_proc_module to Create liftmon_snowcon
Compiling, Inserting, and Testing liftmon_snowcon on the MZ104
Summary
Additional Reading
Chapter 8 - USB Interfacing
Learning About USB
Project Trailblazer USB Hardware
USB Audio: Yamaha YST-MS35D USB Speakers
USB Image Capture: Kensington VideoCAM Super-VGA
PC Camera
USB Mass Storage: SanDisk USB SmartMedia Card Reader
Summary
Additional Reading
Chapter 9 - Memory I/O Interfacing
The Hardware Design Process
Developing Lift Monitoring and Snow-Making Control for the MediaEngine
Designing the External Interface Hardware for the MediaEngine
Finding Space in the Memory Map for the MediaEngine
Finding the Register Base Address for the MediaEngine
Configuring the Memory Controller for the MediaEngine
Assigning the Output Module Enable Signal for the MediaEngine
Configuring the I/ O Port Controller for the MediaEngine
Writing the helloworldbit Testing Device Driver for the MediaEngine
Writing the liftmon_snowcon Device Driver for the MediaEngine
Developing Lift Monitoring and Snow-Making Control for the RPX-CLLF
Designing the External Interface Hardware for the RPX-CLLF
Finding Space in the Memory Map for the RPX-CLLF
Finding the Register Base Address for the RPX-CLLF
Configuring the Memory Controller for the RPX-CLLF
Assigning the Output Module Enable Signal for the RPX-CLLF
Configuring the I/ O Port Controller for the RPX-CLLF
Writing the helloworldbit Testing Device Driver for the RPX-CLLF
Writing the liftmon_snowcon Device Driver for the RPX-CLLF
Summary
Additional Reading
Chapter 10 - Synchronous Serial Communication Interfacing
Temperature Sensing and Display
SPI Communication and the LM70
Connecting the LM70 to the x86 Parallel Printer Port
Connecting the LM70 to the MediaEngine
I2C Communication with the Philips Semiconductor SAA1064
Connecting the SAA1064 to the x86 Parallel Printer Port
Connecting the SAA1064 to the RPX-CLLF
Summary
Additional Reading Chapter 11 - Using Interrupts For Timing
Linux Timing Sources
Measuring Interrupt Latency
Measuring Interrupt Latency on the MZ104
Measuring Interrupt Latency on the MediaEngine
Measuring Interrupt Latency on the RPX-CLLF
Interrupt Latency Test Summary
Implementing the Race Timer
Race Timer Interrupt Processing Using Tasklets
Race Timer Status Display Using System Timers
Summary
Additional Reading
Chapter 12 - System Integration
Integration Overview
Installing the System Integration Applications
Creating and Testing the Project Trailblazer Database
Developing the Target and CGI Integration Scripts
Collecting and Distributing Temperature Data
Collecting and Distributing Image Data
Collecting Guest Pass Identification and Allowing Lift Access
Summary
Additional Reading
Chapter 13 - Final Thoughts
GUI Development
Real-time Capabilities
The Embedded Linux Vendor Offerings
Project Trailblazer Hardware
Summary
Additional Reading