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
- Overview of Embedded Linux
- Architecture of the Linux kernel
- Distinction between user space and kernel space
- Core responsibilities of the kernel
- The kernel development lifecycle
- Survey of supported embedded platforms
2. Setting Up the Development Environment
- Preparation of the development workstation
- Principles of cross-compilation
- Installation of essential development tools
- Configuration of the BeagleBone Black development board
- Setup of the serial console
- Process of booting the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Comparison of stable and long-term support kernels
- Methods for downloading kernel sources
- Navigating the source code organization
- Reviewing kernel documentation
- Strategies for managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Kernel configuration via menuconfig
- Selection of specific kernel features
- Executing cross-compilation of the kernel
- Construction of kernel images
- Installation of kernel modules
- Introduction to bootloaders
- Booting a customized kernel
5. Device Tree Fundamentals
- The role and purpose of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts of hardware description
- Techniques for modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Building loadable kernel modules
- Procedures for loading and unloading modules
- Utilization of module parameters
- Understanding module dependencies
- Methods for interacting with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Implementing kernel logging with printk()
- Utilizing dmesg for diagnostics
- Applying dynamic debugging
- Analysis of kernel panics
- Interpreting Oops messages
- Debugging using GDB
- Introduction to basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Character devices
- Driver registration processes
- Implementation of file operations
- Handling read and write operations
- The IOCTL interface
- Memory management strategies
- Driver cleanup routines
9. Driver Integration and Hardware Access
- Platform devices and associated drivers
- Programming GPIOs
- Handling interrupts
- Utilizing timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Fundamentals of Git
- Managing kernel source code repositories
- Branching and merging workflows
- Creating and formatting patches
- Reviewing code changes
- Collaboration in kernel development
11. Hands-on Kernel Development Labs
- Configuration of a custom kernel
- Building and deploying the kernel
- Creation of a simple kernel module
- Development of a basic character device driver
- Modification of Device Tree files
- Debugging kernel issues on the BeagleBone Black
12. Best Practices and Summary
- Adherence to kernel coding style
- Writing maintainable drivers
- Identifying common development pitfalls
- Accessing kernel documentation resources
- The open-source contribution workflow
- Review of key concepts
- Questions and answers
- Recommended next steps for Linux kernel development
Requirements
Fundamental knowledge of navigating and utilizing 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.