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. Fundamentals of the Linux Kernel
- Introduction to Embedded Linux
- Structural overview of the Linux kernel
- Differences between User space and kernel space
- Core responsibilities of the kernel
- The standard workflow for kernel development
- Survey of supported embedded hardware platforms
2. Preparing the Development Workspace
- Configuring the development workstation
- Understanding cross-compilation methods
- Installing necessary development utilities
- Setup of the BeagleBone Black development board
- Configuring the serial console
- Initiating the boot process on the target device
3. Acquiring and Interpreting Kernel Source Code
- Structure of the Linux kernel source tree
- Distinguishing between Stable and Long-Term Support (LTS) kernels
- Methods for downloading kernel sources
- Navigating the source code hierarchy
- Accessing kernel documentation
- Strategies for managing kernel versions
4. Configuration, Compilation, and Booting the Kernel
- Performing kernel configuration via menuconfig
- Choosing specific kernel features
- Executing cross-compilation of the kernel
- Generating kernel images
- Deploying kernel modules
- Overview of Bootloader mechanisms
- Launching a customized kernel
5. Core Concepts of Device Trees
- The role and utility of the Device Tree
- Working with Device Tree Source (DTS) files
- Understanding Device Tree Blob (DTB) files
- Principles of hardware description
- Techniques for modifying Device Tree files
- Building and deploying Device Tree configurations
6. Managing Linux Kernel Modules
- Architectural design of kernel modules
- Compilation of loadable kernel modules
- Procedures for loading and unloading modules
- Utilization of module parameters
- Handling module dependencies
- Interaction protocols with kernel modules
- Advanced techniques for module debugging
7. Debugging the Linux Kernel
- Implementing kernel logs using printk()
- Utilizing the dmesg utility
- Applying dynamic debugging strategies
- Analyzing kernel panic events
- Interpreting Oops messages
- Debugging processes with GDB
- Overview of basic performance tracing utilities
8. Development of Character Device Drivers
- The Linux device driver framework
- Character device definitions
- Processes for registering drivers
- Handling file operations
- Implementing read and write functions
- Using the IOCTL interface
- Memory management within drivers
- Cleanup procedures for drivers
9. Integrating Drivers and Accessing Hardware
- Architecture of platform devices and drivers
- Programming General Purpose Input/Output (GPIO)
- Mechanisms for interrupt handling
- Managing timers and deferred work
- Direct access to hardware registers
- Operations with memory-mapped I/O
10. Version Control Utilizing Git
- Core principles of Git
- Managing kernel source code repositories
- Techniques for branching and merging
- Creation of patches
- Procedures for reviewing code changes
- Facilitating collaboration in kernel development
11. Practical Kernel Development Labs
- Configuring a bespoke kernel
- Constructing and deploying the kernel
- Developing a basic kernel module
- Building a fundamental character device driver
- Alterations to Device Tree files
- Troubleshooting kernel issues on the BeagleBone Black
12. Industry Best Practices and Conclusion
- Adherence to kernel coding standards
- Strategies for writing sustainable drivers
- Identification of common development errors
- Resources for kernel documentation
- Workflow for contributing to open-source projects
- Recap of essential concepts
- Session for questions and answers
- Recommended subsequent steps for Linux kernel development
Requirements
Fundamental experience in operating a GNU/Linux 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.