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
- Architectural overview of the Linux kernel
- Distinguishing between user space and kernel space
- Core responsibilities of the kernel
- The standard workflow for kernel development
- Survey of supported embedded platforms
2. Setting Up the Development Environment
- Preparing the host development workstation
- Understanding cross-compilation workflows
- Installing essential development toolchains
- Configuring the BeagleBone Black development board
- Setting up serial console access
- Initiating the boot process on the target device
3. Obtaining and Understanding the Kernel Source
- Navigating the Linux kernel source tree
- Differentiating between stable and long-term support kernels
- Downloading and managing kernel sources
- Analyzing the source code structure
- Accessing official kernel documentation
- Managing kernel version control
4. Configuring, Compiling, and Booting the Kernel
- Customizing the kernel using menuconfig
- Selecting specific kernel features
- Executing cross-compilation for the kernel
- Generating kernel images
- Installing kernel modules
- Overview of the bootloader role
- Booting a customized kernel instance
5. Device Tree Fundamentals
- The role of the Device Tree in hardware description
- Working with Device Tree Source (DTS) files
- Understanding Device Tree Blob (DTB) files
- Core concepts in hardware abstraction
- Modifying Device Tree definitions
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Constructing loadable kernel modules
- Processes for loading and unloading modules
- Configuring module parameters
- Managing module dependencies
- Interacting with active kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Implementing kernel logging via printk()
- Utilizing dmesg for diagnostics
- Applying dynamic debugging methods
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging using GDB
- Essential performance tracing utilities
8. Character Device Drivers
- The Linux device driver framework
- Concepts of character devices
- Procedures for registering drivers
- Implementing file operations
- Handling read and write logic
- Using the IOCTL interface
- Managing memory resources
- Executing driver cleanup routines
9. Driver Integration and Hardware Access
- Working with platform devices and drivers
- Programming General Purpose Input/Output (GPIO) pins
- Managing interrupt handling
- Utilizing timers and deferred work queues
- Direct access to hardware registers
- Implementing memory-mapped I/O
10. Version Control with Git
- Core Git concepts and commands
- Managing kernel source repositories
- Executing branching and merging strategies
- Generating code patches
- Conducting code reviews
- Collaborating on kernel development projects
11. Hands-on Kernel Development Labs
- Configuring a bespoke kernel setup
- Compiling and deploying the kernel
- Building a simple kernel module
- Developing a foundational character device driver
- Editing and testing Device Tree files
- Troubleshooting kernel issues on the BeagleBone Black
12. Best Practices and Summary
- Adhering to kernel coding standards
- Writing maintainable and robust drivers
- Avoiding common development pitfalls
- Key resources for kernel documentation
- The open-source contribution process
- Recap of critical concepts
- Open discussion and Q&A session
- Roadmap for advanced Linux kernel development
Requirements
A fundamental working knowledge of GNU/Linux operating systems 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.