Get in Touch
 Duration 14 hours

Course Outline

1. Fundamentals of the Linux Kernel

  • Introduction to the Embedded Linux ecosystem
  • Core architecture of the Linux kernel
  • Distinction between user space and kernel space
  • Core responsibilities of the kernel
  • Standard workflows for kernel development
  • Survey of supported embedded hardware platforms

2. Preparing the Development Environment

  • Configuration of the host development workstation
  • Concepts and principles of cross-compilation
  • Installation and setup of essential development toolchains
  • Setting up the BeagleBone Black target board
  • Configuring the serial console for communication
  • Initial boot processes for target devices

3. Accessing and Analyzing Kernel Source Code

  • Navigating the Linux kernel source directory
  • Differences between stable and long-term support kernel releases
  • Procedures for retrieving kernel source code
  • Understanding the organization of source code modules
  • Utilizing official kernel documentation
  • Strategies for managing kernel version control

4. Kernel Configuration, Compilation, and Booting

  • Customizing kernel features using the menuconfig interface
  • Methodologies for selecting appropriate kernel capabilities
  • Executing cross-compilation for the kernel
  • Generating bootable kernel images
  • Installing and managing kernel modules
  • Overview of bootloader functions
  • Process for booting a customized kernel

5. Essentials of the Device Tree

  • Role and purpose of the Device Tree mechanism
  • Structure of Device Tree Source (DTS) files
  • Understanding the Device Tree Blob (DTB) format
  • Principles of hardware description via device trees
  • Techniques for modifying Device Tree definitions
  • Compiling and deploying Device Tree structures

6. Working with Linux Kernel Modules

  • Architectural design of kernel modules
  • Compilation and creation of loadable kernel modules
  • Processes for loading and unloading modules at runtime
  • Defining and using module parameters
  • Managing dependencies between modules
  • Techniques for interacting with loaded modules
  • Approaches to debugging module code

7. Debugging the Linux Kernel

  • Implementing kernel logging via printk()
  • Interpreting dmesg output
  • Utilizing dynamic debugging features
  • Analyzing kernel panic events
  • Interpreting Oops error messages
  • Debugging kernel code using GDB
  • Overview of basic performance tracing utilities

8. Developing Character Device Drivers

  • The Linux device driver model overview
  • Characteristics of character devices
  • Procedures for registering device drivers
  • Implementing file operation interfaces
  • Handling read and write operations
  • Implementing the IOCTL control interface
  • Memory management strategies in drivers
  • Proper driver cleanup and resource release

9. Integrating Drivers and Accessing Hardware

  • Working with platform devices and their drivers
  • Programming General Purpose Input/Output (GPIO) pins
  • Implementing interrupt handling routines
  • Managing timers and deferred work queues
  • Direct access to hardware registers
  • Techniques for memory-mapped I/O operations

10. Version Control Using Git

  • Core concepts and commands in Git
  • Best practices for managing kernel source repositories
  • Managing branches and merging code changes
  • Generating patch files for review
  • Conducting code reviews effectively
  • Workflows for collaborative kernel development

11. Practical Kernel Development Exercises

  • Hands-on configuration of a custom kernel build
  • Compiling and deploying the custom kernel to target hardware
  • Development of a simple loadable kernel module
  • Construction of a basic character device driver
  • Practical modifications to Device Tree files
  • Debugging specific kernel issues on the BeagleBone Black platform

12. Best Practices and Course Conclusion

  • Adhering to standard kernel coding styles
  • Strategies for writing sustainable and maintainable drivers
  • Avoiding common development errors and pitfalls
  • Key resources for kernel documentation
  • Workflow for contributing to open-source projects
  • Summary and review of critical concepts
  • Open forum for questions and answers
  • Recommended pathways for advanced Linux kernel development

Requirements

A foundational understanding of standard GNU/Linux system administration and usage is required.

Number of participants


Price per participant (excl. VAT)

Testimonials (2)

Upcoming Courses

Related Categories