Linux Kernel and Drivers Development

Linux Kernel and Drivers Development

This intensive course introduces you to kernel programming techniques and framework. An ARM machine is used as a hardware platform, on which variety of kernel interfaces, frameworks, and device drivers are explored and developed. The course is intended for engineers who often need to modify, create, or just test the Linux kernel code in their everyday work.

Course outline

During the practical exercises, the participants will develop test and debug a device driver for a real hardware connected to I2C and GPIO lines.

Detailed agenda

Day 1

During the 'Day 1' participants gain the broad knowledge about operations of Linux kernel and its internals. They will get familiar with kernel programming and configurations. They run and test on their own variety of drivers in an emulated embedded environment. Exercises will cover most of kernel -- userspace communication and basic in-kernel programming frameworks, creating base for next work.

Day 2

After 'Day 2', participants will be familiar with (most important in day-to-day work) Linux unified device model framework and interrupt controlled input-output devices. This will give them knowledge about operations of most important kernel subsystems. Real code examples will be generated and tested, various device drivers will be examined.

Day 3

Most important part of the 'Day 3' is kernel debugging hands-on exercise. Participants will not only know how the kernel works, but also will learn to cope with problems and bugs in own and external code. Some aspects of real-time operations, kernel optimizations, and profiling will be also mentioned and practiced.