Kernel compilation:
- From
KernelNewbies: http://kernelnewbies.org/FAQ#compile
- From Tldp (somewhat outdated): http://tldp.org/HOWTO/IBM7248-HOWTO/kernel.html
- Understanding
the Kernel Makefile: http://www.ravnborg.org/kbuild/makefiles.html
- Also,
here you can find a good source for kernel projects that need
developers: http://kernelnewbies.org/KernelProjects
- Linux Kernel Module Programming http://www.tldp.org/LDP/lkmpg/2.4/lkmpg.pdf
Latest Kernel Release:
Linux Kernel 3.19 Released Feature list
Linux Kernel 3.19 Released Feature list
Developing Kernel modules/Device drivers:
- Linux
Kernel API: http://www.gnugeneration.com/books/l...20/kernel-api/
- Linux
Kernel Module Programming Guide -- Tldp: http://tldp.org/LDP/lkmpg/2.6/html/
- Linux
Device Drivers [3rd Ed] -- Publisher: O'REILLY: http://lwn.net/Kernel/LDD3/
- Linux
Kernel development -- Author: Robert Love http://www.google.com/books?q=isbn%3A9780672329463
Implementing System calls in Linux:
- Tldp: http://tldp.org/HOWTO/html_single/Im...inux-2.6-i386/
- LinuxJournal
(somewhat outdated): http://www.linuxjournal.com/article/3326
- Linuxdocs: http://www.linuxheadquarters.com/how...nelpatch.shtml
The GCC compiler, the GNU Make, and the KBuild:
- GNU
GCC: http://gcc.gnu.org/
- GNU
Make: http://www.gnu.org/software/make/
- Make
made easy -- eng.hawaii: http://www.eng.hawaii.edu/Tutor/Make/
- Makefile
Howto -- wlug: http://www.wlug.org.nz/MakefileHowto
- KBuild
-- kernel-labs: http://www.kernel-labs.org/?q=autotools
- KBuild
-- Trac: http://svn.netlabs.org/kbuild/wiki/kBuild
- https://www.cs.duke.edu/courses/cps108/doc/makefileinfo/sample.html
- http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html
The Kernel Development:
- Wolfgang mauerer
- http://www.e-reading-lib.org/bookreader.php/142109/Professional_Linux_kernel_architecture.pdf
- Robert Love
- http://books.google.com/books?id=3MWRMYRwulIC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false
kernel developer's document PDF for version 3.0
The Kernel Debugger:
- KDB
-- IBM http://www.ibm.com/developerworks/li...brary/l-kdbug/
- KDB
-- kernel: http://kernel.org/pub/linux/kernel/people/jwessel/kdb/
- http://odm.ubuntu.com/uhs/2011/Kernel%20Debug%20Tips%20and%20Techniques.pdf
- https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks
- http://www.linuxjournal.com/content/kbuild-linux-kernel-build-system
- http://www.linux.com/learn/linux-training/33991-the-kernel-newbie-corner-kernel-and-module-debugging-with-gdb
Device DRIVERS:
- http://www.codeproject.com/Articles/112474/A-Simple-Driver-for-Linux-OS
- http://www.lintech.org/comp-per/01buses__ver2_.pdf
- http://www.xml.com/ldd/chapter/book/ch13.html
- http://free-electrons.com/doc/dma.pdf
- http://www.linuxjournal.com/article/7104
- http://lwn.net/images/pdf/LDD3/ch15.pdf
- http://www.freesoftwaremagazine.com/articles/drivers_linux
- http://www.linuxforu.com/2011/12/data-transfers-to-from-usb-devices/
- http://www.alsa-project.org/~tiwai/writing-an-alsa-driver/ch02.html
- http://free-electrons.com/docs/serial-drivers/
- http://www.linuxdevcenter.com/pub/a/linux/2007/08/02/an-introduction-to-linux-audio.html
- http://linux-sound.org/drivers.html
Platform DRIVERS:
Board Support Packages (BSP):
- http://www.rtems.org/onlinedocs/releases/rtemsdocs-4.9.4/share/rtems/pdf/bsp_howto.pdf
- http://www.rtems.org/wiki/index.php/Board_Support_Packages
- http://hama.apache.org/hama_bsp_tutorial.html
- http://www.mikro.fh-konstanz.de/inhalte/informationsquellen/online_manuals/spectrapdf/bspdev.pdf
Boot Loader:
- http://wiki.openwrt.org/doc/techref/bootloader
- http://lennartb.home.xs4all.nl/bootloaders/node3.html
- http://wiki.osdev.org/Bootloader
- http://www.tldp.org/LDP/lki/lki-1.html
Shared Memory:
- http://baptiste-wicht.com/posts/2012/04/c11-concurrency-tutorial-advanced-locking-and-condition-variables.html
- http://www.cs.cf.ac.uk/Dave/C/node27.html
- http://www.cs.toronto.edu/~iq/csc209s/smalllectures/csc209_w10_4.pdf
- http://www.polarsparc.com/pdf/PThreads.pdf
- http://lxr.free-electrons.com/source/fs/proc/base.c#L3157
- http://lxr.free-electrons.com/source/include/linux/sched.h#L1303
- http://www.buyya.com/java/Chapter14.pdf
- http://www.cis.upenn.edu/~milom/cis501-Fall05/lectures/12_smt.pdf
OTHERS:
http://elinux.org/BeagleBoardBeginners
https://www.kernel.org/doc/Documentation/networking/tproxy.txt
Kernel Support for Faster Web Proxies
Last but not the least:
The Linux Kernel Mailing list FAQ: http://mirror.averse.net/pub/linux/docs/lkml/
Hey Rajeev
ReplyDeleteThis is really informative buddy,thanks for helpping people like me who are just beginners in this domain.
Cheers
Justin
If you need any additional assistance, feel free to send me email. I will try my best to help you
ReplyDeleteHi Rajeev,
DeleteCan you please give me your email ID.
Thanks and Regards,
Pravin Jogdand
Hi Rajeev,
ReplyDeleteI was working with Linux ubuntu flavour , suggest me how to start debugging the kernel ,will the information find in the site http://tldp.org/LDP/lkmpg/2.6/html/x44.html ,you have mention is applicable to ubuntu
Regards
Tamil
This comment has been removed by the author.
ReplyDeleteHi Tamil Sorry for delayed response, ideally there shouldnt be any problem with basic debugging, start using kernel debugger to step through,
ReplyDeleteFollow some of the basics from below
https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks
https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks
Ping me if you have any specific question on these.
Again apologies for delayed response was travelling
also updated the post with these so that others dont have issues finding them
ReplyDeletethanks for your reply , I am started to debug the kernel ,if I come across
ReplyDeleteany issues I will ping you .Also i will update once i completed a small example .
ya , i have successfully added a simple kernel module to my ubuntu 12.10
ReplyDeleteGreat...I am happy that, i can be of some help to you.
ReplyDeleteHi Rajeeev,
ReplyDeleteis it possible to write device drivers as loadable kernel module.
yeah we can do that...kindly go through below article for more info.
ReplyDeleteelse i will send you some sample code which i wrote when i was starting on DD's
http://www.tldp.org/HOWTO/html_single/Module-HOWTO/
ya sure ,thanks for your guidelines i will try myself Rajeev,if I need any clarification I let you know
ReplyDeleteGreat...
ReplyDeleteHi Rajeev,
ReplyDeleteI like to know, when I read or write some thing to file ,how it actually stores to hard drive. My question is eg: when i use fwrite in c program to store my name in the text file,how fwrite links to system call, drivers and finally how it writes to hard disk.I know its very generic question . if possible give me the roadmap for me to proceed. After 3 day I am again starting with kernel module programming :)
is "Essential Linux Device Drivers " book will be useful to get start driver programing ???
ReplyDeleteYes it will surely help.... Let me know if you need any help....my response will be slow in coming days ....I m out on vacation
ReplyDeleteSent from my i Pad
Hi Rajeeev,
ReplyDeletewhen I started doing small kernel module programming , I feel like, I don't have much knowledge about Linux system files , So I am gonna to start from the base by following the book "Essential Linux Device Drivers", Mean while I will keep you update about my learning status . Thanks for your continues support
Hi Rajeev,
ReplyDeletei wanna to have serial communication between my Linux system and between my piccolo c2000 real time controller . how to do i start proceed.
Regards,
TAMIL
i m not sure if i understood your question, But there are plenty of ways you can have serial communication from controller to linux box.
ReplyDeletefollow some standard rules
1. Make sure you use correct cables (2 & 3 crossed out, no handshake lines to start with)
2. Seperate the devices, i.e. connect your Linux machine to a PC running a terminal program and try to establish 2-way communication -
3. connect Linux and C2000 only if they both work against a known and proven device i.e.
RS232, IEEE 1394
ya ,thank your reply , i have made small mistake in mu code ,its working fine know .
ReplyDeleteRegards,
Tamil.
Hi,
ReplyDeleteI want to port kernel for device .
Can u plz help me whcih device is easy to port the kernel
Any SMT Board model name that will easily port kernel for that Board
Regards,
DILEEP
Hi Dileep,
ReplyDeleteTry following article for the basic porting..if that doestnt help give me a shout and will take you to step by step approach.
http://www.slideshare.net/derkling/linux-porting-to-a-custom-board
Hi Rajeev,
ReplyDeleteIs there any examples for pci drivers??
Kindly Look at the Blog under Device Driver. under alsa proj. Seach for PCI Driver Example's. Let me know how it goes.
ReplyDeleteRajeev
Hi Rajeev,
ReplyDeleteunder this blog i have checked the device driver section, but i cant find alsa proj. i have few basic questions in pci
1)how pci bus id are allocated to new devices connected to it.
2) How pci bus connector connects to Processor,For example if my system has 3 PCIe connector's , in which PCIe network card is connected in one pcie slot and PCIe graphics card on other and one left empty.how this two will simultaneous communicates ????.
ReplyDeleteJust do ctrl+f and search for "writing-an-alsa-driver" you will find a section called
ReplyDeleteBasic Flow for PCI Drivers: go into the full code example and you are there. Let me know if you still have issue locating it.
ya i got it
ReplyDeletehi Rajeev its been long time , i am visting again ,
ReplyDeletei have read about char drivers understood very well. i like to implement some real time driver. so i am going for serial driver. could u tell me is there any simple serial driver so that i will communicate via my pc serial port . So that understood more practically
Regards,
Tamil
Follow the blog carefully......you have everything you need here..... ctrl+f and search for serial-drivers
ReplyDeleteHi Rajeev any IDE available for device driver development
ReplyDeleteYou can use either of these for the same.
ReplyDeleteEclipse
etbeans
Code::blocks.
See my blog links for more details
http://streamingcodecs.blogspot.com/2013/05/compile-device-driver-using-eclipse.html
Let me know for any other questions you have details
Hi,Rajeev
ReplyDeleteI am new in device driver. i want to learn I2c communication with device driver. Do you have tutorial
Hi Rajeev,
ReplyDeleteI have knowledge about Low Level Drivers. I have worked on some high level drivers also.
But I don't have deep understanding about high level drivers.
1). My question is how my driver is attached to bus driver..?
2). When a device is connected,How the bus(I2C) driver find out which driver is there for this device.
3). How the kernel takes care of driver table.
4). What about probe in a driver.
5). Who calls probe.
6). In the kernel where can i find specific code that shows the calling of probe function of the specific driver.
7).
great work!!
ReplyDeletethanks.
though i am not able to understand much of the data from the above links (beginner) i must appreciate your wok.
- nileshguj@gmail.com
Thanks Nilesh.... I have created this to help,Its just a start, Keep on reading and if you have specific questions dont hesitate to contact me.
ReplyDeleteHi Rajeev,
ReplyDeleteI wanted to know about pcie hotplug. How it works, what is pciehp, acpiphp drivers, are they same? im a begineer on this can you please help me on this.
Thanks
Hello Sathyavathi,
ReplyDeleteI think you should do some study, also i dont know what you are trying to do so it would be difficult to help without knowing what you want. But please read some of the documents attached.
I am sure these will help.
http://www.mindshare.com/files/ebooks/pci%20express%20system%20architecture.pdf
http://www.pcisig.com/specifications/pciexpress/specifications/ECN_Hot_Plug__No31.pdf
http://www.ni.com/white-paper/3767/en/
Let me know if this helps?
hello rajeev sir i want to learn linux device driver on arm so please help me out how can i start. i already have a knowing of arm controller and linux intern and shell scripting but not try any driver program yet so please help me out regarding linux device driver and porting linux on arm
ReplyDeleteThanks
Akash Garg
Hello Akash,
ReplyDeleteWhat help you are looking for, did you get a chance to go through the basic of Device Drivers? In my opinion start going through Device driver section in the blog and go through example program to start with. there are some good articles about Porting as well. go through it... Send me email if you have any doubts.
Hope this helps
thanks sir for your reply. i never go through with any device driver yet but i want to do.
ReplyDeletebasically i had 1.5 year exp with micro controllers now i want to go with porting and device driver on controller basically with beaglebone or raspberry pi (ARM series). please help me out in that section .
go through documents, it has all the required information. if any problems then ask for help.
ReplyDeleteHi Rajeev,
ReplyDeleteI have a question regarding PCIe hot-plug.
Can we do a hot-remove of a device when it is mounted?
i.e i mount the device and hotremove it without unmounting.
If yes. the filesystem will handle unmount of the device or we have handle unmounting the device in the driver.
Second scenario- Can i go in the directory where the device is mounted and hotremove the device?
i.e mount /mnt
cd /mnt then hot remove the device.
here also the filesystem will take care of unmounting and flushing the cache?
or it should be handled in driver. if unmounted from mount point what is the behaviour?
great collection man. thanks alot.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete