Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • Embedded Linux overview
  • Linux kernel architecture
  • Differences between user space and kernel space
  • Core responsibilities of the kernel
  • Workflow for kernel development
  • Supported embedded platforms overview

2. Establishing the Development Environment

  • Preparation of the development workstation
  • Concepts of cross-compilation
  • Installation of necessary development tools
  • Configuration of the BeagleBone Black development board
  • Serial console setup
  • Boot procedure for the target device

3. Acquiring and Analyzing the Kernel Source

  • Understanding the Linux kernel source tree
  • Comparison of stable versus long-term support kernels
  • Procedure for downloading kernel sources
  • Exploration of the source code structure
  • Accessing kernel documentation
  • Strategies for managing kernel versions

4. Configuring, Compiling, and Booting the Kernel

  • Utilizing menuconfig for kernel configuration
  • Selection of specific kernel features
  • Process of cross-compiling the kernel
  • Construction of kernel images
  • Installation of kernel modules
  • Overview of bootloaders
  • Booting a custom-built kernel

5. Fundamentals of Device Trees

  • The purpose and utility of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB) format
  • Concepts of hardware description
  • Methods for modifying Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Construction of loadable kernel modules
  • Loading and unloading procedures for modules
  • Utilization of module parameters
  • Understanding module dependencies
  • Interaction techniques with kernel modules
  • Techniques for debugging modules

7. Debugging the Linux Kernel

  • Kernel logging using printk()
  • Utilization of dmesg
  • Implementation of dynamic debugging
  • Analysis of kernel panics
  • Understanding Oops messages
  • Debugging procedures with GDB
  • Introduction to basic performance tracing tools

8. Character Device Drivers

  • The Linux device driver model
  • Nature of character devices
  • Process of registering drivers
  • Implementation of file operations
  • Handling read and write operations
  • Utilization of the IOCTL interface
  • Memory management strategies
  • Driver cleanup procedures

9. Driver Integration and Hardware Access

  • Platform devices and drivers
  • GPIO programming techniques
  • Interrupt handling mechanisms
  • Use of timers and deferred work
  • Accessing hardware registers
  • Working with memory-mapped I/O

10. Version Control with Git

  • Fundamentals of Git
  • Management of kernel source code
  • Branching and merging strategies
  • Creation of patches
  • Reviewing code changes
  • Collaboration in kernel development

11. Practical Kernel Development Labs

  • Configuration of a custom kernel
  • Building and deploying the kernel
  • Creation of a simple kernel module
  • Development of a basic character device driver
  • Modification of Device Tree files
  • Debugging kernel issues on BeagleBone Black

12. Best Practices and Summary

  • Adherence to kernel coding style
  • Strategies for writing maintainable drivers
  • Avoidance of common development pitfalls
  • Resources for kernel documentation
  • Workflow for open-source contribution
  • Review of key course concepts
  • Question and answer session
  • Recommended next steps for Linux kernel development

Requirements

Fundamental familiarity with using a GNU/Linux system

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories