Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • Overview of Embedded Linux
  • Linux kernel architecture
  • User space vs. kernel space
  • Kernel responsibilities
  • Kernel development workflow
  • Overview of supported embedded platforms

2. Setting Up the Development Environment

  • Preparing the development workstation
  • Cross-compilation concepts
  • Installing required development tools
  • Setting up the BeagleBone Black development board
  • Serial console configuration
  • Booting the target device

3. Obtaining and Understanding the Kernel Source

  • Linux kernel source tree
  • Stable vs. long-term support kernels
  • Downloading kernel sources
  • Exploring the source code structure
  • Kernel documentation
  • Managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Kernel configuration using menuconfig
  • Selecting kernel features
  • Cross-compiling the kernel
  • Building kernel images
  • Installing kernel modules
  • Bootloader overview
  • Booting a custom kernel

5. Device Tree Fundamentals

  • Purpose of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB)
  • Hardware description concepts
  • Modifying Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Kernel module architecture
  • Building loadable kernel modules
  • Loading and unloading modules
  • Module parameters
  • Module dependencies
  • Interacting with kernel modules
  • Module debugging techniques

7. Linux Kernel Debugging

  • Kernel logging with printk()
  • Using dmesg
  • Dynamic debugging
  • Kernel panic analysis
  • Oops messages
  • Debugging with GDB
  • Basic performance tracing tools

8. Character Device Drivers

  • Linux device driver model
  • Character devices
  • Registering drivers
  • File operations
  • Read and write operations
  • IOCTL interface
  • Memory management
  • Driver cleanup

9. Driver Integration and Hardware Access

  • Platform devices and drivers
  • GPIO programming
  • Interrupt handling
  • Timers and deferred work
  • Accessing hardware registers
  • Working with memory-mapped I/O

10. Version Control with Git

  • Git fundamentals
  • Managing kernel source code
  • Branching and merging
  • Creating patches
  • Reviewing changes
  • Collaborating on kernel development

11. Hands-on Kernel Development Labs

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

12. Best Practices and Summary

  • Kernel coding style
  • Writing maintainable drivers
  • Common development pitfalls
  • Kernel documentation resources
  • Open-source contribution workflow
  • Review of key concepts
  • Questions and answers
  • Next steps for Linux kernel development

Requirements

Basic familiarity with using a GNU/Linux system

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories