Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • An overview of Embedded Linux
  • Architecture of the Linux kernel
  • Differences between user space and kernel space
  • Core responsibilities of the kernel
  • The workflow for kernel development
  • A survey of supported embedded platforms

2. Establishing the Development Environment

  • Preparing the development workstation
  • Understanding cross-compilation concepts
  • Installation of essential development tools
  • Configuration of the BeagleBone Black development board
  • Setup for serial console access
  • Procedures for booting the target device

3. Acquiring and Comprehending Kernel Sources

  • Structure of the Linux kernel source tree
  • Distinctions between stable and long-term support kernels
  • Methods for downloading kernel sources
  • Navigating the source code structure
  • Utilizing kernel documentation
  • Strategies for managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Kernel configuration via menuconfig
  • Selecting specific kernel features
  • Cross-compilation of the kernel
  • Construction of kernel images
  • Installation of kernel modules
  • Overview of bootloader functionality
  • Booting a customized kernel

5. Fundamentals of Device Trees

  • The role and purpose of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB) format
  • Concepts of hardware description
  • Modifying existing Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Process of building loadable kernel modules
  • Loading and unloading procedures
  • Utilization of module parameters
  • Handling module dependencies
  • Interaction methods with kernel modules
  • Techniques for debugging modules

7. Debugging the Linux Kernel

  • Logging mechanisms using printk()
  • Effective use of dmesg
  • Implementation of dynamic debugging
  • Analyzing kernel panics
  • Interpreting Oops messages
  • Debugging workflows with GDB
  • Introduction to basic performance tracing tools

8. Character Device Drivers

  • The Linux device driver model
  • Characteristics of character devices
  • Driver registration processes
  • File operation structures
  • Implementing read and write operations
  • The IOCTL interface
  • Memory management strategies
  • Procedures for driver cleanup

9. Driver Integration and Hardware Access

  • Platform devices and associated drivers
  • Programming GPIOs
  • Handling interrupts
  • Managing timers and deferred work
  • Accessing hardware registers
  • Working with memory-mapped I/O

10. Version Control Using Git

  • Fundamental Git concepts
  • Management of kernel source code
  • Branching and merging techniques
  • Creating patches
  • Reviewing code changes
  • Collaboration strategies in kernel development

11. Practical Kernel Development Labs

  • Configuring a custom kernel
  • Building and deploying the kernel
  • Creating a simple kernel module
  • Developing a basic character device driver
  • Modifying Device Tree files
  • Debugging kernel issues on the BeagleBone Black

12. Best Practices and Summary

  • Adhering to kernel coding style standards
  • Writing maintainable drivers
  • Avoiding common development pitfalls
  • Leveraging kernel documentation resources
  • Navigating the open-source contribution workflow
  • Review of key concepts
  • Questions and answers session
  • Determining next steps for Linux kernel development

Requirements

A foundational understanding of using a GNU/Linux system is required.

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories