| |
| 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
|
|
|
 |
|
|
|
|
|
|
| |
|
 |
|
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. |
|
|
 |
|
|
|
|
|
|