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
- User space versus kernel space
- Key responsibilities of the kernel
- The kernel development workflow
- Supported embedded platforms overview
2. Setting Up the Development Environment
- Preparing the development workstation
- Concepts of cross-compilation
- Installing essential development tools
- Configuring the BeagleBone Black development board
- Setting up serial console access
- Booting the target device
3. Obtaining and Understanding the Kernel Source
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Downloading kernel sources
- Navigating the source code structure
- Accessing kernel documentation
- Managing different kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Configuring the kernel using menuconfig
- Selecting desired kernel features
- Cross-compiling the kernel
- Building kernel images
- Installing kernel modules
- Overview of bootloaders
- Booting a custom-built kernel
5. Device Tree Fundamentals
- The purpose of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Hardware description concepts
- 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
- Understanding module parameters
- Handling module dependencies
- Interacting with kernel modules
- Techniques for debugging modules
7. Linux Kernel Debugging
- Kernel logging using printk()
- Utilizing dmesg
- Implementing dynamic debugging
- Analyzing kernel panics
- Understanding Oops messages
- Debugging with GDB
- Introduction to basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Registering drivers
- Defining file operations
- Implementing read and write operations
- Using the IOCTL interface
- Memory management in drivers
- Cleaning up driver resources
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming techniques
- Handling interrupts
- Using timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Git fundamentals
- Managing kernel source code with Git
- 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
- Avoiding common development pitfalls
- Exploring kernel documentation resources
- The open-source contribution workflow
- Review of key concepts
- Questions and answers
- Next steps for Linux kernel development
Requirements
A fundamental understanding of 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.