Skip to main content

Section outline

  • Module 5: Developing Embedded Device Drivers (2 hours)

    • Introduction to Linux Device Drivers.
    • Working with hardware registers and memory mapping.
    • Writing and Registering Character Device Drivers.

    Lab: Writing a basic GPIO driver for an embedded board.

    Module 6: Interrupt Handling and Synchronization (2 hours)

    • Interrupt Request (IRQ) handling.
    • Working with Bottom Halves, Tasklets, and Workqueues.
    • Synchronization Primitives: Spinlocks, Semaphores, Mutexes.

    Lab: Implementing interrupt handling for GPIO inputs.

    Module 7: Kernel Debugging and Optimization (2 hours)

    • Debugging Tools: GDB, KGDB, ftrace, perf.
    • Diagnosing Kernel Crashes and Kernel Oops.
    • Performance Profiling using perf.

    Lab: Debugging a kernel crash using ftrace and dmesg.

    Module 8: Integrating Kernel Modules with User Space (1 hour)

    • Exposing Kernel Modules via /proc and /sys.
    • Communicating between Kernel Modules and User Space.
    • Practical Examples: GPIO, I2C, and SPI Devices.

    Lab: Creating a sysfs entry for controlling an LED.