[linux-dvb] linux-dvb Digest, Vol 44, Issue 60
stoth at linuxtv.org
Sun Sep 14 02:08:37 CEST 2008
Paul Chubb wrote:
> 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.
> 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?
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.
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.
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!
More information about the linux-dvb