Get in Touch

Course Outline

1. Fundamentals of the Linux Kernel

  • Introduction to Embedded Linux
  • Structural overview of the Linux kernel
  • Differences between User space and kernel space
  • Core responsibilities of the kernel
  • The standard workflow for kernel development
  • Survey of supported embedded hardware platforms

2. Preparing the Development Workspace

  • Configuring the development workstation
  • Understanding cross-compilation methods
  • Installing necessary development utilities
  • Setup of the BeagleBone Black development board
  • Configuring the serial console
  • Initiating the boot process on the target device

3. Acquiring and Interpreting Kernel Source Code

  • Structure of the Linux kernel source tree
  • Distinguishing between Stable and Long-Term Support (LTS) kernels
  • Methods for downloading kernel sources
  • Navigating the source code hierarchy
  • Accessing kernel documentation
  • Strategies for managing kernel versions

4. Configuration, Compilation, and Booting the Kernel

  • Performing kernel configuration via menuconfig
  • Choosing specific kernel features
  • Executing cross-compilation of the kernel
  • Generating kernel images
  • Deploying kernel modules
  • Overview of Bootloader mechanisms
  • Launching a customized kernel

5. Core Concepts of Device Trees

  • The role and utility of the Device Tree
  • Working with Device Tree Source (DTS) files
  • Understanding Device Tree Blob (DTB) files
  • Principles of hardware description
  • Techniques for modifying Device Tree files
  • Building and deploying Device Tree configurations

6. Managing Linux Kernel Modules

  • Architectural design of kernel modules
  • Compilation of loadable kernel modules
  • Procedures for loading and unloading modules
  • Utilization of module parameters
  • Handling module dependencies
  • Interaction protocols with kernel modules
  • Advanced techniques for module debugging

7. Debugging the Linux Kernel

  • Implementing kernel logs using printk()
  • Utilizing the dmesg utility
  • Applying dynamic debugging strategies
  • Analyzing kernel panic events
  • Interpreting Oops messages
  • Debugging processes with GDB
  • Overview of basic performance tracing utilities

8. Development of Character Device Drivers

  • The Linux device driver framework
  • Character device definitions
  • Processes for registering drivers
  • Handling file operations
  • Implementing read and write functions
  • Using the IOCTL interface
  • Memory management within drivers
  • Cleanup procedures for drivers

9. Integrating Drivers and Accessing Hardware

  • Architecture of platform devices and drivers
  • Programming General Purpose Input/Output (GPIO)
  • Mechanisms for interrupt handling
  • Managing timers and deferred work
  • Direct access to hardware registers
  • Operations with memory-mapped I/O

10. Version Control Utilizing Git

  • Core principles of Git
  • Managing kernel source code repositories
  • Techniques for branching and merging
  • Creation of patches
  • Procedures for reviewing code changes
  • Facilitating collaboration in kernel development

11. Practical Kernel Development Labs

  • Configuring a bespoke kernel
  • Constructing and deploying the kernel
  • Developing a basic kernel module
  • Building a fundamental character device driver
  • Alterations to Device Tree files
  • Troubleshooting kernel issues on the BeagleBone Black

12. Industry Best Practices and Conclusion

  • Adherence to kernel coding standards
  • Strategies for writing sustainable drivers
  • Identification of common development errors
  • Resources for kernel documentation
  • Workflow for contributing to open-source projects
  • Recap of essential concepts
  • Session for questions and answers
  • Recommended subsequent steps for Linux kernel development

Requirements

Fundamental experience in operating a GNU/Linux environment

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories