Linux Kernel and Device Drivers

Linux Kernel and Device Drivers




What is Linux Kernel? The Linux Kernel is a course in which you learn about the core of the Linux operating system. Its role is to provide all the necessary tools and services to user-space programs so that they can perform their tasks efficiently and quickly.

The Linux Kernel course provides, among other things, a solid approach to "Kernel Blocks" — different parts of the kernel such as File Systems, Networking Stacks, Scheduler, Kernel Device Drivers, Kernel Entities/Objects, achieved through System Calls.

Part of the functionality of the Linux Kernel involves controlling hardware through Kernel Device Drivers. These device drivers must be stable and sometimes even serve as modules for the kernel (Loadable Kernel Modules — LKMs). The development in the Kernel environment is challenging and unique.

During development, a wide range of topics needs to be considered, including Kernel Processes, HW/SW Interrupts, Synchronization, and more.

For comparison with developing programs as processes in the User Space environment: if a program has a bug or an unnoticed issue, only that process is affected. While this is very serious, it's unlikely to cause a system crash, and terminating that process can resolve the issue.

In contrast, a bug in the Kernel will inevitably impact the entire operating system. In the best case scenario, it might crash all processes in the Kernel.

linux kernel studies

Linux Kernel Server Management Course Objectives

The Linux Kernel course focuses on all the topics required for developing modules and device drivers in the environment of Linux Kernel servers. It doesn't require prior knowledge of Kernel development.

The course's objective is to provide engineers in the high-tech industry with theoretical and practical knowledge in the field, including the necessary tools and interfaces, resource management provided by the operating system, utilization of objects and services, usage of debugging tools, resolution of typical issues, Board Support Package (BSP) development, and more.

Upon completion of the course, a section will be dedicated to Linux Kernel & User Space development within the YOCTO environment.

The course focuses on ARM and Intel architectures, using development boards based on Cortex A-8 / i.MX-8. It emphasizes decoding "Kernel Blocks," optimal development of Kernel Device Drivers, and updated utilization of Linux Kernel APIs.

Throughout this course, students will learn:

  • Kernel Development Environment setup
  • Loadable Kernel Module
  • Platform Device Drivers
  • Devices, drivers, and bus matching
  • Device tree mechanism
  • Delay and timer management
  • Kernel locking mechanism

Who is the Linux Kernel course for?

The Linux Kernel course is suitable for:

  • Architects, software engineers, developers, and programmers interested in learning Kernel development along with developing Device Drivers.
  • Embedded Bare-Board engineers who want to learn how to develop Device Drivers under the Linux operating system.
  • Hardware, software, and computer science engineers interested in practical knowledge in the world of Linux Kernel.

Linux Kernel Course Prerequisites:

  • Knowledge and experience in Linux operating systems.
  • Knowledge and experience in programming User Mode Applications in Linux operating systems.
  • Background and/or experience in C/C++ programming (mandatory for professional transition track).

Linux Kernel Course Description

The Linux Kernel course is a practical course that includes lectures and hands-on exercises.

The course duration is approximately 90 academic hours — 60 practical hours + 30 lab exercise hours.

The course includes:

  • Learning Linux with exercises and solutions.
  • Class exercises accompanied by explanations, homework assignments, and solutions on the course website.
  • Course booklet – Learning Linux.
  • Videos and presentations on the course website.
  • Usage of development boards for working with Embedded Systems.

At the end of the Linux Kernel course, each student will complete a practical project that summarizes the acquired knowledge throughout the course.

The lectures take place once a week in the evenings or mornings.

Linux Kernel and Device Drivers Course Content

Linux Kernel overview- Main characteristics
Kernel Basic data structures
Scheduling in Linux
Developing Kernel Modules
Character Device Drivers as LKMs
Pin Control and GPIO Subsystem
Kernel object model
Sysfs Devices/buses/drivers/subsystems
Udev
Memory management
Platform Device Drivers
Linux Device Tree
I/O memory and ports
Wait Queues
Interrupts and Exceptions
Work deferring mechanism
Kernel Synchronization
I2C Client Drivers
SPI Device Drivers
IIC frame work

Talk to an Advisor

Benny Cohen

Real Time Group Founder and CEO


  • M.Sc. in Communication Engineering
  • B.Sc. in Electronics Engineering
  • Lecturer and Head of the Cyber and Information Security Course at RT-Group, with over 20 years of experience in software/hardware system development, including 6 years in the cybersecurity industry.
  • Specializes in penetration testing and provides training both domestically and internationally. Conducts penetration testing (PT) for security companies as well as leading enterprises in the industry.

teacher-image-Benny-Cohen
Department Head
Come Study with Us
  • Experienced expert instructors
  • Practical courses for gaining hands-on experience
  • Practical project of 145 hours in the Development department
  • Build a portfolio for job interviews
  • Recorded lessons for review
  • Assistance in preparing industry-specific resumes
  • Personal assistance of up to 5 hours per month
All rights reserved Real Time Group ©