Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Foundations of Embedded Linux
  • Architectural design of the Linux kernel
  • Distinctions between user space and kernel space
  • Core functions and responsibilities of the kernel
  • Standard workflows for kernel development
  • Survey of compatible embedded platforms

2. Establishing the Development Environment

  • Configuring the primary development workstation
  • Principles of cross-compilation
  • Installation of essential development utilities
  • Setup of the BeagleBone Black target board
  • Configuration of the serial console
  • Initiating the boot process on the target device

3. Acquiring and Analyzing Kernel Sources

  • Structure of the Linux kernel source tree
  • Differences between stable and long-term support kernels
  • Methods for obtaining kernel source code
  • Navigating the internal code organization
  • Utilizing official kernel documentation
  • Strategies for managing kernel versions

4. Configuring, Building, and Launching the Kernel

  • Customizing kernel settings via menuconfig
  • Selection of specific kernel features
  • Executing cross-compilation of the kernel
  • Generation of kernel image files
  • Deployment of kernel modules
  • Fundamentals of the bootloader
  • Bootloading a customized kernel

5. Essentials of the Device Tree

  • The role and purpose of the Device Tree
  • Anatomy of Device Tree Source (DTS) files
  • Understanding Device Tree Blobs (DTB)
  • Concepts of hardware description
  • Techniques for modifying Device Tree definitions
  • Compilation and deployment of Device Trees

6. Managing Linux Kernel Modules

  • Architectural design of kernel modules
  • Construction of loadable kernel modules
  • Procedures for loading and unloading modules
  • Definition and use of module parameters
  • Handling module dependencies
  • Interaction with active kernel modules
  • Techniques for debugging module behavior

7. Techniques for Linux Kernel Debugging

  • Implementing kernel logging with printk()
  • Utilizing dmesg for log retrieval
  • Application of dynamic debugging
  • Analysis of kernel panic events
  • Interpretation of Oops messages
  • Interactive debugging using GDB
  • Introduction to basic performance tracing utilities

8. Development of Character Device Drivers

  • Overview of the Linux device driver model
  • Nature and usage of character devices
  • Procedures for registering drivers
  • Implementation of file operations
  • Handling read and write requests
  • Utilizing the IOCTL interface
  • Strategies for memory management
  • Proper driver cleanup procedures

9. Integrating Drivers and Accessing Hardware

  • Understanding platform devices and drivers
  • Programming General Purpose Input/Output (GPIO) pins
  • Managing hardware interrupts
  • Use of timers and deferred work queues
  • Direct access to hardware registers
  • Operations involving memory-mapped I/O

10. Collaborative Version Control with Git

  • Core concepts of Git
  • Version control strategies for kernel code
  • Management of branches and merges
  • Generation of patch files
  • Process for code review
  • Collaborative practices in kernel development

11. Practical Kernel Development Exercises

  • Configuration of a bespoke kernel
  • Construction and deployment of the kernel
  • Creation of a fundamental kernel module
  • Development of a basic character device driver
  • Modification of Device Tree definitions
  • Troubleshooting kernel issues on BeagleBone Black hardware

12. Best Practices and Course Conclusions

  • Adherence to kernel coding standards
  • Principles of writing maintainable drivers
  • Avoidance of common development errors
  • Identification of key kernel documentation resources
  • Workflow for open-source contributions
  • Consolidation of core concepts
  • Opportunity for questions and clarification
  • Guidance on subsequent steps in Linux kernel development

Requirements

Foundational experience in operating a GNU/Linux system

Testimonials (2)

Related Categories