IIT Madras Embedded Linux and FPGAs Lectures
EE410178 lectures12 weeks
Weeks
- Week 17 lecturesIntroduction · MMIO and AXI-lite basics · Embedded c for hardware access · Memory-mapped I/O concepts · AXI bus protocol overview · Simulation demonstration using cocotb · AXI4-lite register bank implementation
- Week 27 lecturesRegister design goals · ARM UART summary of registers · ARM UART summary of registers (cont.) · Smart timer and register map · AXI-lite: reg ctrl features · Smart timer interface via axi-lite · Common register behaviour
- Week 37 lecturesFrom Bare Metal Boot to Linux Device Drivers · Bare Metal Access: Registers & MMIO · Deeper into OS Kernel · Virtual Memory Basis · Linux Device Drivers · Demonstration · Demonstration(Cont.,)
- Week 47 lecturesIntroduction: Simulation vs. Emulation · Getting Started with Renode: Installation & Setup · Bare-Metal ELF Execution in Renode · Booting Stock Linux on ARM Versatile Express (VExpress) · Running Linux on a Zynq-Based Platform with Renode · Compiling the Linux Kernel and Init System (Part 1) · Compiling the Linux Kernel and Init System (Part 2)
- Week 56 lecturesDevice Tree : Describing Hardware for Linux · Understanding the Motivation for Device Tree · Device Tree -Basics: Key Concepts to Recognize · Customised DTB for smart timer · Boot with new DTB(Renode) · DT-Drive Binding
- Week 65 lecturesPlatform Drivers — Fundamentals and Device Binding · Platform Driver Skeleton – Structure and Workflow · Demonstration: Smart Timer Platform Driver on Zynq ZedBoard · Demonstration: FFT Platform Driver on Zynq ZedBoard · Driver Binding Across Operating Systems – A Comparative View
- Week 75 lecturesIntegration of Verilator and Renode Emulator · Demo: Cosimulation with simplest software without OS · FIR Filter: Fundamentals and Workflow · Demo: FIR–AXI Integration on Renode · Summary on CoSimulation and workflow
- Week 86 lecturesInterrupts: Necessity and Types · ARM GIC Architecture & Interrupt Routing Flow · Device Tree Interrupt Bindings · Smart Timer IRQ Hardware Design · Smart Timer IRQ Demo · Interrupt Debug & Performance Overhead
- Week 97 lecturesIRQ Handling Basics · Smart Timer — IRQ-Driven Wait Queue Demo · Linux Driver Concurrency and Synchronization · IRQ-Safe Locking and Deferred Execution · FIR Driver: IRQ and Read Synchronization · Demo of IRQ and Read Synchronization in the FIR Driver · Summary : Polling vs Interrupts
- Week 106 lecturesDMA vs MMIO: Achieving High-Throughput Data Transfers · DMA Basics and AXI-Stream Fundamentals · Understanding Cache Coherency in DMA Systems · AXI DMA Register Interface Overview · Performance Analysis: DMA vs MMIO · Address Translation, Debugging DMA, and DT Integration
- Week 118 lecturesBoot Sequence - Overview · ROM Code, SPL and Zynq Specific Boot Sequence · U-Boot and FPGA Boot Stream Loading · Kernel Initialization and Init System · MMU, Address Translation and Page Tables · Adress Spaces and Reserved memory Regions · Cache Hierarchy · Build Systems - Cross Compilation and Kernal Config
- Week 127 lecturesExploring Timing Delays in Linux · PREEMPT_RT: Enabling Deterministic Linux Performance · Power Management and Runtime PM in Embedded Systems · Energy-Efficient Hardware Techniques in Embedded Systems · Secure Boot Chain · Linux File Systems, Updates, and Kernel Optimizations · Course Summary