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
- Foundations of Embedded Linux
- Understanding Linux kernel architecture
- Differences between User space and kernel space
- Core responsibilities of the kernel
- The kernel development lifecycle
- Survey of compatible embedded platforms
2. Setting Up the Development Environment
- Preparing the development workstation
- Concepts in Cross-compilation
- Installation of necessary development tools
- Configuration of the BeagleBone Black development board
- Setup of the serial console
- Boot process of the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Comparison of Stable vs. long-term support kernels
- Acquiring kernel sources
- Navigation of the source code structure
- Reviewing Kernel documentation
- Managing kernel version control
4. Configuring, Compiling, and Booting the Kernel
- Kernel configuration via menuconfig
- Selection of specific kernel features
- Cross-compilation of the kernel
- Generation of kernel images
- Installation of kernel modules
- Overview of the Bootloader
- Booting a customized kernel
5. Device Tree Fundamentals
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB) format
- Principles of hardware description
- Editing Device Tree files
- Compilation and deployment of Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Construction of loadable kernel modules
- Processes for loading and unloading modules
- Defining Module parameters
- Understanding Module dependencies
- Interaction with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Kernel logging via printk()
- Utilization of dmesg
- Implementation of Dynamic debugging
- Analyzing Kernel panics
- Interpreting Oops messages
- Debugging using GDB
- Essential performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Overview of Character devices
- Driver registration processes
- Management 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 corresponding drivers
- Programming GPIOs
- Managing Interrupt handling
- Utilization of Timers and deferred work
- Direct access to hardware registers
- Operations with memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source code repositories
- Branching and merging strategies
- Generation of patches
- Review processes for changes
- Collaborative practices in kernel development
11. Hands-on Kernel Development Labs
- Configuration of a custom kernel
- Compilation and deployment of the kernel
- Creation of a basic kernel module
- Development of a simple character device driver
- Modification of Device Tree files
- Debugging kernel issues on BeagleBone Black
12. Best Practices and Summary
- Adherence to Kernel coding style
- Strategies for writing maintainable drivers
- Identification of common development pitfalls
- Accessing Kernel documentation resources
- Workflows for Open-source contribution
- Recap of core concepts
- Q&A session
- Recommended next steps for Linux kernel development
Requirements
Familiarity with navigating and utilizing a GNU/Linux environment is required.
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.