About Course
Develop a deep understanding of Linux Kernel & Linux Device Driver Development
Course Content
Linux System Programming – Introduction
-
1.1 Introduction to course
53:43 -
1.2 – Ubuntu system Lab setup
10:45 -
1.3 – Building qemu kernel image
01:44:03 -
1.4 – Classification of programming language
19:00 -
1.5 – Compilation VS Interpreration
08:54 -
1.6 – Compilation Steps
09:21
Origin of compiler | Linker Script | GCC
-
2.1 – Compilation Stages
39:42 -
2.2 – Origin of compiler
09:27 -
2.3 – How to do normal compilation
16:48 -
2.4 – Linker Script
08:53 -
2.5 – GCC Optimization
14:12
Static Library | Environmental Variable | Compiler Stages
-
3.1 – Static Library VS Shared Library
01:24:18 -
3.2 – Enviornmental Variable
20:58 -
3.3 – Compilation stages Profile guided optimization HD 1080p
10:03
Compilation Stages Profile guided optimization continue
-
4.1 – Compilation Stages Profile guided optimization continue
19:39 -
4.2 – Compiler Utilities
59:47 -
4.3 – Objdump
47:09
Program Startup
-
5.1 – How do we launch our program
49:38 -
5.2 – Example of program
44:03 -
5.3 – Program startup in userspace
36:08 -
5.4 – Readelf Utility
11:48
Readeif | AR Utility
-
6.1 – Readelf in breif
15:30 -
6.2 – AR Utility
01:38 -
6.3 – Add and Subtract function example
48:24 -
6.4 – LLVM
32:19 -
6.5 – Introduction to Linux
19:24
Linux Filesystem
-
7.1 – Linux Filesystem Hirerachy
18:33 -
7.2 – Why linux follows direct structure
42:05 -
7.3 – Understanding proc folder
56:30
Directory
-
8.1 – Home Directory
36:50 -
8.2 – Lib Directory
50:37 -
8.3 – X86 Architecture
36:55 -
8.4 – X86 Module
14:53 -
8.5 – X86 Register
09:53
Register Continue | Status bits | Calling Convention…
-
9.1 – X86 Register Continue
38:53 -
9.2 – X86 Status bits
53:12 -
9.3 – X86 Calling Convention
12:23 -
9.4 – X86 Instruction Syntax
01:13:16
Instruction Syntax continue
-
10.1 – Instruction Syntax continue
47:12 -
10.2 – X86 Addressing Modes
32:28 -
10.3 – X86 Instruction Classes
44:56 -
10.4 – Load Effective Address
56:28
X86 Instruction | Linux bootup sequence
-
11.1 – X86 Instruction classes
24:57 -
11.2 – Linux bootup sequence BIOS Stage
33:13 -
11.3 – Multibooted sequence
45:31 -
11.4 – Enabling Paging
46:25 -
11.5 – X86 Instruction classes Jump function
35:40
GCC Assembler Directiives
-
12.1 – GCC Assembler Directiives
22:10 -
12.2 – How to do inline assembly
48:33 -
12.3 – Example on how to pass value
07:05 -
12.4 – Understanding inline assembly
53:26 -
12.5 – Understanding ARM architecture
03:22
Understanding ARM in brief
-
13.1 – Understanding ARM in brief
25:01 -
13.2 – RISC Design
33:48 -
13.3 – Topologies in ARM
20:32 -
13.4 – ARM pipeline examples
06:21 -
13.5 – ARM7TDMI Pipeline
01:58 -
13.6 – Data sizes and instruction sets
45:02 -
13.7 – ARM Processor modes
41:31
ARM Program counterR15
-
14.1 – ARM Program counterR15
20:37 -
14.2 – Understanding Vector table
14:29 -
14.3 – Example of start up code
11:20 -
14.4 – Conditional execution and flags
13:17 -
14.5 – Data processing instructions
26:19 -
14.6 – Example on ARM assembly
01:27:25
Branch Instructions
-
15.1 – Branch Instructions
36:53 -
15.2 – LDM and STM operation
43:55 -
15.3 – ARM Assembly code
01:00:45
Libraries in Linux Shared vs static library
-
16.1 – Libraries in Linux Shared vs static library
36:49 -
16.2 – Error handling
52:26 -
16.3 – Filesystem
01:16:30
File System | Elements of file system
-
17.1 – File System in breif
57:13 -
17.2 – Elements of file system
51:20 -
17.3 – Implementation of Inode
42:10 -
17.4 – File system have layers
11:32
File operation | Close function..
-
18.1 – File operation
01:00:17 -
18.2 – Close function
33:36 -
18.3 -Dup and Dup 2 function
14:53 -
18.4 – MMAP Handson
37:55 -
18.5 – Understanding multiplexing
11:30
Understanding file operation
-
19.1 – Understanding file operation
01:14:22 -
19.2 – Profiling GPROF
15:02 -
19.3 -Using Gcov to Analyze Code Coverage How to Analyze Code Coverage with gcov Gcov Intro
11:37 -
19.4 – Debugging GDB
47:28
Debugging GDB | Debugging Address sanitizer
-
20.1 – Debugging GDB
47:21 -
20.2 – Debugging Address sanitizer
18:20 -
20.3 – Debugging Valgrind
19:03 -
20.4 – Segfault debugging
22:28 -
20.5 – Process management
33:03
Example on GDB Debug symbols
-
21.1 – Example on GDB Debug symbols
15:46 -
21.2 – Example on Linux thread
01:06:11 -
21.3 – Process Management fork
22:09
Process Management
-
22.1 – Process Management exec
56:25 -
22.2 – Process Management Vfork
36:35 -
22.3 – Process Management getpid,get ppid
59:23
IPC Message
-
23.1 – IPC Message queue
01:12:11 -
23.2 – IPC Posix message queue
15:49 -
23.3 – IPC Shared memory
29:46 -
23.4 – IPC Semaphore
38:28
IPC Signals
-
24.1 – IPC Signals
01:00:56 -
24.2 – Example on Signal
38:21
IPC Signals in brief
-
25.1 – IPC Signals in brief
01:10:19 -
25.2 – Synchronization mechanism
01:23:33
Synchronization mechanism | Conditional Variable
-
26.1 – Synchronization mechanism Conditional Variable
01:04:01 -
26.2 – Process Scheduling
53:33
Mechanism to change the static priority
-
27.1 – Mechanism to change the static priority
01:23:47 -
27.2 – Setting up Thread priority
24:11 -
27.3 – Processor Affinity
21:50 -
27.4 – Linux Kernel Space
25:14
Linux Kernel Versioning
-
28.1 – Linux Kernel Versioning
01:24:11 -
28.2 – Linux Kernel Architecture folder
09:25 -
28.3 – Linux Parts Setup
45:17 -
28.4 – Root fs
27:18
Floating point not supported in kernel | Grub booting
-
29.1 – Floating point not supported in kernel
11:40 -
29.2 – Grub booting p
24:07 -
29.3 – Handling device modes
26:19 -
29.4 – Transferring Rootfs to Device
07:04 -
29.5 – Development Enviornment
31:16 -
29.6 – Storage Strategy
40:21 -
29.7 – Start up init program
13:19
Start up init program Busy box | Understanding Mods
-
30.1 – Start up init program Busy box
01:26:32 -
30.2 – Understanding Mods
34:26 -
30.3 – Linux virtual Consoles
13:02 -
30.4 – Start up init program System V init
21:43
System V init | Units,httpd service
-
31.1 – System V init d
59:31 -
31.2 – Understanding System d
30:14 -
31.3 – Units,httpd service
01:10:27
Understanding C groups
-
32.1 – Start up init program system d continue
01:15:25 -
32.2 – Understanding C groups
01:27:27
Cgroups V1 and V2
-
33.1 – Cgroups V1 and V2
42:52 -
33.2 – Working of Cgroup and System d
39:17 -
33.3 – Understanding Dbus
01:26:31
Dive into Dbus | Generic Kernel Building Steps
-
34.1 – Dive into Dbus
39:04 -
34.2 – Generic Kernel Building Steps
29:23 -
34.3 – Setup minimal RootfsBuilding UML Busybox
01:19:41 -
34.4 – Building Qemu kernel image
07:19
Building Qemu arm Kernel image and Busybox
-
35.1 – Building Qemu arm Kernel image and Busybox
01:39:03 -
35.2 – Setting up Qemu Arm rootfs
55:57 -
35.3 – Building rootfs along with kernel
09:13
Building Qemu ARM kernel image inbuilt rootfs
-
36.1 – Building Qemu ARM kernel image inbuilt rootfs
01:28:22 -
36.2 – Boot kernel with inbuilt application
34:50 -
36.3 – Booting system using Uboot
01:07:13 -
36.4 – Building Arm kernel Image Uboot
33:06
Building and Setup Qemu Arm Uboot
-
37.1 – Building and Setup Qemu Arm Uboot
01:21:15 -
37.2 – Building Qemu X86 64 Kernel Image
51:38 -
37.3 – Building Raspberrypi kernel image
59:39 -
37.4 – Linux bootup Sequence ARM Case 2
26:01
Yocto Build | Linux System Calls
-
38.1 – Yocto Build
15:55 -
38.2 – Linux System Calls
35:37 -
38.3 – Kernel Helper Function
01:11:22 -
38.4 – Module Utilities
10:57 -
38.5 – Kernel Logs
10:44 -
38.6 – Error Handling and First Hello World Program
58:46
Print tasktruct
-
39.1 -Print tasktruct
29:53 -
39.2 – Module Dependency
39:16 -
39.3 – Module Information
05:47 -
39.4 – Kernel Module Parameters
30:10 -
39.5 – Character Driver
22:46 -
39.6 – Input and Output Mechanism
35:55 -
39.7 – Character Driver New Way
25:11
Character driver mechanism
-
40.1 – Character driver mechanism
50:27 -
40.2 – Character driver new way
01:09:47 -
40.3 – Character driver device file
45:12
Device Tree introduction
-
41.1 – Device Tree introduction
01:32:17 -
41.2 – Device-Tree-x86-and-ARM-
01:08:29 -
41.3 – Device Tree sample, Common properties, Binding, Inclusion
01:00:22
How to check some device tree from user space of Linux
-
42.1 – How to check some device tree from user space of Linux
16:02 -
42.2 – Device Tree Overlay
58:42 -
42.3 – Platform Driver RPI
01:27:21
Platform Driver RPI
-
43.1 – Platform Driver RPI
56:43 -
43.2 – Misc Drivers
47:02 -
43.3 – Input Driver
00:05
Input driver Allocation and Registration
-
44.1 – Input driver Allocation and Registration
23:15 -
44.2 – Input driver polled input device
36:42 -
44.3 – Input driver Generating and Reporting
35:22 -
44.4 – GPIO Using sysfs
01:40:01 -
44.5 -GPIO-Driver-validate-request
18:00
Viewing all allocated interrupt IRQ Lines
-
45.1 – Viewing all allocated interrupt IRQ Lines
52:03 -
45.2 – Gpiod example
16:57 -
45.3 – PinCtrl
41:13
Thread management joining threads
-
46.1 – Thread management joining threads
41:10 -
46.2 -Thread management exit,pthread attributes, process management CFS
34:39 -
46.3 – Thread management TLS, IPC pipe
50:47 -
46.4 -IPC-Named-pipe
22:24
Enable PWM in Raspberrypie
-
47.1 – Enable PWM in Raspberrypie
36:02 -
47.2 – I2C Driver introduction
21:57 -
47.3 – I2C Userspace
34:30 -
47.4 – I2C Driver Linux
32:14 -
47.5 – I2C Driver hands on using SSD1306
20:40
Understanding I2C in brief
-
48.1 -Understanding I2C in brief
01:03:41
SPI Driver Introduction
-
49.1 – SPI Driver Introduction
38:40 -
49.2 – SPI Driver Implementation
51:08 -
49.3 – SPI Driver Handson and RTC
41:40
Understanding Watchdog
-
50.1 – Understanding Watchdog
00:05 -
50.2 – UART in breif
46:10 -
50.3 – UART struct uart driver, uart port, uart ops
18:36 -
50.4 – Regmap API
08:50
Regmap Initialisation
-
51.1 – Regmap Initialisation
51:57 -
51.2 – Regmap API General API to perform operation
25:39 -
51.3 – IIO Driver
51:03 -
51.4 – USB Driver
32:16
Understanding USB Driver
-
52.1 -Understanding USB Driver
01:13:36 -
52.2 – Understanding endpoints
09:10 -
52.3 – USB Driver Interface Structure
26:21 -
52.4 – USB Driver URB
19:28 -
52.5 – Understanding USB Driver handson
22:35
IPC Driver History, PCI Driver addressing, ISPCI Command
-
53.1 – IPC Driver History, PCI Driver addressing, ISPCI Command
01:19:18 -
53.2 – PCI Driver enabling
18:21 -
53.3 – PCI Driver Accessing IO and Memory Space, PCI Driver handson
37:25 -
53.4 – Block Driver Introduction Block Device Drivers An introduction to block device drivers
07:27
Understanding Block Driver
-
54.1 – Understanding Block Driver
40:18 -
54.2 -Block Driver CFQ Schedular, BIK MQ and Single Queue, Registration and Unregistration, R
48:42 -
54.3 – Block Driver Request Queues
00:16
Network Driver Terms and terminology
-
55.1 – Network Driver Terms and terminology
01:05:56 -
55.2 -Understanding PHY Interface
45:32 -
55.3 – Understanding Network Packets
33:12 -
55.4 – Network Driver Queuing Discipline
14:08
Network Driver Registration
-
56.1 – Network Driver Registration
32:30 -
56.2 – Network Driver Flags
01:22:42
Understanding Ethernet program example
-
57.1 – Understanding Ethernet program example
43:19 -
57.2 – MAC address Resolution, Understanding network driver packets
39:22 -
57.3 – Understanding NAPI Driver
08:29 -
57.4 – Network Driver Statistics, Another way
19:26
Network Driver SPI
-
58.1 – Network Driver SPI
01:08:50 -
58.2 – Understanding Reception
01:17:55
Network Transmission Path
-
59.1 – Network Transmission Path
01:01:02 -
59.2 – Network Receipt Path
27:25 -
59.3 – Network Programming Introduction,TCP Client Server
52:09
TCP Client Server,UDP Client Server Understanding
-
60.1 – TCP Client Server,UDP Client Server Understanding
59:59 -
60.2 – Introduction Socket Operation,Concurrent Server
26:55 -
60.3 – Network Casting
06:58 -
60.4 – IPV6 Addressing,Connection Sequence,OSI and TCP IP Model
47:06
Case Study 1 what happens when you browse
-
61.1 – Case Study 1 what happens when you browse
09:03 -
61.2 – Data encryption method and purpose, TLS Communication
45:17 -
61.3 – IPV4,IPV6 Header,TCP Header,TCP Connection and Transmission
48:19 -
61.4 – Nagles Algorithm,TCP UDP Header
40:59
Name and Address conversion DNS,gethostbyname,getservbyport,DNS alternative
-
62.1 – Name and Address conversion DNS,gethostbyname,getservbyport,DNS alternative
01:09:17 -
62.2 – Socket Timeouts,Unit Domain Protocol,Recv and Send message function
26:25 -
62.3 – ARP Operation,Multicast broadcast unicast,Raw sockets,Data Link Access,TCPDUMP
42:19
Understanding Linux Kernel Debugging
-
63.1 – Understanding Linux Kernel Debugging
01:48:35 -
63.2 – Understanding Panic Crash
27:52
Understanding Kernel Panic
-
64.1 – Understanding Kernel Panic
01:11:26 -
64.2 – KASAN Debugging,Memory debugging
01:00:39
xamples ON slug and KASAN Debugger
-
65.1 – Examples ON slug and KASAN Debugger
50:33 -
65.2 – Kmemleak to determine issue
44:12 -
65.3 – Debug lockdep mechanism
23:53 -
65.4 – Understanding Spinlock
18:22
Linux kernel patching
-
66.1 – Linux kernel patching
01:00:47 -
66.2 – What is Linux kernel live patching
14:44 -
66.3 – KSPLICE patching technique HD 1080p
01:14:12
Understanding KDUMP
-
67.1 – Understanding KDUMP
32:34 -
67.2 – Install KDUMP Tools
40:26 -
67.3 – Understanding Makedump HD 1080p
01:03:16
Configure Kexec utility
-
68.1 – Configure Kexec utility
01:26:17 -
68.2 -Kexec utility and crash kernel
41:59 -
68.3 – Ftrace framework
21:42
KDUMP on raspberrypie
-
69.1 – KDUMP on raspberrypie
12:39
Linux Kernel Debugging
-
70.1 – Linux Kernel Debugging | KGDB Continue
12:26
Linux Kernel Debugging KGDB
-
71.1 – Linux Kernel Debugging KGDB HD 1080p
01:21:24 -
71.2 – Intro to KGDBX86
18:41 -
71.3 – KGDB Module
36:35 -
71.4 – eBP, using eBPF for debugging
49:37
Enable debugging
-
72.1 – Enable debugging
44:48 -
72.2 – Linux Kernel Debuggingx86,KDB,eBPF
01:08:01
Tracing in kernel
-
73.1 – Tracing in kernel kprobes
01:15:54 -
73.2 – Framework for tracing kernel
15:30
Tracing in kernel kprobes continue
-
74.1 – Tracing in kernel kprobes continue
59:54 -
74.2 – Purpose of tracing
01:03:55
Example on BCC and eBPF
-
75.1 – Example on BCC and eBPF
43:13 -
75.2 – BPF Trace
01:15:51
Linux kernel debugging perf tools
-
76.1 – Linux kernel debugging perf tools
01:38:19 -
76.2 – Example on Kprobe
53:25
JTAG Debugger
-
77.1 -JTAG Debugger
01:22:59 -
77.2 – Example configuration JTAG debugger
01:02:18
JTAG Debugger continued
-
78.1 -JTAG Debugger continued
01:22:58 -
78.2 – Example configuration files
01:10:41
Student Ratings & Reviews
No Review Yet