Embedded Linux: Hardware, Software, and Interfacing

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $1.99
Usually ships in 1-2 business days
(Save 97%)
Other sellers (Paperback)
  • All (14) from $1.99   
  • New (6) from $25.94   
  • Used (8) from $1.99   

Overview

Embedded Linux covers the development and implementation of interfacing applications on an embedded Linux platform. It includes a comprehensive discussion of platform selection, crosscompilation, kernel compilation, root filesystem creation, booting, remote debugging, real-world interfacing, application control, data collection, archiving, and presentation.

This book includes serial, parallel, memory I/O, USB, and interrupt-driven hardware designs using x86-, StrongARM®-, and PowerPC®-based target boards. In addition, you will find simple device driver module code that connects external devices to the kernel, and network integration code that connects embedded Linux field devices to a centralized control center. Examples teach hardware developers how to store and activate field bits and deliver process information using open source software. If you are a hardware developer, software developer, system integrator, or product manager who's begun exploring embedded Linux for interfacing applications, this book is for you.

  • Select an embedded Linux platform (x86, StrongARM®, and PowerPC® architectures are covered)
  • Create a cross-compiling and debugging development environment
  • Build a custom Linux kernel for each architecture
  • Create a minimum root filesystem
  • Boot the custom Linux kernel on three target boards with x86, SA-1110, and MPC860 microprocessors
  • Remote debug programs running on a target board across an ethernet network using GNU tools
  • Connect data acquisition and control electronics/peripherals using the microprocessor's serial, parallel, memory I/O, and USB interfaces
  • Measure average interrupt latencies for the x86, SA-1110, and MPC860 microprocessors and design an interrupt-driven process timer with 1mS accuracy
  • Interface the peripherals to the kernel and applications using device driver modules
  • Collect, control, store, and present data via open source protocols and applications
  • Analyze embedded Linux vendor product offerings

0672322269B03282002

Read More Show Less

Editorial Reviews

From The Critics
This book covers the development and implementation of interfacing applications on an embedded Linux platform, offering a series of real- world interfacing examples designed to introduce embedded Linux from hardware and software perspectives. Readers will learn to create an embedded Linux development environment and walk through hardware and software interfacing examples using asynchronous serial communication, the PC parallel port, USB, synchronous serial communication, and interrupts. Material is presented in the context of an ongoing example. The book is of interest to hardware and software developers, system integrators, and product managers. Hollabaugh is a consultant. Annotation c. Book News, Inc., Portland, OR (booknews.com)
Read More Show Less

Product Details

  • ISBN-13: 9780672322266
  • Publisher: Addison-Wesley
  • Publication date: 2/28/2002
  • Pages: 432
  • Product dimensions: 7.36 (w) x 9.06 (h) x 0.90 (d)

Meet the Author

Craig Hollabaugh, Ph.D., first administered Sun® and Digital® workstations while pursuing a Ph.D. in electrical engineering at Georgia Institute of Technology. His first embedded design, US Patent #5,222,027, remotely monitors a petroleum process. In 1995, at Wireless Scientific®, he began using Linux for industrial control.

Craig currently consults for three companies from his home in Ouray, Colorado. He developed the Proteus Scalable Node code for Antec. At Clifton, Weiss and Associates, he's a member of a carrier-class telecommunications network design team. He's also designing FM, MP3, and Bluetooth headset electronics for Arriva®.

0672322269AB03282002

Read More Show Less

Read an Excerpt

This is an exciting time. The proliferation of Internet technology has transformed our concept of information. 24 hours per day, people rely on network devices for business and personal use. Over time, this dependence will grow further. Today's network devices, such as servers, routers, and desktop computers, form the Internet's infrastructure. Tomorrow's devices will control your home's temperature, maintain inventory levels at your business, and monitor automobile traffic patterns. Only a handful of the billions of processors produced each year go into desktop or server computers. The remaining processors monitor and control other facets of the world.

