Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Overview of Embedded Linux
  • Architecture of the Linux kernel
  • Distinction between user space and kernel space
  • Core responsibilities of the kernel
  • The kernel development lifecycle
  • Survey of supported embedded platforms

2. Setting Up the Development Environment

  • Preparation of the development workstation
  • Principles of cross-compilation
  • Installation of essential development tools
  • Configuration of the BeagleBone Black development board
  • Setup of the serial console
  • Process of booting the target device

3. Obtaining and Understanding the Kernel Source

  • Structure of the Linux kernel source tree
  • Comparison of stable and long-term support kernels
  • Methods for downloading kernel sources
  • Navigating the source code organization
  • Reviewing kernel documentation
  • Strategies for managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Kernel configuration via menuconfig
  • Selection of specific kernel features
  • Executing cross-compilation of the kernel
  • Construction of kernel images
  • Installation of kernel modules
  • Introduction to bootloaders
  • Booting a customized kernel

5. Device Tree Fundamentals

  • The role and purpose of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB)
  • Concepts of hardware description
  • Techniques for modifying Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Building loadable kernel modules
  • Procedures for loading and unloading modules
  • Utilization of module parameters
  • Understanding module dependencies
  • Methods for interacting with kernel modules
  • Techniques for module debugging

7. Linux Kernel Debugging

  • Implementing kernel logging with printk()
  • Utilizing dmesg for diagnostics
  • Applying dynamic debugging
  • Analysis of kernel panics
  • Interpreting Oops messages
  • Debugging using GDB
  • Introduction to basic performance tracing tools

8. Character Device Drivers

  • The Linux device driver model
  • Character devices
  • Driver registration processes
  • Implementation of file operations
  • Handling read and write operations
  • The IOCTL interface
  • Memory management strategies
  • Driver cleanup routines

9. Driver Integration and Hardware Access

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

10. Version Control with Git

  • Fundamentals of Git
  • Managing kernel source code repositories
  • Branching and merging workflows
  • Creating and formatting patches
  • Reviewing code changes
  • Collaboration in kernel development

11. Hands-on Kernel Development Labs

  • Configuration of a custom kernel
  • Building and deploying the kernel
  • Creation of a simple kernel module
  • Development of a basic character device driver
  • Modification of Device Tree files
  • Debugging kernel issues on the BeagleBone Black

12. Best Practices and Summary

  • Adherence to kernel coding style
  • Writing maintainable drivers
  • Identifying common development pitfalls
  • Accessing kernel documentation resources
  • The open-source contribution workflow
  • Review of key concepts
  • Questions and answers
  • Recommended next steps for Linux kernel development

Requirements

Fundamental knowledge of navigating and utilizing a GNU/Linux environment

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories