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. Foundations of the Linux Kernel
- Introduction to Embedded Linux ecosystems
- Analyzing Linux kernel architectural design
- Distinguishing between User space and Kernel space
- Defining core kernel responsibilities
- The standard kernel development lifecycle
- Survey of common embedded platform support
2. Establishing the Development Workspace
- Optimizing the development workstation setup
- Understanding cross-compilation principles
- Installation and verification of essential development toolchains
- Configuration of the BeagleBone Black target board
- Setting up serial console interfaces
- Procedures for booting the target hardware
3. Navigating the Kernel Source Tree
- Structure of the Linux kernel source code
- Differences between stable and Long-Term Support (LTS) kernels
- Methods for acquiring kernel source packages
- In-depth exploration of the code directory structure
- Utilizing official kernel documentation
- Strategies for managing kernel version control
4. Configuration, Compilation, and Deployment
- Customizing kernel features via menuconfig
- Strategic selection of enabled kernel modules
- Executing cross-compilation builds
- Generating bootable kernel images
- Installation protocols for kernel modules
- Overview of bootloader mechanics
- Launching a customized kernel instance
5. Core Concepts of the Device Tree
- The functional role of the Device Tree
- Working with Device Tree Source (DTS) files
- Understanding the Device Tree Blob (DTB)
- Principles of hardware description mapping
- Techniques for modifying Device Tree configurations
- Processes for building and deploying Device Trees
6. Managing Linux Kernel Modules
- Architectural overview of kernel modules
- Constructing loadable kernel modules
- Processes for loading and unloading modules at runtime
- Defining and utilizing module parameters
- Handling inter-module dependencies
- Methods for interacting with loaded modules
- Effective strategies for module debugging
7. Advanced Kernel Debugging Techniques
- Implementing kernel logging using printk()
- Analyzing system logs via dmesg
- Utilizing dynamic debugging features
- Diagnostics for kernel panic events
- Interpreting Oops error messages
- Debugging kernel code with GDB
- Introduction to performance tracing utilities
8. Developing Character Device Drivers
- The Linux device driver framework
- Understanding character device types
- Procedures for driver registration
- Implementing standard file operations
- Handling read and write system calls
- Utilizing the IOCTL interface
- Managing memory resources within drivers
- Ensuring proper driver cleanup and resource release
9. Driver Integration & Hardware Interaction
- Integration of platform devices and drivers
- Programming GPIO interfaces
- Mechanisms for interrupt handling
- Utilizing timers and deferred work queues
- Direct access to hardware registers
- Implementing memory-mapped I/O operations
10. Source Control Using Git
- Core concepts and commands in Git
- Versioning kernel source code
- Techniques for branching and merging changes
- Generating and formatting patches
- Conducting code reviews
- Best practices for collaborative kernel development
11. Practical Kernel Development Exercises
- Configuration of a bespoke kernel build
- Compilation and deployment to target hardware
- Implementation of a lightweight kernel module
- Development of a functional character device driver
- Practical modification of Device Tree files
- Troubleshooting and debugging on the BeagleBone Black
12. Professional Standards & Conclusion
- Adhering to kernel coding style guidelines
- Principles for writing maintainable driver code
- Identification of common development errors
- Accessing authoritative kernel documentation
- The workflow for open-source contributions
- Comprehensive review of core concepts
- Interactive Q&A session
- Roadmap for continued Linux kernel expertise
Requirements
A fundamental understanding of the operation and usage of a GNU/Linux operating system.
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.