Linux Kernel and Driver Development with Yocto Linux

The training presents the essential theoretical and practical elements required in order to be proficient in a Linux kernel development environment. After the training, the student should be understand, implement and perform Linux kernel related development and debug assignments. ID: ELKD1 [1 day] ELKD2 [2 days]

Course description

This module is a part of Eneas customer -configurable embedded Linux training offering available in:

  • 1-day basic version providing a theoretical understanding of the topics covered demonstrated using hands-on exercises
  • 2-day alternative aiming to give a deeper understanding of the technology covered, with some added content but more importantly with a high focus on modifications, optimization and debugging techniques


Both versions of the module can also be delivered as a stand-alone training

This module provides a medium/advanced hands-on experience towards learning the embedded Linux kernel development and device drivers programming. The training uses the last stable Linux for a multi-core ARM platform and includes system bring up, bootloader software, kernel programming models, basic kernel modules, basic device drivers, kernel synchronization mechanisms, interrupts and interrupt handling, memory allocation, the virtual file-system interface and kernel/user-space interfacing. This training also contains a basic range of exercises that provides a better understanding of the course material.

The extended version of the module digs deeper in kernel module development and debugging techniques as well as new topics such as in-depth device drivers (I2C and SPI devices) and exercises providing more training on modifications and optimizations.

Course details

Objectives

The training presents the essential theoretical and practical elements required in order to be proficient in a Linux kernel development environment. After the training, the student should be understand, implement and perform Linux kernel related development and debug assignments.

Who should attend?

C programmers with working knowledge of the embedded systems and embedded software development, experience with Linux as a development platform.


Previous knowledge

C programming skills, working knowledge of the embedded systems and embedded software development, experience with Linux as a development platform.

Course Materials

The course documentation is written in-house in English. The course is normally given in English.

Price for first day
SEK 9500 / USD 1100 / EUR 950
Price for additional days
SEK 5500 / USD 650 / EUR 550
(also when combining modules)

Number of days
1 or 2

Details
Where
Stockholm, Bucharest or on-site 1-day
When
On request
Number of days
1
Price
SEK 9500 / USD 1100 / EUR 950
Where
Stockholm, Bucharest or on-site 2-days
When
On request
Number of days
2
Price
SEK 15000 / USD 1750 / EUR 1500

Course outline

Theoretical discussion on the Linux Kernel and hands-on exercises

Topics covered:

  • Kernel introduction
  • Platform architectures
  • Boot loader interface
  • Device trees
  • Configure the kernel
  • Kernel modules basics
  • Device files
  • Communicating with devices
  • System calls
  • Memory allocation
  • User-space interaction
  • Interrupt handling
  • Softirqs
  • Tasklets
  • Work queues
  • Kernel threads
  •  Timing and syncronization
  • Virtual memory
  • The virtual file system
  • Kernel preemption
  • Kernel data integrity
  • Devices as files


Additions in 2-day module:

  • The kernel debugger
  • The GNU Standard C Library
  • kobjects, ktypes and ksets
  • Embedded sensors
  • Temperature and pressure sensors
  • SPI device drivers
  • I2C device drivers
  • Extended time for exercises
  • Tips and hands-on help on debugging tools and techniques