Essential Linux Device Drivers (Prentice Hall Open Source Software Development Series) (Hardcover)

Filed in Reviews  |  
Tags: , , , , , , , , , , , , , , , ,
TOP del.icio.us digg

Essential Linux Device Drivers (Prentice Hall Open Source Software Development Series)

Product Description

“Probably the most wide ranging and complete Linux device driver book I’ve read.”

–Alan Cox, Linux Guru and Key Kernel Developer

 

“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 Foundation

 

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 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 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. 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 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, 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 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 types of flash memory

• Demystifies essential kernel services and facilities, including kernel threads and helper interfaces

• Teaches polling, asynchronous notification, and I/O control

• Introduces the Inter-Integrated Circuit Protocol for embedded Linux drivers

• 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 networking

• Describes the entire driver development lifecycle, through debugging and maintenance

• Includes reference appendixes covering Linux assembly, BIOS calls, and Seq files



About the Author

Sreekrishnan Venkateswaran has spent more than a decade working in IBM product development laboratories. He has ported Linux to devices ranging from wristwatches and music players to PDAs, VoIP phones, and even pacemaker programmers. He was a Contributing Editor and kernel columnist for Linux Magazine for more than two years.



See all Editorial Reviews


Buy Essential Linux Device Drivers (Prentice Hall Open Source Software Development Series) (Hardcover) at Amazon

3 Comments

  1. Comment by Kyne:

    Without a doubt, this is the best driver book I’ve ever purchased. In the first few chapters the author walks you through boot, interrupts, builds, installs etc so that you can make the most of his outstanding knowledge of drivers and driver design which fills 3/4 of the book. Even if you don’t want to design or build your own driver, the first few chapters alone are worth the cost of the book and the knowledge he imparts about drivers is priceless. If you are a Linux Kernel analyst, you can do no better than purchase this. And as to his writing style.. I’ve read plenty of dry, boring Linux technical books but this one even has a most outstanding writing style. It was enjoyable to read. I cannot praise this book enough. If you’re a newbie Linux Kernel Techie or someone who thinks they already know everything… you cannot go wrong. Buy it, read it and you will learn more about drivers than from any other book, and you’ll learn a whole lot more besides.

  2. Comment by Yuichi:

    I’ve been frustrated by many other Linux kernel and device driver books. The authors often make assumptions about the readers knowledge and gloss over areas that can be quite confusing.

    To some extent, that’s unavoidable: the Linux kernel is monstrous and very complex, and the hardware that drivers control can also be dark and mysterious territory.

    I really appreciated this books approach. It’s not that everything is explained in complete detail; that would be impossible. However, the author obviously tries very hard to give an overview, an orientation that will hopefully set your mind in the right direction, before diving into details. Throughout the book he adds “go look at this” suggestions that can help you understand whatever he’s dealing with at this point.

    I think Chapter 2, which is a high level fly-by of the kernel in general, is an absolute masterpiece. That starts by pulling typical kernel boot messages and explaining what they mean and what’s going on in code to produce them. It then goes on to discuss kernel locks, briefly looks at procfs and memory allocation, and closes (as each chapter does) with pointers to where to look in the source for the subjects discussed.

    Chapters 3 and 4 flesh out basic concepts more, and then after that the book goes into details, picking both real world and fanciful examples of hardware and giving sample device drivers. Simple devices are presented first, while later chapters get into more complicated hardware, but in each case the same general format is followed: overview of the how and why, sample driver(s), how to most easily debug, and pointers to real kernel sources.

    Very well done. I have no complaints – oh, a few minor typos, maybe, but nothing serious.

  3. Comment by Cais:

    Like other reviews have stated, this first half of this book is a concise, useful introduction to certain Linux kernel concepts. But the title of the book leads the reader to expect that they could produce a Linux device driver using this book. That turns out not to be the case – no one could produce a driver with this book without the benefit of other reference material. In short, while the O’Reilly “Linux Device Drivers” text has it’s shortcomings and is starting to become dated, it is still the only text with which the reader can use as a primary reference to create their own driver. It discusses implementation in detail, which this book does not.

    This brings me to the second half of “Essential Linux Device Drivers”, where specific device types are discussed. So little time is spent on each type that none are covered in enough detail to actually go off and start a driver of that type. You could be thinking that this book never claimed to enable you to write a PCI driver, for example, and that would be true. It just feels like a reduced scope with increased depth on the remainder would have made a much more useful book, rather than a bathroom reader.

Trackbacks / Pingbacks

Leave a Reply

Improve the web with Nofollow Reciprocity.