Individuals and businesses want smart, network-connected, devices to improve their lives, their efficiency, and their bottom dollar. These devices must be simple to operate, reliable, and inexpensive. This is where Linux comes in. Advances in technology accompanied by competitive pricing allow Linux to move from the desktop and server environment to embedded devices. Linux offers reliability, features, open-source code, and a proven track record; these features make it perfectly suited for embedded system designs. In this book, you will find information to create an embedded Linux foundation. You can then extend this foundation in your own designs. Benefits of This Book

When I first started researching material for this book, I assumed that online embedded Linux information was like other Linux information—plentiful and well documented. I quickly discovered that my assumption was wrong. I found embedded Linux documentation to be sparse, scattered, incomplete, and sometimes dated. This was discouraging andinvigorating at the same time. Although I worried about being able to find adequate information, I was further convinced of the need for this book. People are designing embedded products with Linux, so the information and knowledge are out there; it just hasn't all been in one place until now.

As an instructor, I have determined that students best understand and retain theoretical concepts and ideas when accompanied by examples. When students see a concept in action—whether it is a robotic arm movement, a voltmeter reading, or an oscilloscope waveform—they're most likely to later apply that concept to solve their own problems. That's why this book is full of step-by-step examples. You will learn through the example and be able to apply that knowledge to your own designs. What This Book Covers

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.

Who This Book Is For

If you are a hardware engineer, software developer, system integrator, or product manager who's begun exploring embedded Linux for interfacing applications, then this book is for you. The book's comprehensive interfacing examples are simple, requiring only a basic understanding of digital logic design, C and bash programming, and Linux system administration.

Conventions Used in This Book

This book uses several common conventions to help teach embedded Linux.

The typographical conventions used in this book include the following:

  • Commands and computer output appear in a monospaced computer font.
  • Commands you type appear in a boldfaced computer font.
  • Italics are used to introduce you to new terms.

In addition to typographical conventions, this book includes tips, which look like this: TIP
Information that offers shortcuts and solutions to common problems is highlighted as a tip.

Read More Show Less

Table of Contents

Introduction.

I. GETTING STARTED.

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.

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.

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.

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.

5. Debugging.

Introducing gdb.

Local Debugging.

Remote Debugging.

Network-Mounting the root Filesystem.

Configuring the NFS Server.

Configuring the Target Kernels.

Summary.

Additional Reading.

II. INTERFACING.

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.

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.

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.

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.

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.

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.

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.

13. Final Thoughts.

GUI Development.

Real-time Capabilities.

The Embedded Linux Vendor Offerings.

Project Trailblazer Hardware.

Summary.

Additional Reading.

Index. 0672322269T03282002

Read More Show Less

Preface

This is an exciting time. The proliferation of Internet technology has transformed our concept of information. 24 hours per day, people rely on network devices for business and personal use. Over time, this dependence will grow further. Today's network devices, such as servers, routers, and desktop computers, form the Internet's infrastructure. Tomorrow's devices will control your home's temperature, maintain inventory levels at your business, and monitor automobile traffic patterns. Only a handful of the billions of processors produced each year go into desktop or server computers. The remaining processors monitor and control other facets of the world.

Individuals and businesses want smart, network-connected, devices to improve their lives, their efficiency, and their bottom dollar. These devices must be simple to operate, reliable, and inexpensive. This is where Linux comes in. Advances in technology accompanied by competitive pricing allow Linux to move from the desktop and server environment to embedded devices. Linux offers reliability, features, open-source code, and a proven track record; these features make it perfectly suited for embedded system designs. In this book, you will find information to create an embedded Linux foundation. You can then extend this foundation in your own designs.

Benefits of This Book

