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
- Foundations of Embedded Linux
- Structure of the Linux kernel architecture
- Distinguishing between user space and kernel space
- Core responsibilities of the kernel
- The workflow for kernel development
- Survey of supported embedded platforms
2. Establishing the Development Environment
- Preparing the development workstation
- Understanding cross-compilation principles
- Installing essential development tools
- Setting up the BeagleBone Black development board
- Configuring the serial console
- Initiating the boot process on the target device
3. Acquiring and Analyzing Kernel Source Code
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Procedures for downloading kernel sources
- Navigating the source code organization
- Utilizing kernel documentation
- Version control for the kernel
4. Configuring, Building, and Booting the Kernel
- Configuring the kernel via menuconfig
- Enabling specific kernel features
- Cross-compiling the kernel image
- Generating kernel images
- Installing kernel modules
- Overview of bootloader mechanics
- Booting a custom-compiled kernel
5. Fundamentals of Device Trees
- The role and purpose of the Device Tree
- Anatomy of Device Tree Source (DTS) files
- Understanding Device Tree Blobs (DTB)
- Concepts in hardware description
- Techniques for modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Constructing loadable kernel modules
- Processes for loading and unloading modules
- Utilizing module parameters
- Managing module dependencies
- Methods for interacting with kernel modules
- Strategies for module debugging
7. Debugging the Linux Kernel
- Implementing kernel logging with printk()
- Utilizing the dmesg utility
- Enabling dynamic debugging
- Analyzing kernel panics
- Interpreting oops messages
- Debugging sessions with GDB
- Essential performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Procedures for registering drivers
- Implementing file operations
- Handling read and write operations
- Using the IOCTL interface
- Memory management in drivers
- Driver cleanup procedures
9. Integrating Drivers and Accessing Hardware
- Platform devices and their drivers
- GPIO programming techniques
- Handling interrupts
- Using timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source code versions
- Techniques for branching and merging
- Generating patches
- Reviewing code changes
- Collaborative workflows in kernel development
11. Practical Kernel Development Labs
- Configuring a bespoke kernel
- Building and deploying the kernel image
- Developing a simple kernel module
- Implementing a basic character device driver
- Adjusting Device Tree files
- Troubleshooting kernel issues on BeagleBone Black
12. Best Practices and Course Summary
- Standards for kernel coding style
- Strategies for writing maintainable drivers
- Avoiding common development pitfalls
- Accessing kernel documentation resources
- Workflow for contributing to open source
- Recap of essential concepts
- Opportunity for questions and answers
- Recommended next steps for Linux kernel development
Requirements
A foundational understanding of using GNU/Linux operating systems.
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.