Linux Kernel and Device Drivers

Linux Kernel and Device Drivers Course




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

Embedded Academy Founder and CEO


As a long-time veteran in the technology industry, Benny Cohen combines a deep passion for technology with extensive field experience. With a B.Sc. in Electronics Engineering and an M.Sc. in Communication Engineering, he has spent over 20 years developing software and hardware systems, including the last few years focusing on the cybersecurity industry. In addition to his role as the company founder & CEO, Benny also operates as a hands-on practitioner who specializes in penetration testing and has conducted significant security assessments for leading enterprises and security companies worldwide. His approachable teaching style and real-world expertise make learning both engaging and relevant.

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 Embedded Academy ©