When I first started researching material for this book, I assumed that online embedded Linux information was like other Linux information--plentiful and well documented. I quickly discovered that my assumption was wrong. I found embedded Linux documentation to be sparse, scattered, incomplete, and sometimes dated. This was discouraging and invigorating at the same time. Although I worried about being able to find adequate information, I was further convinced of the need for this book. People are designing embedded products with Linux, so the information and knowledge are out there; it just hasn't all been in one place until now.

As an instructor, I have determined that students best understand and retain theoretical concepts and ideas when accompanied by examples. When students see a concept in action--whether it is a robotic arm movement, a voltmeter reading, or an oscilloscope waveform--they're most likely to later apply that concept to solve their own problems. That's why this book is full of step-by-step examples. You will learn through the example and be able to apply that knowledge to your own designs.

What This Book Covers

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.

Who This Book Is For

If you are a hardware engineer, software developer, system integrator, or product manager who's begun exploring embedded Linux for interfacing applications, then this book is for you. The book's comprehensive interfacing examples are simple, requiring only a basic understanding of digital logic design, C and bash programming, and Linux system administration.

Conventions Used in This Book

This book uses several common conventions to help teach embedded Linux.

The typographical conventions used in this book include the following:

  • Commands and computer output appear in a monospaced computer font.
  • Commands you type appear in a boldfaced computer font.
  • Italics are used to introduce you to new terms.

In addition to typographical conventions, this book includes tips, which look like this:

TIP


Information that offers shortcuts and solutions to common problems is highlighted as a tip.

0672322269P03282002

Read More Show Less

Introduction

This is an exciting time. The proliferation of Internet technology has transformed our concept of information. 24 hours per day, people rely on network devices for business and personal use. Over time, this dependence will grow further. Today's network devices, such as servers, routers, and desktop computers, form the Internet's infrastructure. Tomorrow's devices will control your home's temperature, maintain inventory levels at your business, and monitor automobile traffic patterns. Only a handful of the billions of processors produced each year go into desktop or server computers. The remaining processors monitor and control other facets of the world.

Individuals and businesses want smart, network-connected, devices to improve their lives, their efficiency, and their bottom dollar. These devices must be simple to operate, reliable, and inexpensive. This is where Linux comes in. Advances in technology accompanied by competitive pricing allow Linux to move from the desktop and server environment to embedded devices. Linux offers reliability, features, open-source code, and a proven track record; these features make it perfectly suited for embedded system designs. In this book, you will find information to create an embedded Linux foundation. You can then extend this foundation in your own designs.

Benefits of This Book

When I first started researching material for this book, I assumed that online embedded Linux information was like other Linux information—plentiful and well documented. I quickly discovered that my assumption was wrong. I found embedded Linux documentation to be sparse, scattered, incomplete, and sometimes dated. This wasdiscouraging and invigorating at the same time. Although I worried about being able to find adequate information, I was further convinced of the need for this book. People are designing embedded products with Linux, so the information and knowledge are out there; it just hasn't all been in one place until now.

As an instructor, I have determined that students best understand and retain theoretical concepts and ideas when accompanied by examples. When students see a concept in action—whether it is a robotic arm movement, a voltmeter reading, or an oscilloscope waveform—they're most likely to later apply that concept to solve their own problems. That's why this book is full of step-by-step examples. You will learn through the example and be able to apply that knowledge to your own designs.

What This Book Covers

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.

Who This Book Is For

If you are a hardware engineer, software developer, system integrator, or product manager who's begun exploring embedded Linux for interfacing applications, then this book is for you. The book's comprehensive interfacing examples are simple, requiring only a basic understanding of digital logic design, C and bash programming, and Linux system administration.

Conventions Used in This Book

This book uses several common conventions to help teach embedded Linux.

The typographical conventions used in this book include the following:

  • Commands and computer output appear in a monospaced computer font.
  • Commands you type appear in a boldfaced computer font.
  • Italics are used to introduce you to new terms.

In addition to typographical conventions, this book includes tips, which look like this:

TIP

Information that offers shortcuts and solutions to common problems is highlighted as a tip.


Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)