Training - LINUX : Kernel programming - Device Drivers - BSP (PowerPC/ARM) (reference 003154A)
 
    Related Trainings
   
           
    Prerequisites
  • C programming experience
  • Basic understanding of operating systems and debugging techniques
  • Experience of Processors or Micro Controllers mechanisms
   
             
  Course Objectives
  • Understand the mechanisms used in the Linux kernel; Understand how these mechanisms are implemented on PowerPCs platforms; Understand the boot sequence of Linux and its implementation on PowerPCs; Program device drivers and integrate these device drivers in the Linux Kernel.
  • The course is divided into lectures and labs. The labs allow to practice and better understand the content of the lectures.
  • Configure and build Linux kernel image
  • Understand the different types of kernel images and root filesystems
  • Understand the Linux kernel boot sequence and bootstrap code
  • Start an application after kernel boot
  • Understand Linux implementation and initialization on PowerPC processors
  • Create and load modules in the kernel
  • Use debugging tools to debug the kernel
  • Understand the different mechanisms of synchronization and mutual exclusion of the kernel and their implementation on PowerPCs
  • Understand exception and interrupts and their implementation on PowerPCs
  • Connect interrupt and exception handlers and use the bottom half mechanisms to schedule functions
  • Use the timer mechanisms to wait for a delay, schedule periodic functions, timestamp events
  • Understand Linux memory management
  • Understand how the device drivers are connected to the Linux kernel and program device drivers using the mechanisms seen previously
   
           
    Duration
  • 4-day course
   
           
    Topics

(The full description of this course can be provided on request)

[Day one]

Introduction

  • User Space, Kernel Space
  • BSP and Device Drivers
  • Licenses
  • Kernel Sources

Installing, Compiling and Booting the Linux kernel

  • Kernel Configuration
  • Kernel Build
  • Kernel Images
  • The Bootline
  • The Root Filesystem
  • Starting an Application after the Kernel Boot

Labs

  • Configuring and compiling the kernel
  • Booting the kernel on the target platform
  • Launching an application at boot
  • Using a root filesystem in RAM and a NFS mounted root filesystem

[Day two]

Modules Management

  • Introduction
  • Writing Modules
  • Building the Modules
  • Loading and Unloading the Modules

Debugging

  • printk
  • /proc
  • gdb, remote gdb, kgdb
  • Tracing Tools

Programming in the Kernel Space

  • Generalities
  • Scheduling
  • Waitqueues
  • Atomic Operations in C
  • Spinlocks
  • Semaphores

Labs

  • Writing a kernel module
  • Manual load and automatic load of a module
  • Writing a reentrant kernel procedure
  • Debugging kernel code

[Day three]

Interrupts and Exceptions Management

  • Processor Management of Interrupts and Exceptions
  • Interrupt Management
  • Bottom-Half Mechanism: BH and Tasklet
  • Exception Management

Timing Management

  • Linux Timers
  • Waiting for a Delay
  • Timestamping

Labs

  • Writing an interrupt handler, connecting and activating the handler
  • Writing a BH and activating it from an interrupt handler
  • Waiting for a short delay and a long delay
  • Periodic code execution
  • High resolution timestamping for performance measurements

[Day four]

Memory Management

  • Generalities
  • Kernel Space Memory Allocation
  • IO Management
  • Cache Management
  • DMA Management
  • Miscellaneous Topics

Writing Device Drivers

  • Generalities
  • Registering a driver
  • Device nodes management
  • Character Drivers
  • Data structures and overall architecture
  • Driver Methods implementation
  • Block Drivers
  • Data structures and overall architecture
  • Request queue management
  • Buffer cache management

Labs

  • Accessing user space from a kernel call
  • Reclaiming memory from initialization code
  • Writing a character driver
  • Writing a ramdisk block driver and installing a file system on it
   
           
    Documentation

Training manuals will be given to participants during training. Precise and easy of use, those notes can be used as a reference afterwards.
   
           
    Other trainings :

If you want to know our other training courses and their contents, you can consult or download our complete training courses list on this page : Training courses - General presentation