Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • Introduction to Embedded Linux
  • Structure of the Linux kernel
  • Distinction between User space and kernel space
  • Core functions of the kernel
  • The kernel development lifecycle
  • Survey of supported embedded platforms

2. Setting Up the Development Environment

  • Configuration of the development workstation
  • Principles of cross-compilation
  • Installation of necessary development tools
  • Setup of the BeagleBone Black development board
  • Configuring the serial console
  • Booting the target device

3. Obtaining and Understanding the Kernel Source

  • The Linux kernel source tree
  • Differences between stable and long-term support kernels
  • Downloading kernel sources
  • Navigating the source code structure
  • Kernel documentation resources
  • Managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Kernel configuration via menuconfig
  • Selection of kernel features
  • Cross-compiling the kernel
  • Generating kernel images
  • Installing kernel modules
  • Introduction to bootloaders
  • Booting a customized kernel

5. Device Tree Fundamentals

  • The role of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB)
  • Concepts in hardware description
  • Editing Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Building loadable kernel modules
  • Loading and unloading modules
  • Module parameters
  • Module dependencies
  • Interaction with kernel modules
  • Techniques for module debugging

7. Linux Kernel Debugging

  • Kernel logging using printk()
  • Utilizing dmesg
  • Dynamic debugging methods
  • Analyzing kernel panics
  • Interpreting Oops messages
  • Debugging with GDB
  • Essential performance tracing tools

8. Character Device Drivers

  • The Linux device driver model
  • Character devices
  • Driver registration
  • File operations
  • Read and write processes
  • The IOCTL interface
  • Memory management
  • Driver cleanup procedures

9. Driver Integration and Hardware Access

  • Platform devices and drivers
  • GPIO programming
  • Interrupt handling
  • Timers and deferred work
  • Accessing hardware registers
  • Memory-mapped I/O operations

10. Version Control with Git

  • Basics of Git
  • Managing kernel source code
  • Branching and merging strategies
  • Generating patches
  • Code review processes
  • Collaborative kernel development

11. Hands-on 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 BeagleBone Black

12. Best Practices and Summary

  • Kernel coding standards
  • Developing maintainable drivers
  • Common development challenges
  • Kernel documentation resources
  • Open-source contribution workflow
  • Recap of key concepts
  • Questions and answers
  • Next steps in Linux kernel development

Requirements

Foundational knowledge of operating within a GNU/Linux environment

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories