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.
Duration 14 hours
Course Outline
1. Introduction to the Linux Kernel
- Foundations of Embedded Linux
- Architectural design of the Linux kernel
- Distinguishing between user space and kernel space
- Core responsibilities of the kernel
- Workflows for kernel development
- Survey of supported embedded hardware platforms
2. Setting Up the Development Environment
- Preparing the workstation for development
- Concepts of cross-compilation
- Installation of necessary development tools
- Configuring the BeagleBone Black development board
- Setting up the serial console
- Process of booting the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Methods for downloading kernel sources
- Navigating the source code structure
- Utilizing kernel documentation
- Strategies for managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Using menuconfig for kernel configuration
- Techniques for selecting specific kernel features
- Process of cross-compiling the kernel
- Generating kernel images
- Installing kernel modules
- Overview of the bootloader
- Booting a customized kernel
5. Device Tree Fundamentals
- The role and purpose of the Device Tree
- Working with Device Tree Source (DTS) files
- Understanding Device Tree Blob (DTB)
- Concepts in hardware description
- Modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Developing loadable kernel modules
- Processes for loading and unloading modules
- Configuring module parameters
- Managing module dependencies
- Interacting with loaded kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Implementing kernel logging with printk()
- Utilizing the dmesg command
- Applying dynamic debugging methods
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging with GDB
- Using basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Concepts behind character devices
- Procedures for registering drivers
- Handling file operations
- Implementing read and write operations
- Utilizing the IOCTL interface
- Managing memory within drivers
- Proper driver cleanup procedures
9. Driver Integration and Hardware Access
- Platform devices and corresponding drivers
- Programming GPIOs
- Mechanisms for interrupt handling
- Using timers and deferred work queues
- Techniques for accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source code with Git
- Techniques for branching and merging
- Process for creating patches
- Methods for reviewing changes
- Collaborative practices in kernel development
11. Hands-on Kernel Development Labs
- Practical exercise: Configuring a custom kernel
- Practical exercise: Building and deploying the kernel
- Practical exercise: Creating a simple kernel module
- Practical exercise: Developing a basic character device driver
- Practical exercise: Modifying Device Tree files
- Practical exercise: Debugging kernel issues on BeagleBone Black
12. Best Practices and Summary
- Adhering to kernel coding style guidelines
- Strategies for writing maintainable drivers
- Identifying and avoiding common development pitfalls
- Accessing kernel documentation resources
- Understanding the open-source contribution workflow
- Recap of key concepts
- Session for questions and answers
- Recommendations for next steps in Linux kernel development
Requirements
Participants should possess fundamental knowledge of operating a GNU/Linux system.
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.