Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • Introduction to Embedded Linux
  • Architectural overview of the Linux kernel
  • Differences between user space and kernel space
  • Core functions of the kernel
  • Standard kernel development workflows
  • Overview of supported embedded platforms

2. Preparing the Development Environment

  • Configuring the development workstation
  • Understanding cross-compilation principles
  • Installation of essential development tools
  • Setup of the BeagleBone Black development board
  • Configuration of the serial console
  • Initiating the target device

3. Acquiring and Analyzing Kernel Source Code

  • The Linux kernel source directory
  • Distinctions between stable and long-term support kernels
  • Downloading kernel source files
  • Examining the source code layout
  • Navigating kernel documentation
  • Managing kernel version releases

4. Kernel Configuration, Compilation, and Booting

  • Configuring the kernel via menuconfig
  • Choosing specific kernel features
  • Executing cross-compilation
  • Creating kernel images
  • Deploying kernel modules
  • Overview of bootloaders
  • Booting a customized kernel

5. Device Tree Essentials

  • The role of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB) files
  • Concepts in hardware description
  • Editing Device Tree configurations
  • Compiling and deploying Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Compiling loadable kernel modules
  • Processes for loading and unloading modules
  • Defining module parameters
  • Managing module dependencies
  • Interacting with active kernel modules
  • Techniques for module debugging

7. Debugging the Linux Kernel

  • Kernel logging using printk()
  • Utilizing dmesg for logs
  • Implementing dynamic debugging
  • Analyzing kernel panics
  • Interpreting Oops messages
  • Debugging sessions with GDB
  • Basic tools for performance tracing

8. Character Device Drivers

  • The Linux device driver framework
  • Character devices explained
  • Driver registration procedures
  • Handling file operations
  • Implementing read and write methods
  • Using the IOCTL interface
  • Memory management strategies
  • Driver cleanup routines

9. Driver Integration and Hardware Interaction

  • Platform devices and corresponding drivers
  • Programming GPIOs
  • Managing interrupts
  • Utilizing timers and deferred work queues
  • Reading and writing hardware registers
  • Operations with memory-mapped I/O

10. Version Control via Git

  • Fundamentals of Git
  • Managing kernel source code in repositories
  • Techniques for branching and merging
  • Generating patches
  • Conducting code reviews
  • Collaborative workflows for kernel development

11. Practical Kernel Development Exercises

  • Configuring a bespoke kernel
  • Building and deploying the kernel
  • Developing a basic kernel module
  • Creating a fundamental character device driver
  • Modifying Device Tree configurations
  • Diagnosing kernel issues on BeagleBone Black

12. Best Practices and Conclusion

  • Linux kernel coding standards
  • Developing maintainable drivers
  • Avoiding common development errors
  • Key kernel documentation resources
  • Workflows for contributing to open source
  • Summary of core concepts
  • Question and discussion session
  • Future pathways for Linux kernel developers

Requirements

Familiarity with basic GNU/Linux system operations

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories