[linux-dvb] linux-dvb Digest, Vol 44, Issue 60
awalls at radix.net
Sun Sep 14 02:47:10 CEST 2008
On Sat, 2008-09-13 at 20:08 -0400, Steven Toth wrote:
> Paul Chubb wrote:
> > Hi,
> > there is a good book on kernel development by Robert Love - Linux
> > Kernel Development. I read about two thirds of it. Lots of useful
> > information but I found it difficult to get a wide viewpoint of the
> > process. It would be great to have beside you as a reference. Looking on
> > Amazon - I wanted to check the details - there are several other books
> > including linux device drivers by Rubini.
> > HTH
> > Cheers Paul
> > Joe Djemal wrote:
> >> I concur with the below. I can code in quite a few languages including
> >> assembly languages and I asked for a pointer on where to get started with
> >> learning how to make a Linux driver and there was complete silence as there
> >> was with my previous inquiry.
> >> Come on guys, I've been Googling but where do I start?
> >> Joe
> Hey Joe, I didn't see your first request, sorry.
> The Linux Drivers Manual (oreilly) is a good place to start for a
> generic overview of the kernel driver features. It's also online
> downloadable for free in PDF form.
I'd also recommend Bovet and Cesati _Understanding_the_Linux_Kernel_.
It's a little dated in that it covers kernel 2.4.x, but it's got an
emphasis of understanding what's going on in critical areas of the
kernel. It is not a cookbook for writing drivers.
The Linux Device Drivers is quite a good cookbook/reference for how to
write a driver. But IMO it doesn't have a strong emphasis on the why,
but only the what and how.
Both books are valuable for learning and reference.
> Jumping head first into linuxtv.org is a steep learning curve if you
> haven't done driver work before. Get comfortable building the source
> tree (see the wiki). I'd then suggest you look at the small drivers
> (common/tuners) would be a good place to start.
> Look at the struct_ interfaces that each of the smaller drivers use and
> you'll start to see the major interfaces between different parts of the
> kernel (tuners and demodulators) ( files
> inlinux/drivers/media/dvb/frontends). In the demodulator drivers you'll
> see dvb_frontend_ops, it contains the callbacks allowing other parts of
> the kernel (dvb/dvb-core/*.[hc]) to call the demodulators for
> configuration and tuning purposes. When applications tune then call
> interfaces in dvb-core, this marshals the data and passes those calls
> onto the demodulator drivers.
> Tuners and demodulators are a good place to start as the drivers are
> generally fairly small. Get to grips with this before you look at the
> physical pci/pcie/usb drivers, they get large quickly and can easily
> confuse. Limit you learning to a specific field (tuners and demods) and
> submit a few cleanup patches. This is how most people start.
> No substitute for look at the source code and finding the common
> structures that all tuners and demodulators use.
I'd also recommend you learn how to use "ctags" to make tag files of the
v4l-dvb source and kernel source, and learn how to use tags files within
your editor to navigate the source.
Tags make life so much easier: structure definitions, defined constants,
and function bodies are a keystoke way from where they are used in the
source you are reading.
> No good book on linux-dvb exists, apart form the spec (see linuxtv.org)
> and the actual project source code.
> This is where I'd suggest you begin your journey.
> Welcome, and good luck!
> - Steve
More information about the linux-dvb