logo资料库

Essential Linux-DeviceDrivers.pdf(英文版)

第1页 / 共850页
第2页 / 共850页
第3页 / 共850页
第4页 / 共850页
第5页 / 共850页
第6页 / 共850页
第7页 / 共850页
第8页 / 共850页
资料共850页,剩余部分请下载后查看
Essential Linux Device Drivers - Graphically Rich Book
Table of Contents
Copyright
Prentice Hall Open Source Software Development Series
Foreword
Preface
Acknowledgments
About the Author
Chapter 1. Introduction
Evolution
The GNU Copyleft
Kernel.org
Mailing Lists and Forums
Linux Distributions
Looking at the Sources
Building the Kernel
Loadable Modules
Before Starting
Chapter 2. A Peek Inside the Kernel
Booting Up
Kernel Mode and User Mode
Process Context and Interrupt Context
Kernel Timers
Concurrency in the Kernel
Process Filesystem
Allocating Memory
Looking at the Sources
Chapter 3. Kernel Facilities
Kernel Threads
Helper Interfaces
Looking at the Sources
Chapter 4. Laying the Groundwork
Introducing Devices and Drivers
Interrupt Handling
The Linux Device Model
Memory Barriers
Power Management
Looking at the Sources
Chapter 5. Character Drivers
Char Driver Basics
Device Example: System CMOS
Sensing Data Availability
Talking to the Parallel Port
RTC Subsystem
Pseudo Char Drivers
Misc Drivers
Character Caveats
Looking at the Sources
Chapter 6. Serial Drivers
Layered Architecture
UART Drivers
TTY Drivers
Line Disciplines
Looking at the Sources
Chapter 7. Input Drivers
Input Event Drivers
Input Device Drivers
Debugging
Looking at the Sources
Chapter 8. The Inter-Integrated Circuit Protocol
What's I2C/SMBus?
I2C Core
Bus Transactions
Device Example: EEPROM
Device Example: Real Time Clock
I2C-dev
Hardware Monitoring Using LM-Sensors
The Serial Peripheral Interface Bus
The 1-Wire Bus
Debugging
Looking at the Sources
Chapter 9. PCMCIA and Compact Flash
What's PCMCIA/CF?
Linux-PCMCIA Subsystem
Host Controller Drivers
PCMCIA Core
Driver Services
Client Drivers
Tying the Pieces Together
PCMCIA Storage
Serial PCMCIA
Debugging
Looking at the Sources
Chapter 10. Peripheral Component Interconnect
The PCI Family
Addressing and Identification
Accessing PCI Regions
Direct Memory Access
Device Example: Ethernet-Modem Card
Debugging
Looking at the Sources
Chapter 11. Universal Serial Bus
USB Architecture
Linux-USB Subsystem
Driver Data Structures
Enumeration
Device Example: Telemetry Card
Class Drivers
Gadget Drivers
Debugging
Looking at the Sources
Chapter 12. Video Drivers
Display Architecture
Linux-Video Subsystem
Display Parameters
The Frame Buffer API
Frame Buffer Drivers
Console Drivers
Debugging
Looking at the Sources
Chapter 13. Audio Drivers
Audio Architecture
Linux-Sound Subsystem
Device Example: MP3 Player
Debugging
Looking at the Sources
Chapter 14. Block Drivers
Storage Technologies
Linux Block I/O Layer
I/O Schedulers
Block Driver Data Structures and Methods
Device Example: Simple Storage Controller
Advanced Topics
Debugging
Looking at the Sources
Chapter 15. Network Interface Cards
Driver Data Structures
Talking with Protocol Layers
Buffer Management and Concurrency Control
Device Example: Ethernet NIC
ISA Network Drivers
Asynchronous Transfer Mode
Network Throughput
Looking at the Sources
Chapter 16. Linux Without Wires
Bluetooth
Infrared
WiFi
Cellular Networking
Current Trends
Chapter 17. Memory Technology Devices
What's Flash Memory?
Linux-MTD Subsystem
Map Drivers
NOR Chip Drivers
NAND Chip Drivers
User Modules
MTD-Utils
Configuring MTD
eXecute In Place
The Firmware Hub
Debugging
Looking at the Sources
Chapter 18. Embedding Linux
Challenges
Component Selection
Tool Chains
Embedded Bootloaders
Memory Layout
Kernel Porting
Embedded Drivers
The Root Filesystem
Test Infrastructure
Debugging
Chapter 19. Drivers in User Space
Process Scheduling and Response Times
Accessing I/O Regions
Accessing Memory Regions
User Mode SCSI
User Mode USB
User Mode I2C
UIO
Looking at the Sources
Chapter 20. More Devices and Drivers
ECC Reporting
Frequency Scaling
Embedded Controllers
ACPI
ISA and MCA
FireWire
Intelligent Input/Output
Amateur Radio
Voice over IP
High-Speed Interconnects
Chapter 21. Debugging Device Drivers
Kernel Debuggers
Kernel Probes
Kexec and Kdump
Profiling
Tracing
Linux Test Project
User Mode Linux
Diagnostic Tools
Kernel Hacking Config Options
Test Equipment
Chapter 22. Maintenance and Delivery
Coding Style
Change Markers
Version Control
Consistent Checksums
Build Scripts
Portable Code
Chapter 23. Shutting Down
Checklist
What Next?
Appendix A. Linux Assembly
Debugging
Appendix B. Linux and the BIOS
Real Mode Calls
Protected Mode Calls
BIOS and Legacy Drivers
Appendix C. Seq Files
The Seq File Advantage
Updating the NVRAM Driver
Looking at the Sources
Index
SYMBOL
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Essential Linux Device Drivers Essential Linux Device Drivers by Sreekrishnan Venkateswaran by Sreekrishnan Venkateswaran Publisher: Prentice Hall Publisher: Prentice Hall Pub Date: March 27, 2008 Pub Date: March 27, 2008 Print ISBN-10: 0-13-239655-6 Print ISBN-10: 0-13-239655-6 Print ISBN-13: 978-0-13-239655-4 Print ISBN-13: 978-0-13-239655-4 Pages: 744 Pages: 744 Table of Contents Table of Contents | Index | Index Overview Overview "Probably the most wide ranging and complete Linux device driver book I've read." "Probably the most wide ranging and complete Linux device driver book I've read." --Alan Cox, Linux Guru and Key Kernel Developer --Alan Cox, Linux Guru and Key Kernel Developer "Very comprehensive and detailed, covering almost every single Linux device driver type." "Very comprehensive and detailed, covering almost every single Linux device driver type." --Theodore Ts'o, First Linux Kernel Developer in North America and Chief Platform Strategist of the Linux --Theodore Ts'o, First Linux Kernel Developer in North America and Chief Platform Strategist of the Linux Foundation Foundation The Most Practical Guide to Writing Linux Device Drivers The Most Practical Guide to Writing Linux Device Drivers Linux now offers an exceptionally robust environment for driver development: with today's kernels, what once Linux now offers an exceptionally robust environment for driver development: with today's kernels, what once required years of development time can be accomplished in days. In this practical, example-driven book, one of required years of development time can be accomplished in days. In this practical, example-driven book, one of the world's most experienced Linux driver developers systematically demonstrates how to develop reliable Linux the world's most experienced Linux driver developers systematically demonstrates how to develop reliable Linux drivers for virtually any device. Essential Linux Device Drivers is for any programmer with a working drivers for virtually any device. Essential Linux Device Drivers is for any programmer with a working knowledge of operating systems and C, including programmers who have never written drivers before. knowledge of operating systems and C, including programmers who have never written drivers before. Sreekrishnan Venkateswaran focuses on the essentials, bringing together all the concepts and techniques you Sreekrishnan Venkateswaran focuses on the essentials, bringing together all the concepts and techniques you need, while avoiding topics that only matter in highly specialized situations. Venkateswaran begins by reviewing need, while avoiding topics that only matter in highly specialized situations. Venkateswaran begins by reviewing the Linux 2.6 kernel capabilities that are most relevant to driver developers. He introduces simple device the Linux 2.6 kernel capabilities that are most relevant to driver developers. He introduces simple device classes; then turns to serial buses such as I2C and SPI; external buses such as PCMCIA, PCI, and USB; video, classes; then turns to serial buses such as I2C and SPI; external buses such as PCMCIA, PCI, and USB; video, audio, block, network, and wireless device drivers; user-space drivers; and drivers for embedded Linux–one of audio, block, network, and wireless device drivers; user-space drivers; and drivers for embedded Linux–one of today's fastest growing areas of Linux development. For each, Venkateswaran explains the technology, inspects today's fastest growing areas of Linux development. For each, Venkateswaran explains the technology, inspects relevant kernel source files, and walks through developing a complete example. relevant kernel source files, and walks through developing a complete example. • Addresses drivers discussed in no other book, including drivers for I2C, video, sound, PCMCIA, and different • Addresses drivers discussed in no other book, including drivers for I2C, video, sound, PCMCIA, and different types of flash memory types of flash memory • Demystifies essential kernel services and facilities, including kernel threads and helper interfaces • Demystifies essential kernel services and facilities, including kernel threads and helper interfaces • Teaches polling, asynchronous notification, and I/O control • Teaches polling, asynchronous notification, and I/O control • Introduces the Inter-Integrated Circuit Protocol for embedded Linux drivers • Introduces the Inter-Integrated Circuit Protocol for embedded Linux drivers • Covers multimedia device drivers using the Linux-Video subsystem and Linux-Audio framework • Covers multimedia device drivers using the Linux-Video subsystem and Linux-Audio framework • Shows how Linux implements support for wireless technologies such as Bluetooth, Infrared, WiFi, and cellular • Shows how Linux implements support for wireless technologies such as Bluetooth, Infrared, WiFi, and cellular networking networking • Describes the entire driver development lifecycle, through debugging and maintenance • Describes the entire driver development lifecycle, through debugging and maintenance • Includes reference appendixes covering Linux assembly, BIOS calls, and Seq files • Includes reference appendixes covering Linux assembly, BIOS calls, and Seq files
Essential Linux Device Drivers by Sreekrishnan Venkateswaran Publisher: Prentice Hall Pub Date: March 27, 2008 Print ISBN-10: 0-13-239655-6 Print ISBN-13: 978-0-13-239655-4 Pages: 744 Table of Contents | Index Copyright Prentice Hall Open Source Software Development Series Foreword Preface Acknowledgments About the Author Chapter 1. Introduction Evolution The GNU Copyleft Kernel.org Mailing Lists and Forums Linux Distributions Looking at the Sources Building the Kernel Loadable Modules Before Starting Chapter 2. A Peek Inside the Kernel Booting Up Kernel Mode and User Mode Process Context and Interrupt Context Kernel Timers Concurrency in the Kernel Process Filesystem Allocating Memory Looking at the Sources Chapter 3. Kernel Facilities Kernel Threads Helper Interfaces Looking at the Sources Chapter 4. Laying the Groundwork Introducing Devices and Drivers Interrupt Handling The Linux Device Model Memory Barriers Power Management Looking at the Sources Chapter 5. Character Drivers Char Driver Basics Device Example: System CMOS Sensing Data Availability Talking to the Parallel Port RTC Subsystem Pseudo Char Drivers Misc Drivers Character Caveats Looking at the Sources Chapter 6. Serial Drivers Layered Architecture UART Drivers TTY Drivers Line Disciplines
What's PCMCIA/CF? Linux-PCMCIA Subsystem Host Controller Drivers PCMCIA Core Driver Services Client Drivers Tying the Pieces Together PCMCIA Storage Serial PCMCIA Debugging Looking at the Sources Chapter 10. Peripheral Component Interconnect The PCI Family Addressing and Identification Accessing PCI Regions Direct Memory Access Device Example: Ethernet-Modem Card Debugging Looking at the Sources Chapter 11. Universal Serial Bus Looking at the Sources Chapter 7. Input Drivers Input Event Drivers Input Device Drivers Debugging Looking at the Sources Chapter 8. The Inter-Integrated Circuit Protocol What's I2C/SMBus? I2C Core Bus Transactions Device Example: EEPROM Device Example: Real Time Clock I2C-dev Hardware Monitoring Using LM-Sensors The Serial Peripheral Interface Bus The 1-Wire Bus Debugging Looking at the Sources Chapter 9. PCMCIA and Compact Flash USB Architecture Linux-USB Subsystem Driver Data Structures Enumeration Device Example: Telemetry Card Class Drivers Gadget Drivers Debugging Looking at the Sources Chapter 12. Video Drivers Display Architecture Linux-Video Subsystem Display Parameters The Frame Buffer API Frame Buffer Drivers Console Drivers Debugging Looking at the Sources Chapter 13. Audio Drivers Audio Architecture Linux-Sound Subsystem Device Example: MP3 Player Debugging Looking at the Sources Chapter 14. Block Drivers
Storage Technologies Linux Block I/O Layer I/O Schedulers Block Driver Data Structures and Methods Device Example: Simple Storage Controller Advanced Topics Debugging Looking at the Sources Chapter 15. Network Interface Cards Driver Data Structures Talking with Protocol Layers Buffer Management and Concurrency Control Device Example: Ethernet NIC ISA Network Drivers Asynchronous Transfer Mode Network Throughput Looking at the Sources Chapter 16. Linux Without Wires Chapter 17. Memory Technology Devices Bluetooth Infrared WiFi Cellular Networking Current Trends What's Flash Memory? Linux-MTD Subsystem Map Drivers NOR Chip Drivers NAND Chip Drivers User Modules MTD-Utils Configuring MTD eXecute In Place The Firmware Hub Debugging Looking at the Sources Challenges Component Selection Tool Chains Embedded Bootloaders Memory Layout Kernel Porting Embedded Drivers The Root Filesystem Test Infrastructure Debugging Chapter 18. Embedding Linux Chapter 19. Drivers in User Space Process Scheduling and Response Times Accessing I/O Regions Accessing Memory Regions User Mode SCSI User Mode USB User Mode I2C UIO Looking at the Sources Chapter 20. More Devices and Drivers ECC Reporting Frequency Scaling Embedded Controllers ACPI ISA and MCA FireWire Intelligent Input/Output
Kernel Debuggers Kernel Probes Kexec and Kdump Profiling Tracing Linux Test Project User Mode Linux Diagnostic Tools Kernel Hacking Config Options Test Equipment Chapter 22. Maintenance and Delivery Coding Style Change Markers Version Control Consistent Checksums Build Scripts Portable Code Chapter 23. Shutting Down Amateur Radio Voice over IP High-Speed Interconnects Chapter 21. Debugging Device Drivers Checklist What Next? Debugging Appendix A. Linux Assembly Appendix B. Linux and the BIOS Real Mode Calls Protected Mode Calls BIOS and Legacy Drivers Appendix C. Seq Files The Seq File Advantage Updating the NVRAM Driver Looking at the Sources Index
Copyright Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 corpsales@pearsontechgroup.com For sales outside the United States please contact: International Sales international@pearson.com Visit us on the Web: www.informit.com/ph Library of Congress Cataloging-in-Publication Data: Venkateswaran, Sreekrishnan, 1972-    Essential Linux device drivers / Sreekrishnan Venkateswaran.-- 1st ed.          p. cm.    ISBN 0-13-239655-6 (hardback : alk. paper) 1. Linux device drivers (Computer programs) I. Title.    QA76.76.D49V35 2008    005.4'32--dc22                                                                                                                          2008000249 Copyright © 2008 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax (617) 671 3447 This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/). ISBN-13: 978-0-132-39655-4
Text printed in the United States on recycled paper at RR Donnelly in Crawfordsville, IN. First printing March 2008 Editor-in-Chief Mark Taub Executive Editor Debra Williams Cauley Managing Editor Gina Kanouse Project Edito Anne Goebel Copy Editor Keith Cline Indexer Erika Millen Proofreader San Dee Phillips Technical Editors Vamsi Krishna Jim Lieb Publishing Coordinator Heather Fox Interior Designer Laura Robbins Cover Designer Alan Clements Compositor Molly Sharp Dedication This book is dedicated to the ten million visually challenged citizens of India. All author proceeds will go to their cause.
分享到:
收藏