Learn to write a Linux kernel module and device driver. This course will teach you how to write Linux device driver for PCI device, GPIO (General Purpose IO), USB and pseudo Network device with PING (ICMP protocol) functionality.
You will learn cross-compilation and porting kernel Image to an Embedded Device. You will learn setting up NFS (Network File System) and tftpboot server.
You will learn about boot-loader such as uboot and other aspects of Embedded Systems .
This course is designed for beginners in Embedded Systems or Device driver programming. However, Intermediates can also learn from this course.
This course includes 33 videos of various lengths with 6 sections. This course also includes Notes and 'C' source code for drivers.
Recently I added 3 more **BONUS** videos on "Embedded Linux booting process in ARM". In these videos I talk about ARM general purpose and special registers, Vector table. Then I talk about boot process when reset button is pressed, bootloader, Program Address space (Data, BSS, Heal and Stack) Initial Ram Disk (initrd), then Linux kernel image loading.
I have also created another **BONUS** section called Miscellaneous. I am going add any thing that is not covered in that section. I have recently added section on "User and Kernel Virtual memory address space and topic on copy_to_user and copy_from_user" and "Tools required to build kernel module (kernel-headers package, build-essential package etc".
Please let me know what is unclear or needs more explanation I will add a lecture/explanation in Miscellaneous section.
I also have a plan to add another section soon covering topics on Direct Memory Access (DMA), Direct Cache Access (DCA), Scatter Gather List (SGL), Zero copying etc.
I have about 15 years of software development experience. My area of technical expertise includes C/C++ programming, device driver development, firmware design and development and Embedded Systems.
I have held a job title from Embedded Software Engineer to Software Engineer and architect from reputed companies including a fortune 500 company in the USA.
My undergraduate studies was in Computer Science and graduate studies was in Engineering with Specialization in Computer Security for Embedded Systems.