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 kernel development process
- Survey of supported embedded platforms
2. Preparing the Development Environment
- Setting up the development workstation
- Understanding cross-compilation principles
- Installation of essential development tools
- Configuration of the BeagleBone Black development board
- Serial console setup
- Initiating the boot process on the target device
3. Navigating the Kernel Source
- Structure of the Linux kernel source tree
- Differences between stable and long-term support (LTS) kernels
- Downloading kernel source code
- Exploring source code organization
- Accessing kernel documentation
- Managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Customizing kernel configurations via menuconfig
- Choosing specific kernel features
- Cross-compiling the kernel
- Generating kernel images
- Handling kernel modules
- Overview of bootloader functionality
- Booting a customized kernel
5. Fundamentals of the Device Tree
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts in hardware description
- Editing Device Tree files
- Compilation and deployment of 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 kernel modules
- Techniques for module debugging
7. Debugging the Linux Kernel
- Kernel logging using printk()
- Utilizing dmesg
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging sessions with GDB
- Overview of basic performance tracing utilities
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Driver registration procedures
- Implementing file operations
- Managing read and write operations
- The IOCTL interface
- Memory management strategies
- Driver cleanup procedures
9. Integrating Drivers and Accessing Hardware
- Platform devices and their corresponding drivers
- GPIO programming techniques
- Handling interrupts
- Utilizing timers and deferred work queues
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Core concepts of Git
- Managing kernel source code repositories
- Branching and merging strategies
- Generating patches
- Code review processes
- Collaborative practices in kernel development
11. Practical Kernel Development Labs
- Configuring a bespoke kernel
- Building and deploying the kernel image
- Developing a simple kernel module
- Crafting a basic character device driver
- Modifying Device Tree configurations
- Troubleshooting kernel issues on the BeagleBone Black
12. Best Practices and Course Summary
- Adhering to kernel coding standards
- Writing maintainable driver code
- Avoiding common development errors
- Leveraging kernel documentation resources
- The open-source contribution workflow
- Recap of essential concepts
- Opportunities for questions and discussion
- Pathways for advancing in Linux kernel development
Requirements
Foundational experience with GNU/Linux operating systems.
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.