Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Overview of Embedded Linux
  • Linux kernel architecture
  • Differences between user space and kernel space
  • Core kernel responsibilities
  • The kernel development lifecycle
  • Overview of supported embedded platforms

2. Setting Up the Development Environment

  • Preparing the development workstation
  • Concepts of cross-compilation
  • Installing 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
  • Comparison of stable and long-term support kernels
  • Downloading kernel sources
  • Navigating the source code structure
  • Reviewing kernel documentation
  • Managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Configuring the kernel using menuconfig
  • Selecting specific kernel features
  • Cross-compiling the kernel
  • Creating kernel images
  • Installing kernel modules
  • Overview of the bootloader
  • Booting a custom kernel

5. Device Tree Fundamentals

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

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Constructing loadable kernel modules
  • Processes for loading and unloading modules
  • Configuring module parameters
  • Handling module dependencies
  • Interacting with kernel modules
  • Techniques for module debugging

7. Linux Kernel Debugging

  • Kernel logging via printk()
  • Utilizing dmesg
  • Dynamic debugging
  • 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 processes
  • Defining file operations
  • Implementing read and write operations
  • The IOCTL interface
  • Memory management strategies
  • Driver cleanup routines

9. Driver Integration and Hardware Access

  • Platform devices and their drivers
  • GPIO programming
  • Managing interrupt handling
  • Utilizing timers and deferred work
  • Accessing hardware registers
  • Working with memory-mapped I/O

10. Version Control with Git

  • Core Git concepts
  • Managing kernel source code
  • Branching and merging strategies
  • Generating patches
  • Reviewing code changes
  • Collaborative kernel development workflows

11. Hands-on Kernel Development Labs

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

12. Best Practices and Summary

  • Kernel coding style standards
  • Writing maintainable drivers
  • Identifying common development pitfalls
  • Accessing kernel documentation resources
  • The open-source contribution process
  • Recap of key concepts
  • Q&A session
  • Pathways for further Linux kernel development

Requirements

A foundational understanding of GNU/Linux system operations.

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories