Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Fundamentals of Embedded Linux
  • Architectural components of the Linux kernel
  • Distinguishing between user space and kernel space
  • Core responsibilities of the kernel
  • The standard kernel development lifecycle
  • Overview of compatible embedded platforms

2. Configuring the Development Environment

  • Preparing the host development workstation
  • Concepts of cross-compilation
  • Installation of essential development toolchains
  • Setup of the BeagleBone Black development board
  • Configuration of serial console access
  • Boot procedures for the target device

3. Acquiring and Analyzing Kernel Source

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

4. Configuring, Building, and Booting the Kernel

  • Kernel customization via menuconfig
  • Selection of specific kernel features
  • Executing cross-compilation processes
  • Generation of kernel image files
  • Installation of kernel modules
  • Overview of bootloader mechanics
  • Booting a customized kernel instance

5. Device Tree Fundamentals

  • Role and purpose of the Device Tree
  • Understanding Device Tree Source (DTS) files
  • Compilation to Device Tree Blob (DTB)
  • Concepts in hardware description
  • Editing and modifying Device Tree definitions
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architectural design of kernel modules
  • Building loadable kernel modules
  • Processes for loading and unloading modules
  • Defining and using module parameters
  • Managing module dependencies
  • Interaction mechanisms with kernel modules
  • Techniques for debugging modules

7. Linux Kernel Debugging

  • Logging via printk()
  • Utilizing dmesg for log analysis
  • Implementing dynamic debugging
  • Analyzing kernel panic events
  • Interpreting Oops messages
  • Debugging sessions with GDB
  • Overview of basic performance tracing tools

8. Character Device Drivers

  • Overview of the Linux device driver model
  • Character device characteristics
  • Driver registration procedures
  • Implementing file operations
  • Handling read and write calls
  • Utilizing the IOCTL interface
  • Memory management within drivers
  • Driver cleanup and exit routines

9. Driver Integration & Hardware Access

  • Platform device and driver binding
  • GPIO programming techniques
  • Interrupt handling mechanisms
  • Timers and deferred work queues
  • Direct access to hardware registers
  • Handling memory-mapped I/O

10. Version Control with Git

  • Core Git concepts
  • Managing kernel source repositories
  • Branching and merging strategies
  • Generating patches
  • Code review processes
  • Collaborative kernel development workflows

11. Hands-on Kernel Development Labs

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

12. Best Practices and Summary

  • Adhering to kernel coding styles
  • Writing maintainable driver code
  • Avoiding common development pitfalls
  • Accessing kernel documentation resources
  • Contributing to open-source projects
  • Review of key technical concepts
  • Questions and answers session
  • Recommended next steps for kernel development

Requirements

A foundational understanding of GNU/Linux system administration.

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories