Tuesday, May 4, 2010
Linux Device Driver
Organization of the Material
The book introduces its topics in ascending order of complexity and is divided
into two parts. The first part (Chapters 1 to 10) begins with the proper setup of
kernel modules and goes on to describe the various aspects of programming that
you’ll need in order to write a full-featured driver for a char-oriented device. Every
chapter covers a distinct problem and includes a “symbol table” at the end, which
can be used as a reference during actual development.
Throughout the first part of the book, the organization of the material moves
roughly from the software-oriented concepts to the hardware-related ones. This
organization is meant to allow you to test the software on your own computer as
far as possible without the need to plug external hardware into the machine. Every
chapter includes source code and points to sample drivers that you can run on any
Linux computer. In Chapter 8 and Chapter 9, however, we’ll ask you to connect an
inch of wire to the parallel port in order to test out hardware handling, but this
requirement should be manageable by everyone.
The second half of the book describes block drivers and network interfaces and
goes deeper into more advanced topics. Many driver authors will not need this
material, but we encourage you to go on reading anyway. Much of the material
found there is interesting as a view into how the Linux kernel works, even if you
do not need it for a specific project.
In order to be able to use this book, you need to be confident with C program-
ming. A little Unix expertise is needed as well, as we often refer to Unix com-
mands and pipelines.
At the hardware level, no previous expertise is required to understand the material
in this book, as long as the general concepts are clear in advance. The text isn’t
based on specific PC hardware, and we provide all the needed information when
we do refer to specific hardware.
Several free software tools are needed to build the kernel, and you often need
specific versions of these tools. Those that are too old can lack needed features,
while those that are too new can occasionally generate broken kernels. Usually,
the tools provided with any current distribution will work just fine. Tool version
requirements vary from one kernel to the next; consult Documentation/Changes in
the source tree of the kernel you are using for exact requirements.
Download this book click here