Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android device driver development - Entry point

I will be part of the development of device driver for android. In preparation, I want to grasp the basics and advance my skill for this.

I was on VB and JAVA for this past 2 years, so I don't have confident with my C programming. Linux device driver is a new world for me too.

Currently, according to tips I found in different forums, the below resource was good starting point.

Q1: May I hear your suggestions for this.

  1. http://lwn.net/Kernel/LDD3/
  2. http://www.freesoftwaremagazine.com/articles/drivers_linux

Q2: Do you know tutorials specific for android?

And also, here are the specific drivers of android I should learn.

  1. USB
  2. Bluetooth
  3. Wifi
  4. Camera

Thank you for your time!

like image 995
quiel Avatar asked Sep 23 '11 07:09

quiel


2 Answers

I had to port an Android Kernel and the drivers to a custom platform. Android Kernel is basically a Linux Kernel (2.6.x) with a few modifications. The kernel and the drivers are mainly written in C and you will have to get into it. If you already have experience in other languages, you'll get through that one too. There are tons of books about that and tutorials on the WEB. Don't forget to get comfortable with all that "pointer" stuff. This is the main thing in C. The linux Kernel if full of pointer to data structures and even more, pointer to functions packed in data structures.

Here is how I got the informations and knowledge I needed. For Linux Kernel, the O'Reilly's books are great. The one I refer to all the time for device drivers are:
"Understanding The Linux Kernel"
"Linux Device Drivers"

As for resources very specific to writing Android Kernel stuff, I've been looking for that for months and I always end up using Linux resources and I got the job done.

Good luck, have fun and don't forget it's always good for you to gain new skills

like image 128
Sylvain Huard Avatar answered Sep 21 '22 03:09

Sylvain Huard


The first book you mentioned is very good (USB and network is described there).

Other books I would suggest are in: kernel source /Documentation/kernel-docs.txt
(also available here: https://www.kernel.org/doc/Documentation/kernel-docs.txt)

like image 42
Zbyszek Avatar answered Sep 20 '22 03:09

Zbyszek