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
- Overview of Embedded Linux
- Linux kernel architecture
- Differences between user space and kernel space
- Core responsibilities of the kernel
- The kernel development workflow
- Supported embedded platforms
2. Setting Up the Development Environment
- Preparing the development workstation
- Understanding cross-compilation concepts
- Installing essential development tools
- Configuring the BeagleBone Black development board
- Setting up the serial console
- Booting the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Distinguishing between stable and long-term support kernels
- Procuring kernel sources
- Navigating the source code structure
- Accessing kernel documentation
- Managing different kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Utilizing menuconfig for kernel configuration
- Selecting specific kernel features
- Cross-compiling the kernel
- Constructing kernel images
- Installing kernel modules
- Understanding the bootloader
- Booting a custom kernel
5. Device Tree Fundamentals
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts of hardware description
- Modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Building loadable kernel modules
- Loading and unloading modules
- Module parameters
- Module dependencies
- Interacting with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Kernel logging using printk()
- Utilizing dmesg
- Dynamic debugging methods
- Analyzing kernel panics
- Understanding Oops messages
- Debugging with GDB
- Basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Registering drivers
- File operations
- Read and write operations
- The IOCTL interface
- Memory management in drivers
- Driver cleanup procedures
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming
- Interrupt handling
- Timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Git fundamentals
- Managing kernel source code
- Branching and merging strategies
- Creating patches
- Reviewing changes
- Collaborating on kernel development
11. Hands-on 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 BeagleBone Black
12. Best Practices and Summary
- Kernel coding style guidelines
- Writing maintainable drivers
- Common development pitfalls to avoid
- Resources for kernel documentation
- Workflow for open-source contribution
- Review of key concepts
- Questions and answers
- Next steps for Linux kernel development
Requirements
Fundamental familiarity with using a GNU/Linux system
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.