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 overview of the Linux kernel
- Distinguishing user space from kernel space
- Core responsibilities of the kernel
- The workflow for kernel development
- Survey of supported embedded platforms
2. Establishing the Development Environment
- Preparing the workstation for development tasks
- Understanding cross-compilation principles
- Installing essential development toolsets
- Configuring the BeagleBone Black development board
- Setting up the serial console
- Initiating the boot process on the target device
3. Acquiring and Analyzing Kernel Source
- Navigating the Linux kernel source tree
- Comparing stable releases with long-term support kernels
- Retrieving kernel source code
- Examining the organization of source code
- Utilizing official kernel documentation
- Strategies for managing kernel versions
4. Configuring, Building, and Booting the Kernel
- Customizing kernel features via menuconfig
- Selecting specific functional modules
- Executing cross-compilation for the kernel
- Generating kernel images
- Installing kernel modules
- Overview of bootloader mechanics
- Booting a customized kernel instance
5. Fundamentals of the Device Tree
- The role and purpose of the Device Tree
- Working with Device Tree Source (DTS) files
- Understanding Device Tree Blob (DTB) formats
- Concepts of hardware description via trees
- Modifying Device Tree configurations
- Compiling and deploying Device Trees
6. Linux Kernel Modules
- Architectural design of kernel modules
- Constructing loadable kernel modules
- Processes for loading and unloading modules
- Managing module parameters
- Handling module dependencies
- Interacting with active kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Implementing kernel logging with printk()
- Leveraging the dmesg utility
- Utilizing dynamic debugging features
- Analyzing kernel panics
- Interpreting Oops messages
- Performing debugging sessions with GDB
- Using basic performance tracing utilities
8. Character Device Drivers
- The Linux device driver framework
- Details of character devices
- Procedures for registering drivers
- Implementing file operations
- Managing read and write operations
- Working with the IOCTL interface
- Memory management strategies in drivers
- Ensuring proper driver cleanup
9. Integrating Drivers and Accessing Hardware
- Concepts of platform devices and drivers
- Programming General Purpose Input/Output (GPIO)
- Handling hardware interrupts
- Utilizing timers and deferred work mechanisms
- Accessing specific hardware registers
- Operating with memory-mapped I/O
10. Version Control via Git
- Essential Git concepts
- Managing kernel source code repositories
- Branching strategies and merging workflows
- Generating patches for contribution
- Reviewing code changes
- Facilitating collaboration in kernel development
11. Practical Kernel Development Labs
- Configuring a tailored kernel setup
- Building and deploying the custom kernel
- Developing a basic kernel module
- Implementing a foundational character device driver
- Adjusting Device Tree configurations
- Troubleshooting kernel issues on the BeagleBone Black
12. Best Practices and Conclusion
- Adhering to Linux kernel coding styles
- Strategies for writing maintainable drivers
- Avoiding common development pitfalls
- Leveraging kernel documentation resources
- Understanding the open-source contribution process
- Recap of critical concepts
- Opportunity for questions and answers
- Roadmap for advancing in Linux kernel development
Requirements
A foundational understanding of utilizing a GNU/Linux system is required.
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.