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
- An overview of Embedded Linux
- Architecture of the Linux kernel
- Differences between user space and kernel space
- Core responsibilities of the kernel
- The workflow for kernel development
- A survey of supported embedded platforms
2. Establishing the Development Environment
- Preparing the development workstation
- Understanding cross-compilation concepts
- Installation of essential development tools
- Configuration of the BeagleBone Black development board
- Setup for serial console access
- Procedures for booting the target device
3. Acquiring and Comprehending Kernel Sources
- Structure of the Linux kernel source tree
- Distinctions between stable and long-term support kernels
- Methods for downloading kernel sources
- Navigating the source code structure
- Utilizing kernel documentation
- Strategies for managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Kernel configuration via menuconfig
- Selecting specific kernel features
- Cross-compilation of the kernel
- Construction of kernel images
- Installation of kernel modules
- Overview of bootloader functionality
- Booting a customized kernel
5. Fundamentals of Device Trees
- The role and purpose of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB) format
- Concepts of hardware description
- Modifying existing Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Process of building loadable kernel modules
- Loading and unloading procedures
- Utilization of module parameters
- Handling module dependencies
- Interaction methods with kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Logging mechanisms using printk()
- Effective use of dmesg
- Implementation of dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging workflows with GDB
- Introduction to basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Characteristics of character devices
- Driver registration processes
- File operation structures
- Implementing read and write operations
- The IOCTL interface
- Memory management strategies
- Procedures for driver cleanup
9. Driver Integration and Hardware Access
- Platform devices and associated drivers
- Programming GPIOs
- Handling interrupts
- Managing timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control Using Git
- Fundamental Git concepts
- Management of kernel source code
- Branching and merging techniques
- Creating patches
- Reviewing code changes
- Collaboration strategies in kernel development
11. Practical Kernel Development Labs
- Configuring a custom kernel
- Building and deploying the kernel
- Creating a simple kernel module
- Developing a basic character device driver
- Modifying Device Tree files
- Debugging kernel issues on the BeagleBone Black
12. Best Practices and Summary
- Adhering to kernel coding style standards
- Writing maintainable drivers
- Avoiding common development pitfalls
- Leveraging kernel documentation resources
- Navigating the open-source contribution workflow
- Review of key concepts
- Questions and answers session
- Determining next steps for Linux kernel development
Requirements
A foundational understanding of using a GNU/Linux system 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.