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
- Comprehensive overview of Embedded Linux
- Understanding 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. Preparing the Development Environment
- Configuring the development workstation
- Concepts of cross-compilation
- Installation of essential development tools
- Setup of the BeagleBone Black development board
- Configuring the serial console
- Process of booting the target device
3. Accessing and Interpreting Kernel Source Code
- Navigating the Linux kernel source tree
- Differences between stable and long-term support (LTS) kernels
- Downloading kernel source files
- Exploring the organization of source code
- Accessing kernel documentation
- Strategies for managing kernel versions
4. Configuring, Building, and Booting the Kernel
- Utilizing menuconfig for kernel configuration
- Selecting specific kernel features
- Executing cross-compilation of the kernel
- Generating kernel images
- Installing kernel modules
- Overview of the bootloader
- Boot process for a custom kernel
5. Fundamentals of the Device Tree
- The role and purpose of the Device Tree
- Device Tree Source (DTS) file structure
- Device Tree Blob (DTB) specifics
- Concepts in hardware description
- Methods 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
- Defining module parameters
- Managing module dependencies
- Interactions with kernel modules
- Techniques for module debugging
7. Debugging the Linux Kernel
- Implementing kernel logging via printk()
- Utilizing the dmesg command
- Applying dynamic debugging techniques
- Analyzing kernel panics
- Interpreting oops messages
- Debugging processes using GDB
- Introductory performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Procedures for registering drivers
- Defining file operations
- Managing read and write operations
- Utilizing the IOCTL interface
- Memory management considerations
- Driver cleanup routines
9. Driver Integration and Hardware Interaction
- Platform devices and their drivers
- Programming General Purpose Input/Output (GPIO)
- Handling hardware interrupts
- Managing timers and deferred work
- Direct access to hardware registers
- Working with memory-mapped I/O
10. Version Control using Git
- Essential Git concepts
- Managing kernel source code repositories
- Techniques for branching and merging
- Generating patches
- Code review processes
- Collaborative approaches to kernel development
11. Practical Kernel Development Labs
- Configuration of a custom kernel
- Building and deploying the kernel image
- Creation of a simple kernel module
- Development of a basic character device driver
- Modification of Device Tree files
- Troubleshooting kernel issues on the BeagleBone Black
12. Best Practices and Conclusion
- Adhering to kernel coding standards
- Writing drivers that are maintainable
- Identifying common development pitfalls
- Key resources for kernel documentation
- Workflow for contributing to open-source projects
- Recap of core concepts
- Q&A session
- Pathways for further Linux kernel development
Requirements
Fundamental knowledge of navigating and utilizing a GNU/Linux operating system is required.
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.