Linux Kernel Driver Programming with Embedded Devices
3.4 (31 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
203 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Linux Kernel Driver Programming with Embedded Devices to your Wishlist.

Add to Wishlist

Linux Kernel Driver Programming with Embedded Devices

For Beginners and Intermediates
3.4 (31 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
203 students enrolled
Created by Mr AJ Singh
Last updated 6/2017
English
Curiosity Sale
Current price: $10 Original price: $20 Discount: 50% off
30-Day Money-Back Guarantee
Includes:
  • 4.5 hours on-demand video
  • 21 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I 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.
View Curriculum
Requirements
  • 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.
Description

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.  

Enjoy!!

Who is the target audience?
  • 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.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
38 Lectures
04:34:46
+
Introduction and Overview
4 Lectures 23:30

Overview - Some information on Embedded System boards
04:24

Overview - Topic on Micro-processor vs Micro-controller, SPI)
11:02

Overview - Host system setup (VMware Workstation Player)
01:56
+
Hello World Device Driver
2 Lectures 17:16
Hello World Exercise - modprobe vs insmod
09:49

Hello World Character Device Driver
07:27
+
Introduction to TI OMAP 3530 Embedded board and GPIO in Linux
5 Lectures 56:31
OMAP 3530 Demo
07:45

OMAP - NFS, tftpboot
05:34

OMAP - Toolchain, Cross-compilation
26:23

OMAP - uboot, Linux loading on OMAP
05:31

OMAP - GPIO programming, OMAP backlight
11:18
+
Microchip Pic18F and USB kernel module
7 Lectures 57:16
USB kernel module - USB system explanation
09:19

USB Kernel Module - Demo
08:29

USB Kernel Module - QT GUI (User Space) Application
14:02

USB Kernel Module - Schematic
02:16

USB Kernel Module - code explained 1
07:35

USB Kernel Module - code explained 2
08:11

USB Kernel Module - code explained 3
07:24
+
Introduction to PCI Kernel Module
5 Lectures 35:52
Introduction to PCI Kernel Module - PCI/PCIE system explanation
08:18

Introduction to PCI Kernel Module - Code Explanation for basic PCI device
09:10

Introduction to PCI Kernel Module - PCI configuration space and BAR
05:24

Introduction to PCI kernel Module - Code Explanation Probe function
10:36

Introduction to PCI Kernel Module - Demo
02:24
+
Psuedo Network Kernel Module
5 Lectures 24:23
Psuedo Network Kernel Module 1
08:47

Topic: Ping concept
02:06

Topic: OSI Model
02:58

Kernel Model Code Explanation 1
03:52

kernel Module Code Explanation 2
06:40
+
Synchronization
5 Lectures 31:44
Synchronization Overview
04:17


User Space Application Code Explained - POSIX Threads
07:26

Kernel Module Code Explained
07:27

Ring Buffer Implementation in Kernel space Explained
04:42
+
BONUS Section: Embedded Linux booting process in ARM
3 Lectures 14:45

Booting process - Reset, Bootloader
06:25

Booting process - Linux Image, Program Address space (Data, BSS, Heap, Stack)
04:08
+
BONUS Section: Miscellaneous
2 Lectures 13:29
User and kernel address space: copy_to_user and copy_from_user functions.
06:46

Tools and building essentials for kernel modules
06:43
About the Instructor
Mr AJ Singh
3.4 Average rating
31 Reviews
203 Students
1 Course
Software Engineer

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.