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
- Linux kernel architecture
- Differences between user space and kernel space
- Core kernel responsibilities
- The kernel development lifecycle
- Overview of supported embedded platforms
2. Setting Up the Development Environment
- Preparing the development workstation
- Concepts of cross-compilation
- Installing necessary development tools
- Setup of the BeagleBone Black development board
- Configuring the serial console
- Booting the target device
3. Obtaining and Understanding the Kernel Source
- The Linux kernel source tree
- Comparison of stable and long-term support kernels
- Downloading kernel sources
- Navigating the source code structure
- Reviewing kernel documentation
- Managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Configuring the kernel using menuconfig
- Selecting specific kernel features
- Cross-compiling the kernel
- Creating kernel images
- Installing kernel modules
- Overview of 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
- Constructing loadable kernel modules
- Processes for loading and unloading modules
- Configuring module parameters
- Handling module dependencies
- Interacting with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Kernel logging via printk()
- Utilizing dmesg
- Dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging with GDB
- Essential performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Character devices
- Driver registration processes
- Defining file operations
- Implementing read and write operations
- The IOCTL interface
- Memory management strategies
- Driver cleanup routines
9. Driver Integration and Hardware Access
- Platform devices and their drivers
- GPIO programming
- Managing interrupt handling
- Utilizing timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source code
- Branching and merging strategies
- Generating patches
- Reviewing code changes
- Collaborative kernel development workflows
11. Hands-on Kernel Development Labs
- Configuring a custom kernel
- Building and deploying the kernel
- Developing a simple kernel module
- Creating a basic character device driver
- Editing Device Tree files
- Troubleshooting kernel issues on BeagleBone Black
12. Best Practices and Summary
- Kernel coding style standards
- Writing maintainable drivers
- Identifying common development pitfalls
- Accessing kernel documentation resources
- The open-source contribution process
- Recap of key concepts
- Q&A session
- Pathways for further Linux kernel development
Requirements
A foundational understanding of GNU/Linux system operations.
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.