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. Fundamentals of the Linux Kernel
- Introduction to Embedded Linux
- Architecture of the Linux kernel
- Differences between user space and kernel space
- Core responsibilities of the kernel
- Processes involved in kernel development
- Survey of compatible embedded platforms
2. Configuring the Development Environment
- Setup of the development workstation
- Principles of cross-compilation
- Installation of necessary development utilities
- Preparation of the BeagleBone Black development board
- Configuration of the serial console
- Starting the target device
3. Acquiring and Interpreting Kernel Source Code
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Retrieving kernel source code
- Navigating the codebase structure
- Kernel documentation resources
- Handling kernel versioning
4. Kernel Configuration, Compilation, and Booting
- Configuring the kernel via menuconfig
- Choosing specific kernel capabilities
- Performing cross-compilation of the kernel
- Generating kernel images
- Installing kernel modules
- Introduction to bootloaders
- Launching a customized kernel
5. Basics of the Device Tree
- Function of the Device Tree
- Device Tree Source (DTS) documentation
- Device Tree Blob (DTB)
- Concepts for describing hardware
- Editing Device Tree files
- Compilation and deployment of 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
- Communication with kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Logging output with printk()
- Utilizing dmesg
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting oops messages
- Debugging using GDB
- Essential performance tracing utilities
8. Character Device Drivers
- The Linux device driver model
- Character-based devices
- Driver registration processes
- Defining file operations
- Implementing read and write functions
- The IOCTL interface
- Memory management strategies
- Procedures for driver cleanup
9. Driver Integration and Hardware Interaction
- Integration of platform devices and drivers
- Programming GPIOs
- Managing interrupts
- Utilizing timers and deferred tasks
- Reading from and writing to hardware registers
- Interaction with memory-mapped I/O
10. Source Control Using Git
- Core Git concepts
- Managing kernel source code repositories
- Techniques for branching and merging
- Generating patches
- Process for code review
- Collaborative kernel development
11. Practical Kernel Development Labs
- Configuration of a tailored kernel
- Building and installing the kernel
- Development of a basic kernel module
- Coding a simple character device driver
- Modification of Device Tree files
- Troubleshooting kernel issues on the BeagleBone Black
12. Industry Best Practices and Conclusion
- Standards for kernel coding style
- Creating drivers that are easy to maintain
- Avoiding common development errors
- Available kernel documentation
- Workflow for contributing to open source
- Recap of critical concepts
- Discussion and Q&A session
- Recommended next steps in Linux kernel development
Requirements
Fundamental knowledge of operating on a GNU/Linux environment
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.