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
- Introduction to Embedded Linux
- Structure of the Linux kernel
- Distinction between User space and kernel space
- Core functions of the kernel
- The kernel development lifecycle
- Survey of supported embedded platforms
2. Setting Up the Development Environment
- Configuration of the development workstation
- Principles of cross-compilation
- Installation of 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
- Differences between stable and long-term support kernels
- Downloading kernel sources
- Navigating the source code structure
- Kernel documentation resources
- Managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Kernel configuration via menuconfig
- Selection of kernel features
- Cross-compiling the kernel
- Generating kernel images
- Installing kernel modules
- Introduction to bootloaders
- Booting a customized kernel
5. Device Tree Fundamentals
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts in hardware description
- Editing 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
- Interaction with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging
- Kernel logging using printk()
- Utilizing dmesg
- Dynamic debugging methods
- 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
- File operations
- Read and write processes
- The IOCTL interface
- Memory management
- Driver cleanup procedures
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming
- Interrupt handling
- Timers and deferred work
- Accessing hardware registers
- Memory-mapped I/O operations
10. Version Control with Git
- Basics of Git
- Managing kernel source code
- Branching and merging strategies
- Generating patches
- Code review processes
- Collaborative 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 standards
- Developing maintainable drivers
- Common development challenges
- Kernel documentation resources
- Open-source contribution workflow
- Recap of key concepts
- Questions and answers
- Next steps in Linux kernel development
Requirements
Foundational knowledge of operating within a GNU/Linux environment
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.