Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Fundamentals of Embedded Linux
  • Linux kernel structural design
  • Distinguishing user space from kernel space
  • Core operational responsibilities of the kernel
  • Procedures for kernel development
  • Summary of compatible embedded architectures

2. Establishing the Development Environment

  • Configuring the development workstation
  • Principles of cross-compilation
  • Deployment of necessary development utilities
  • Initialization of the BeagleBone Black target hardware
  • Configuration of serial console interfaces
  • Initiating boot sequences on the target device

3. Acquisition and Analysis of Kernel Source Code

  • Structure of the Linux kernel source repository
  • Differentiation between stable and long-term support releases
  • Retrieval of kernel source files
  • Navigation of the source code hierarchy
  • Consultation of official kernel documentation
  • Management of kernel version control

4. Configuration, Compilation, and Deployment

  • Kernel parameter customization via menuconfig
  • Selection of functional kernel components
  • Execution of cross-compilation processes
  • Generation of kernel image files
  • Installation of kernel modules
  • Overview of bootloader mechanisms
  • Loading a customized kernel instance

5. Device Tree Concepts

  • Functionality and intent of the Device Tree
  • Format and usage of Device Tree Source files
  • Device Tree Blob specifications
  • Methodologies for describing hardware configurations
  • Modification of Device Tree definitions
  • Compilation and deployment of Device Tree data

6. Linux Kernel Modules

  • Architectural design of kernel modules
  • Construction of loadable kernel modules
  • Processes for module loading and removal
  • Configuration of module parameters
  • Management of module dependencies
  • Interaction protocols with kernel modules
  • Techniques for module debugging

7. Linux Kernel Debugging Procedures

  • Logging mechanisms using printk()
  • Utilization of dmesg utilities
  • Implementation of dynamic debugging features
  • Analysis of kernel panic events
  • Interpretation of Oops error messages
  • Debugging processes with GDB
  • Application of foundational performance tracing tools

8. Character Device Drivers

  • Linux device driver framework
  • Definition and use of character devices
  • Driver registration protocols
  • Implementation of file operation interfaces
  • Handling read and write operations
  • IOCTL interface management
  • Memory management strategies
  • Driver cleanup procedures

9. Driver Integration and Hardware Interaction

  • Management of platform devices and drivers
  • General Purpose Input/Output (GPIO) control
  • Interrupt signal processing
  • Utilization of timers and deferred work queues
  • Accessing hardware register data
  • Handling memory-mapped I/O operations

10. Source Code Management with Git

  • Essential Git operations
  • Administration of kernel source code repositories
  • Branching and merging strategies
  • Generation of patches
  • Procedures for code review
  • Collaborative workflows in kernel development

11. Practical Kernel Development Exercises

  • Customization of kernel configurations
  • Compilation and deployment of the kernel
  • Development of a simple kernel module
  • Construction of a basic character device driver
  • Adjustment of Device Tree definitions
  • Troubleshooting kernel issues on BeagleBone Black hardware

12. Best Practices and Course Summary

  • Adherence to kernel coding standards
  • Development of maintainable drivers
  • Identification of common development errors
  • Access to kernel documentation resources
  • Workflows for open-source contribution
  • Review of principal concepts
  • Inquiry and response session
  • Pathways for advanced Linux kernel development

Requirements

Familiarity with operating a GNU/Linux system.

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories