
Course Content
1 – Course Introduction
-
1.1 – Course Introduction
01:16:46
2 – Terms and Terminology for course
-
2.1 – Terms and Terminology for course
04:58 -
2.2 – Classification of programming languages
19:45 -
2.3 – Compilation Vs Interpreration
21:53 -
2.4 – Compilation Stages
25:33
3 – Finding default linker script
-
3.1 – Finding default linker script
29:40 -
3.2 – Compiler optimization techniques
55:47
4 – Inlining optimization technique
-
4.1 – Inlining optimization technique
09:16 -
4.2 – Common Subexpression elimination
02:03 -
4.3 – Jump Threading
03:53 -
4.4 – Short Circuit Evaluation
29:09 -
4.5 – Dead Store Elimination
12:18 -
4.6 – Static Library vs Shared Library
01:31:13
5 – Compiling a program
-
5.1 – Compiling a program
01:44:18
6 – Compilation Stages
-
6.1 – Compilation Stages
01:10:13 -
6.2 – Profile guided optimization
01:27:11
7 – Obj dump
-
7.1 – GCC Extension Aspects
23:41 -
7.2 – Objdump
22:26 -
7.3 – ar utility
29:32
8 – LLVM
-
8.1 – LLVM
14:22 -
8.2 – How to take backup of running program part 1
01:07:08 -
8.3 – How to take backup of running program part 2
50:25 -
8.4 – How do we launch a program
34:27
9 – Setting up enviornment using shell
-
9.1 – Setting up enviornment using shell part 1
02:40:05 -
9.2 – Setting up enviornment using shell part 2
01:23:10
10 – Introduction to Linux
-
10.1 – Introduction to Linux
32:19 -
10.2 – Linux file system hirerarchy
01:12:08 -
10.3 – X86 Register
01:05:24
11 – X86 Architecture
-
11.1 – X86 Architecture Overview
28:53 -
11.2 – X86 Modes
49:21 -
11.3 – Understanding ABI Reference HD 1080p
01:30:51
12 – Understanding Stack Frame
-
12.1 – Understanding Stack Frame
54:52 -
12.2 – Addressing Modes
11:41 -
12.3 – Data Instructions
44:15 -
12.4 – Understanding EFLAGS and CMP
43:52
13 – Compare and test instructions
-
13.1 – Compare and test instructions
48:54 -
13.2 – GCC Assembler Directives
28:51 -
13.3 – C program to assembly
01:02:17 -
13.4 – Setting up x86 64 rootfs
19:57
14 – ARM architecture and Pipeline
-
14.1 – ARM architecture and Pipeline
01:11:40 -
14.2 – A Beginner’s Guide to Arm CPUs
34:31 -
14.3 – Program Status Registers, Exceptional Handling
59:12
15 – Data processing instruction FLAGS
-
15.1 – Data processing instruction FLAGS
01:32:28 -
15.2 – Assembler Program, ARM assembly startup code
36:38 -
15.3 – Understanding ARM MMU and ARM Processor
55:36 -
15.4 – Risc V assembly
40:55
16 – Understanding ARM DMA
-
16.1 – Understanding ARM DMA
01:01:00 -
16.2 – ARM Trust zone
32:03 -
16.3 – RISC V Register file
31:22
17 – Risc V 64 Instructions
-
17.1 – Risc V 64 Instructions
31:59 -
17.2 – Risc V Simulator
06:08 -
17.3 – Libraries in Linux, Static Library
10:34 -
17.4 – Shared Library
09:51 -
17.5 – Error Handling
21:28 -
17.6 – Asserts
23:45 -
17.7 – Filesystem
29:09
18 – Execution of arm assembly
-
18.1 – Execution of arm assembly
24:17 -
18.2 – Arm 64 bit chip
39:37 -
18.3 – Arm 64 bit logic and move
10:18 -
18.4 – Preindex mechanism
42:13 -
18.5 – Copying Register
35:57
19 – File system Disk Partitioning
-
19.1 – File system Disk Partitioning
22:18 -
19.2 – Fat filesystem type
01:05:29 -
19.3 – File system have layers
36:24
20 – Experimentation on File system
-
20.1 – Experimentation on File system
56:43 -
20.2 – Understanding open function
16:09 -
20.3 – Open and possibly create a file or device
57:33 -
20.4 – dup and dup2 functions
14:35
21 – Example and working of asmlinkage
-
21.1 – Example and working of asmlinkage
13:48 -
21.2 – User, Likely and Unlikely
34:41 -
21.3 – Understanding Fast Call
23:02 -
21.4 – init and exit function
25:15 -
21.5 – Function to check functionality
07:52 -
21.6 – Understanding Container of function
23:17
22 – File operation Redirection
-
22.1 – File operation Redirection
33:15 -
22.2 – File operation MMAP
48:55 -
22.3 – Multiplexing
40:01 -
22.4 – Truncate and File operation
25:02
23 – Understanding fdopen call
-
23.1 – Understanding fdopen call
26:02 -
23.2 – Operation meant to read the data from file
19:24 -
23.3 – Understanding “fseek” operation
04:04 -
23.4 – Operation using fprintf
23:14 -
23.5 – Understanding pread and pwrite
02:49 -
23.6 – Understanding readv and writev call
07:42 -
23.7 – Linux boot sequence
18:58 -
23.8 – BIOS and UEFI difference
04:16 -
23.9 – Understanding GRUB booting
39:33
24 – Linux Bootup Sequence ARM Case 1
-
24.1 – Linux Bootup Sequence ARM Case 1
14:14 -
24.2 – Linux Bootup Sequence ARM Case 2
10:30 -
24.3 – Linux Overall Bootup Sequence ARM
16:10 -
24.4 – Linux Overall Bootup Sequence with initramfs ARM
19:13 -
24.5 – Raspberry piboot sequence
43:28 -
24.6 – Imx6 Boot up sequence
12:02
25 – Understanding Kernel Crash Dump
-
25.1 – Understanding Kernel Crash Dump
05:27 -
25.2 – Understandingkexec and dump captureutility
52:43 -
25.3 – UnderstandingEXT4 handson
01:08:54
26 – Understanding FAT handson
-
26.1 – Understanding FAT handson
01:23:47 -
26.2 – Data Encryption Method and Purpose
26:50 -
26.3 – Understanding Integrity Protection
23:55 -
26.4 – Understanding ELF Internals
01:19
27 – C Language Constructors and Destructors with GCC
-
27.1 – C Language Constructors and Destructors with GCC
09:51 -
27.2 – Process management command ps
31:57 -
27.3 – Understanding “top” command
27:03 -
27.4 – Understanding “kill” command
09:16 -
27.5 – Understanding “kill all” command
02:04 -
27.6 – Understanding “pidof” command
02:12 -
27.7 – Understanding “Isof” command
06:29 -
27.8 – Understanding profiling Gprof
11:49 -
27.9 – Understandingprofiling Gcov
20:04 -
27.10 – Understanding process management in Linux
43:11
28 – Understanding Copy on right with example
-
28.1 – Understanding Copy on right with example
41:51 -
28.2 – Understanding Btrfs filesystem
16:10 -
28.3 – Process management fork
17:11 -
28.4 – Btrfs File System
28:13 -
28.5 – Process management exec
31:24 -
28.6 – Process management exec clone
08:34 -
28.7 – Process management getpid and getppid
00:47 -
28.8 – Process management exit and wait
06:44
29 – Understanding IPC Message Queue
-
29.1 – Understanding IPC Message Queue
32:15 -
29.2 – Understanding IPC Posix Message Queue
07:34 -
29.3 – Understanding IPC Shared Memory
20:07 -
29.4 – Understanding IPC Semaphore
08:34 -
29.5 – Initialising Semaphore
25:35 -
29.6 – Understanding IPC Signals
41:05 -
29.7 – Understanding Synchronisation Mechanism
25:42
30 – Understanding Synchronisation Mechanism Mutex
-
30.1 – Understanding Synchronisation Mechanism Mutex
12:23 -
30.2 – Understanding Synchronisation Mechanism Conditional Variable
17:35 -
30.3 – Understanding Process Scheduling
45:40 -
30.4 – How to change scheduler priority
09:26 -
30.5 – How to change thread priority
06:52 -
30.6 – Processor Affinity Mechanism
00:00 -
30.7 – Segfault Debugging
13:02 -
30.8 – User Space Debugging
29:40
31 – Debugging GDB
-
31.1 – Debugging GDB
01:09:12 -
31.2 – Debugging Process
08:52 -
31.3 – Debugging GDB thread
03:20 -
31.4 – Understanding GDB Server client mechanism
03:57 -
31.5 – Debugging Address Sanitizer
05:40 -
31.6 – Debugging Valgrind
16:33 -
31.7 – Understanding User and groups
22:50
32 – Understanding Kernel Programming
-
32.1 – Understanding Kernel Programming
03:15 -
32.2 – Part 2 – Understanding Kernel Space and User Space
13:19 -
32.3 – Classification of Driver
20:13 -
32.4 – Floating pointnot supported in kernel
32:45 -
32.5 – Linux Setup
17:55 -
32.6 – Handling Device Nodes
33:23 -
32.7 – Transferring Rootfs to Device
03:27 -
32.8 – Understanding Development Enviornment
10:10 -
32.9 – Understanding Storage Strategy
44:30
33 – Understanding start up init program
-
33.1 – Understanding start up init program
23:00 -
33.2 – Understanding start up init program
26:12 -
33.3 – Understandingstart up init program
41:56 -
33.4 – Understandingstart up init program
01:04:40
34 – Understanding Linux Kernel Configuration
-
34.1 – Understanding Linux Kernel Configuration
59:01 -
34.2 – Building Qemu ARM Busybox
16:56 -
34.3 – Easy Kernel Development with User Mode Linux
14:53 -
34.4 – Setup Minimal Rootfs using Busybox
02:02 -
34.5 – Starting UML Busybox
03:51 -
34.6 – Building Qemu ARM Kernel Image
03:51 -
34.7 – Deep Dive into Building Qemu ARM Kernel Image
12:31
35 – Debugging Qemu ARM Kernel Image
-
35.1 – Debugging Qemu ARM Kernel Image
30:44 -
35.2 – Debugging Qemu ARM Busybox inbuilt rootfs
09:04 -
35.3 – Building initramfs
10:56 -
35.4 – Setting up Qemu ARM rootfs inbuilt application Hello World
12:12 -
35.5 – Exercise on Uboot
07:50 -
35.6 – Uboot boot steps ATAG
00:59 -
35.7 – Uboot boot steps ATAG and DTB to setup flash
05:36 -
35.8 – Building Linux Kernel
47:34 -
35.9 – Building Qemu x86 64 Kernel Image
21:01
36 – Build a system for riscv
-
36.1 – Build a system for riscv
33:51 -
36.2 – Understanding C groups
33:57 -
36.3 – Linux System Calls
24:35
37 – Understanding kernel helper functions
-
37.1 – Understanding kernel helper functions
01:21:35 -
37.2 – Kernerl Functions – Lists
19:41 -
37.3 – Understanding kernel logs
06:54 -
37.4 – Error Handling
03:50 -
37.5 – Device Tree Introduction
31:42
38 – Device Tree – Discoverable and Non Discoverable
-
38.1 – Device Tree Discoverable and Non Discoverable
24:19 -
38.2 – Linux Device Configuration Mechanisms – ACPI vs Device Tree Linux kernel and Linux device driver
11:56 -
38.3 – Device Tree Sample
01:07:50
39 – Device Tree – Understanding Important elements in device tree using sample
-
39.1 – 20240714 – Device Tree Understanding Important elements in device tree using sample
01:22:26 -
39.2 – Device Tree Vexpress C9
01:22:02
40 – Device Tree Inclusion
-
40.1 – Device Tree Inclusion
12:47 -
40.2 – Device Tree Understanding DTC in raspberrypie
19:12 -
40.3 – Device Tree Overlay
50:00 -
40.4 – Device Tree Interrupt
34:53 -
40.5 – Device Tree Scheduler
37:39
41 – Understanding Character Driver
-
41.1 – Understanding Character Driver
22:25 -
41.2 – Character Driver Old way LED Driver IOCTL
24:29 -
41.3 – Character Driver New Way
39:02 -
41.4 – Character Driver Device File
28:43 -
41.5 – Understanding Platform Driver
26:29 -
41.6 – Understanding Misc Driver
19:33
42 – Understanding Input Driver
-
42.1 – Understanding Input Driver
01:21:40 -
42.2 – Understanding Input Driver in Depth
45:19 -
42.3 – Input Driver Polled Input Device
31:06
43 – GPIO Using sysfs
-
43.1 – GPIO Using sysfs
01:03:08 -
43.2 – Writing GPIO driver in User and Kernel Space
05:49 -
43.3 – GPIO Controller Driver
45:09 -
43.4 – GPIO Driver Validate, Request, export, the GPIO, Driver with Interrupt
13:17 -
43.5 – Understanding GPIO Driver Driver with Interrupt in depth
12:19 -
43.6 – Viewing all allocated interrupt IRQ lines
11:27 -
43.7 – Interrupt Sharing
00:32
44 – Understanding pinCtrl mechanism
-
44.1 – Understanding pinCtrl mechanism
01:50:19 -
44.2 – Understanding PWM Driver
47:24 -
44.3 – I2C Driver Introduction
11:17
45 – Understanding I2C User Space
-
45.1 – Understanding I2C Driver Basic
10:39 -
45.2 – Understanding I2C User Space
44:02 -
45.3 – I2C and SMBus
05:21 -
45.4 – I2C Protocol
49:45 -
45.5 – How to instantiate I2C Devices
39:17
46 – Understanding I2C in deep
-
46.1 – Understanding I2C in deep
44:48 -
46.2 – Understanding Adapter driver
01:05:14 -
46.3 – Understanding I2C with examples
46:48
47 – Understanding I2C mux
-
47.1 – Understanding I2C mux
38:41 -
47.2 – Graphics over I2c Driver
01:18:04 -
47.3 – SPI Driver Introduction
21:51 -
47.4 – SPI Driver Implementation
22:40
48 – SPI Core Driver, SPI Controller Driver, SPI Protocol Driver
-
48.1 – SPI Core Driver, SPI Controller Driver, SPI Protocol Driver
01:27:48 -
48.2 – Setting up SPI Core Driver, SPI Controller Driver, SPI Protocol Driver
47:44
49 – How to install protocol driver
-
49.1 – How to install protocol driver
01:47:36 -
49.2 – PCI Driver History
06:29 -
49.3 – PCI Driver Addressing
28:10 -
49.4 – Configuration Space in PCI Driver
08:00
50 – USB Driver
-
50.1 – USB Driver
00:00 -
50.2 – Understanding AIO
00:00 -
50.3 – Understanding RTC
00:00
51- Understanding Watchdog
-
51.1 – Understanding Watchdog
01:43:16 -
51.2 – Understanding UART
44:27 -
51.3 – Understanding JTAG
27:40
52 – Understanding Serial Driver
-
52.1 – Understanding Serial Driver
43:26 -
52.2 – UART struct uart Driver
01:08:16 -
52.3 – Regmap API
26:48 -
52.4 – IIO Driver
17:13
53 – Deep Dive into IIO Driver
-
53.1 – Deep Dive into IIO Driver
49:47 -
53.2 – USB Driver
51:01 -
53.3 – USB Driver URB
12:53 -
53.4 – USB Driver Creating Pipe
48:19
54 – USB Driver Example and Parts
-
54.1 – USB Driver Example and Parts
01:22:00 -
54.2 – Example on sending and receiving data
46:21 -
54.3 – PCI Driver Configuration Space
17:26
55 – PCI Driver Configuration Space Deep Dive
-
55.1 – PCI Driver Configuration Space Deep Dive
01:32:37 -
55.2- Understanding Bar Mapping with Example
17:29 -
55.3 – Block Driver Introduction
33:14
56 – Deep Dive into Block Driver, IO Schedular and blk MQ and Single Queue
-
56.1 – Deep Dive into Block Driver, IO Schedular and blk MQ and Single Queue
01:51:02 -
56.2 – Block Driver Structure, Registration and un registration
09:31 -
56.3 – Block Driver The gendisk structure
33:19
57 – Block Driver Understanding modified kernel
-
57.1 – Block Driver Understanding modified kernel
01:09:54 -
57.2 – Block Driver Debugging
01:12:11
58 – Understanding Aspects of Linux Kernel Graphics
-
58.1 – Understanding Aspects of Linux Kernel Graphics
01:08:18 -
58.2 – Understanding Linux Kernel Graphics Memory Mechanism
01:29:47
59 – Understanding Display Registration
-
59.1 – Understanding Display Registration
01:33:01 -
59.2 – DRM Driver registration
01:00:31
60 – Linux Graphics Debugging and DRM Workflow Part 1
-
60.1 – Linux Graphics Debugging and DRM Workflow Part 1
01:46:26 -
60.2 – Linux Graphics Debugging and DRM Workflow Part 2
34:56
61 – Camera Driver Part 1
-
61.1 – Camera Driver Part 1
01:33:37 -
61.2 – Camera Driver Part 2
48:13
62 – Camera Driver Debugging
-
62.1 – Camera Driver Debugging
01:05:30 -
62.2 – Audio Driver
01:26:23
63 – Debugging Virtual Sound Driver
-
63.1 – Debugging Virtual Sound Driver
01:14:08 -
63.2 – Linux Kernel Debugging
01:22:19
64 – Memory Debugging
-
64.1 – Memory Debugging
01:14:11 -
64.2 – Detect Locking Issues
01:18:49
65 – Understanding FTRACE
-
65.1 – Understanding FTRACE
01:16:09 -
65.2 – Working of FTRACE
01:12:30
66 – Building Kernel Shark
-
66.1 – Building Kernel Shark
14:23 -
66.2 – Tracing in Kernel Kprobes
46:24 -
66.3 – Understanding Kernel Crash Dump
28:35 -
66.4 – Linux perf events
23:55 -
66.5 – Understanding eBPF
32:22
67 – Linux Kernel Debugging KGDB
-
67.1 – Linux Kernel Debugging KGDB
01:17:44
68 – Linux Kernel Debugging KDB
-
68.1 – Linux Kernel Debugging KDB
01:06:24 -
68.2 – Setting up WatchdogThreshold
04:10 -
68.3 – Linux Kernel Debugging Hang tasks
34:50 -
68.4 – Understanding JTAG Debugging
55:32
69 – Understanding Network Programming
-
69.1 – Understanding Network Programming
01:48:26 -
69.2 – Understanding Network Programming in Depth
40:21
70 – Identify Bugs
-
70.1 – Identify Bugs
00:00 -
70.2 – Understanding Vulnerability
53:11
71 – Understanding Networking and Debugging
-
71.1 – Understanding Networking and Debugging
01:28:07 -
71.2 – Understanding Networking and Debugging in Depth
01:30:13
72 – API’S used in Network Driver
-
72.1 – API’S used in Network Driver
01:37:59 -
72.2 – Carrier Function to Deal with Link Stage
01:00:30
73 – Setup Network Interface and Debugging
-
73.1 – Setup Network Interface and Debugging
01:10:59 -
73.2 – Understanding SKBUFF
05:40
74 – Network Transmission Flow of Data
-
74.1 – Debugging Network Transmission Flow of Data
01:18:57 -
74.2 – Network Transmission Flow of Data
01:05:38
75 – Setting Up QEMU with Tap Interface and Breach
-
75.1 – Setting Up QEMU with Tap Interface and Breach
02:21:29 -
75.2 – Understanding Network Stack
57:21
76 – Walk through Bridge Mechanism
-
76.1 – Walk through Bridge Mechanism
02:06:34 -
76.2 – Understanding Socket Example
03:26 -
76.3 – Understanding Unicast and Multicast
10:49 -
76.4 – IPV6 addressing
09:07 -
76.5 – Understanding Connection Sequence
19:34
77 – Package Exchange for TCP Exchange
-
77.1 – Package Exchange for TCP Exchange
22:59 -
77.2 – TCP IP Subsystem
40:17 -
77.3 – Case Study 1 What happens when you browse
09:34 -
77.4 – TLS Communication
02:47 -
77.5 – IPV4,IPV6 Header, TCP Header, TCP Transmission Policy, UDP Headers, TCP DUMP
54:25
78 – Debugging Network Capture
-
78.1 – Debugging Network Capture
01:15:21 -
78.2 – TCP Dump
39:39 -
78.3 – Process Management
29:39
79 – Task Handling in Multicore
-
79.1 – Task Handling in Multicore
01:36:14 -
79.2 – Process Management CFS
53:45 -
79.3 – Process Management RT, Linux Interrupt Management, Linux Memory Management
11:46
80 – Process Management RT
-
80.1 – Process Management RT
55:49 -
80.2 – Process Management STOP
25:25 -
80.3 – Process Management DEADLINE
05:23 -
80.4 – Process Management IDLE
31:18 -
80.5 – Process Management Preemption
09:40 -
80.6 – Process Management Context Switch, Bottom Halves
28:14
81 – Process Management CFS
-
81.1 – Process Management CFS
48:44 -
81.2 – Understanding Bottom Halves
50:49 -
81.3 – Bottom Halves Tasklets
16:01 -
81.4 – Bottom Halves Own WorkQueue
40:44
82 – Bottom Halves Deepdive
-
82.1 – Bottom Halves Deepdive
59:29 -
82.2 – request threaded irq Call
08:17 -
82.3 – Process Management Tools LTTng
32:40 -
82.4 – Understanding Linux Interrupt Management
01:09:20
83 – Understanding Interrupts
-
83.1 – Understanding Interrupts
01:06:23 -
83.2 – Understanding Various Types of Interrupts
16:51 -
83.3 – Interrupt Descriptor Table
21:45 -
83.4 – Understing Interrupt with Example
41:00 -
83.5 – Linux Memory Management
27:15
Student Ratings & Reviews
No Review Yet