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
- Architecture of the Linux kernel
- Distinction between user space and kernel space
- Core responsibilities of the kernel
- Workflows for kernel development
- Survey of compatible embedded platforms
2. Setting Up the Development Environment
- Configuring the development workstation
- Principles of cross-compilation
- Installation of essential development tools
- Setup of the BeagleBone Black development board
- Configuration of the serial console
- Initiating boot processes on 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
- Acquisition of kernel source code
- Navigation of source code architecture
- Accessing kernel documentation
- Version management strategies for the kernel
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
- Fundamentals of the bootloader
- Booting a customized kernel
5. Device Tree Fundamentals
- Functionality of the Device Tree
- Device Tree Source (DTS) file structure
- Device Tree Blob (DTB) concepts
- Principles of hardware description
- Modification of Device Tree files
- Compilation and deployment of Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Compilation of loadable kernel modules
- Processes for loading and unloading modules
- Management of module parameters
- Handling module dependencies
- Interaction methods with kernel modules
- Techniques for debugging modules
7. Linux Kernel Debugging
- Kernel logging utilizing printk()
- Utilization of dmesg
- Implementation of dynamic debugging
- Analysis of kernel panics
- Interpretation of Oops messages
- Debugging processes with GDB
- Use of fundamental performance tracing utilities
8. Character Device Drivers
- The Linux device driver model
- Concepts of character devices
- Driver registration procedures
- Implementation of file operations
- Managing read and write operations
- The IOCTL interface
- Memory management considerations
- Driver cleanup routines
9. Driver Integration and Hardware Access
- Management of platform devices and drivers
- GPIO programming techniques
- Interrupt handling mechanisms
- Use of timers and deferred work
- Accessing hardware registers
- Operations involving memory-mapped I/O
10. Version Control with Git
- Basic Git commands and concepts
- Managing kernel source code versions
- Strategies for branching and merging
- Generation of patches
- Review processes for code changes
- Collaborative kernel development workflows
11. Hands-on Kernel Development Labs
- Configuration of a custom kernel
- Construction and deployment of the kernel
- Development of a basic kernel module
- Creation of a fundamental character device driver
- Adjustment of Device Tree files
- Troubleshooting kernel issues on the BeagleBone Black
12. Best Practices and Summary
- Standards for kernel coding style
- Writing drivers that are easy to maintain
- Identification of common development errors
- Resources for kernel documentation
- Workflow for contributing to open-source projects
- Recap of essential concepts
- Session for questions and answers
- Recommended next steps in Linux kernel development
Requirements
Foundational proficiency with the GNU/Linux operating 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.