Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
1. Introduction to the Linux Kernel
- Foundational overview of Embedded Linux
- Architectural components of the Linux kernel
- Distinctions between user space and kernel space
- Core responsibilities of the kernel
- Standard workflows for kernel development
- Survey of supported embedded hardware platforms
2. Setting Up the Development Environment
- Configuring the development workstation
- Principles of cross-compilation
- Installation of essential development toolchains
- Setup procedures for the BeagleBone Black development board
- Configuring serial console connections
- Process for booting the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Differentiating between stable and long-term support (LTS) kernels
- Methods for downloading kernel sources
- Navigating the source code organization
- Accessing official kernel documentation
- Strategies for managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Customizing kernel options via menuconfig
- Selection of specific kernel features
- Executing cross-compilation processes
- Generating kernel image binaries
- Installing necessary kernel modules
- Overview of bootloader mechanisms
- Procedure for booting a custom-built kernel
5. Device Tree Fundamentals
- The role and purpose of the Device Tree
- Understanding Device Tree Source (DTS) files
- Working with Device Tree Blob (DTB) binaries
- Concepts in hardware description via trees
- Techniques for modifying Device Tree definitions
- Compiling and deploying Device Trees
6. Linux Kernel Modules
- Architectural design of kernel modules
- Construction of loadable kernel modules
- Processes for loading and unloading modules
- Managing module parameters
- Handling module dependencies
- Interaction methods with active kernel modules
- Techniques for debugging module behavior
7. Linux Kernel Debugging
- Implementing kernel logging using printk()
- Interpreting output via dmesg
- Utilizing dynamic debugging features
- Analyzing kernel panic events
- Diagnosing Oops messages
- Debugging sessions using GDB
- Introduction to basic performance tracing utilities
8. Character Device Drivers
- The Linux device driver model
- Concepts behind character devices
- Registering drivers with the system
- Defining file operations
- Implementing read and write functions
- Utilizing the IOCTL interface
- Memory management strategies within drivers
- Procedures for driver cleanup and exit
9. Driver Integration and Hardware Access
- Platform device and driver frameworks
- Programmatic access to GPIOs
- Managing interrupt requests
- Handling timers and deferred work queues
- Direct access to hardware registers
- Operations involving memory-mapped I/O
10. Version Control with Git
- Core Git concepts and commands
- Versioning kernel source code
- Managing branches and merge operations
- Generating patch files
- Reviewing code changes effectively
- Collaborative workflows in kernel development
11. Hands-on Kernel Development Labs
- Practical configuration of a custom kernel
- Building and deploying kernel images
- Development of a simple kernel module
- Coding a basic character device driver
- Modifying and applying Device Tree changes
- Troubleshooting kernel issues on BeagleBone Black
12. Best Practices and Summary
- Adhering to kernel coding standards
- Strategies for writing maintainable drivers
- Identifying and avoiding common development errors
- Accessing kernel documentation resources
- Workflows for contributing to open-source projects
- Comprehensive review of core concepts
- Open forum for questions and answers
- Guidance on next steps for Linux kernel advancement
Requirements
Fundamental proficiency in utilizing a GNU/Linux operating system environment.
14 Hours
Testimonials (2)
The knowledge of the trainer. He was able to answer all of my questions, even questions about our platform. He also continued to help until we all understood the material.
James O'Donnell - Tennant Company
Course - Embedded Linux Kernel and Driver Development
I liked the hands-on nature of it.