Device Drivers Programming
Table of Contents
To start up with, drivers are nothing but programs that needs to be installed in a computer in order for the user to be able to access any device. Thus every component in a computer requires its specific driver for it to function. Modifying a device driver involves changing lines of code which may be written in c or machine level language. A good start would be to brush up fundamentals in c language.
check out this link http://cslibrary.stanford.edu/101/
Another concept that has to be understood here is that drivers unlike normal c codes do not begin with a main() function. Instead similar functions have been provided inside the linux kernel for the same purpose. A good knowledge of linux kernel is a must in the process of understanding the driver functionality. There are many tutorials available online on linux kernel. We would recommend reading something that just does not finish explaining only the commands. Check out this link for introduction to linux kernel, and there are also some useful links in it.
We currently have three different documentations available for the code. First one is a set of ppt slides by Naveen Raman. This should be a good start for beginners.
Standard recommended documentation on Network driver is the one by O'reilly Publications. It is a little difficult to understand by beginners. However once you get a good picture, it is recommended to read chapter 14 for better understanding of Network Drivers.