Linux Kernel Driver Programming with Embedded Devices
3.4 (307 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,881 students enrolled

Linux Kernel Driver Programming with Embedded Devices

For Beginners and Intermediates
3.4 (307 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,881 students enrolled
Created by AJ Singh
Last updated 11/2018
English [Auto]
Current price: $20.99 Original price: $29.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 5 hours on-demand video
  • 23 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • At the end of my course, students will be able to engage in Linux device driver development projects for Embedded and x86 platforms.
  • Students will be familiar with Embedded Systems, understand what Embedded Systems I/O and peripherals are.
  • Students will be able to develop and/or debug driver development projects of simple to moderate complexities.
  • Students will learn about GPIO programming, PCI device programming, USB and Network driver programming for Linux.
  • Students will be able to configure and build Linux kernel for x86 and Embedded devices.
  • Students will learn about Synchronization in Linux kernel. Synchronization is very import aspect of kernel space programming.
  • In Bonus section, students will learn booting sequence from reset to bootloader to Embedded Linux kernel for ARM.
  • Students should have background in Operating Systems primarily in Linux Operating system.
  • Students should have background in C programming language.
  • Students should have some exposure or knowledge of software/firmware development for some embedded devices/micro-controllers.
  • It is helpful if students purchase an Embedded Systems board such as beagle bone or Microchip PIC stick from Olimex.

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.  


Who this course is for:
  • Computer Science, Computer Engineering or Electrical Engineering students.
  • Students who are enthusiastic about learning Embedded System and Linux driver programming.
  • Systems Engineers who are just learning how to write Linux device drivers.
Course content
Expand all 43 lectures 04:54:54
+ Introduction and Overview
4 lectures 23:30
Overview - Some information on Embedded System boards
Overview - Topic on Micro-processor vs Micro-controller, SPI)
Overview - Host system setup (VMware Workstation Player)
+ Hello World Device Driver
2 lectures 17:16
Hello World Exercise - modprobe vs insmod
Hello World Character Device Driver
+ Introduction to TI OMAP 3530 Embedded board and GPIO in Linux
5 lectures 56:31
OMAP 3530 Demo
OMAP - NFS, tftpboot
OMAP - Toolchain, Cross-compilation
OMAP - uboot, Linux loading on OMAP
OMAP - GPIO programming, OMAP backlight
+ Microchip Pic18F and USB kernel module
7 lectures 57:16
USB kernel module - USB system explanation
USB Kernel Module - Demo
USB Kernel Module - QT GUI (User Space) Application
USB Kernel Module - Schematic
USB Kernel Module - code explained 1
USB Kernel Module - code explained 2
USB Kernel Module - code explained 3
+ Introduction to PCI Kernel Module
5 lectures 35:52
Introduction to PCI Kernel Module - PCI/PCIE system explanation
Introduction to PCI Kernel Module - Code Explanation for basic PCI device
Introduction to PCI Kernel Module - PCI configuration space and BAR
Introduction to PCI kernel Module - Code Explanation Probe function
Introduction to PCI Kernel Module - Demo
+ Psuedo Network Kernel Module
5 lectures 24:23
Psuedo Network Kernel Module 1
Topic: Ping concept
Topic: OSI Model
Kernel Model Code Explanation 1
kernel Module Code Explanation 2
+ Synchronization
5 lectures 31:44
Synchronization Overview
User Space Application Code Explained - POSIX Threads
Kernel Module Code Explained
Ring Buffer Implementation in Kernel space Explained
+ BONUS Section: Embedded Linux booting process in ARM
3 lectures 14:45
Booting process - Reset, Bootloader
Booting process - Linux Image, Program Address space (Data, BSS, Heap, Stack)
+ BONUS Section: Miscellaneous
2 lectures 13:29
User and kernel address space: copy_to_user and copy_from_user functions.
Tools and building essentials for kernel modules
+ BONUS Section: Linux Memory Management Technique
5 lectures 20:08
Custom Memory Driver 2
Custom Memory Driver 3
Custom Memory Driver 4
Custom Memory Driver 5