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
- Fundamentals of Embedded Linux
- Architectural components of the Linux kernel
- Distinguishing between user space and kernel space
- Core responsibilities of the kernel
- The standard kernel development lifecycle
- Overview of compatible embedded platforms
2. Configuring the Development Environment
- Preparing the host development workstation
- Concepts of cross-compilation
- Installation of essential development toolchains
- Setup of the BeagleBone Black development board
- Configuration of serial console access
- Boot procedures for the target device
3. Acquiring and Analyzing 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 organization
- Utilizing official kernel documentation
- Strategies for managing kernel versions
4. Configuring, Building, and Booting the Kernel
- Kernel customization via menuconfig
- Selection of specific kernel features
- Executing cross-compilation processes
- Generation of kernel image files
- Installation of kernel modules
- Overview of bootloader mechanics
- Booting a customized kernel instance
5. Device Tree Fundamentals
- Role and purpose of the Device Tree
- Understanding Device Tree Source (DTS) files
- Compilation to Device Tree Blob (DTB)
- Concepts in hardware description
- Editing and modifying Device Tree definitions
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architectural design of kernel modules
- Building loadable kernel modules
- Processes for loading and unloading modules
- Defining and using module parameters
- Managing module dependencies
- Interaction mechanisms with kernel modules
- Techniques for debugging modules
7. Linux Kernel Debugging
- Logging via printk()
- Utilizing dmesg for log analysis
- Implementing dynamic debugging
- Analyzing kernel panic events
- Interpreting Oops messages
- Debugging sessions with GDB
- Overview of basic performance tracing tools
8. Character Device Drivers
- Overview of the Linux device driver model
- Character device characteristics
- Driver registration procedures
- Implementing file operations
- Handling read and write calls
- Utilizing the IOCTL interface
- Memory management within drivers
- Driver cleanup and exit routines
9. Driver Integration & Hardware Access
- Platform device and driver binding
- GPIO programming techniques
- Interrupt handling mechanisms
- Timers and deferred work queues
- Direct access to hardware registers
- Handling memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source repositories
- Branching and merging strategies
- Generating patches
- Code review processes
- Collaborative kernel development workflows
11. Hands-on Kernel Development Labs
- Configuration of a custom kernel build
- Building and deploying the kernel image
- Creation of a simple kernel module
- Development of a basic character device driver
- Modification of Device Tree entries
- Debugging kernel issues on the BeagleBone Black
12. Best Practices and Summary
- Adhering to kernel coding styles
- Writing maintainable driver code
- Avoiding common development pitfalls
- Accessing kernel documentation resources
- Contributing to open-source projects
- Review of key technical concepts
- Questions and answers session
- Recommended next steps for kernel development
Requirements
A foundational understanding of GNU/Linux system administration.
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.