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
- Embedded Linux overview
- Linux kernel architecture
- Differences between user space and kernel space
- Core responsibilities of the kernel
- Workflow for kernel development
- Supported embedded platforms overview
2. Establishing the Development Environment
- Preparation of the development workstation
- Concepts of cross-compilation
- Installation of necessary development tools
- Configuration of the BeagleBone Black development board
- Serial console setup
- Boot procedure for the target device
3. Acquiring and Analyzing the Kernel Source
- Understanding the Linux kernel source tree
- Comparison of stable versus long-term support kernels
- Procedure for downloading kernel sources
- Exploration of the source code structure
- Accessing kernel documentation
- Strategies for managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Utilizing menuconfig for kernel configuration
- Selection of specific kernel features
- Process of cross-compiling the kernel
- Construction of kernel images
- Installation of kernel modules
- Overview of bootloaders
- Booting a custom-built kernel
5. Fundamentals of Device Trees
- The purpose and utility of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB) format
- Concepts of hardware description
- Methods for modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Construction of loadable kernel modules
- Loading and unloading procedures for modules
- Utilization of module parameters
- Understanding module dependencies
- Interaction techniques with kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Kernel logging using printk()
- Utilization of dmesg
- Implementation of dynamic debugging
- Analysis of kernel panics
- Understanding Oops messages
- Debugging procedures with GDB
- Introduction to basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Nature of character devices
- Process of registering drivers
- Implementation of file operations
- Handling read and write operations
- Utilization of the IOCTL interface
- Memory management strategies
- Driver cleanup procedures
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming techniques
- Interrupt handling mechanisms
- Use of timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Fundamentals of Git
- Management of kernel source code
- Branching and merging strategies
- Creation of patches
- Reviewing code changes
- Collaboration in kernel development
11. Practical Kernel Development Labs
- Configuration of a custom kernel
- Building and deploying the kernel
- Creation of a simple kernel module
- Development of a basic character device driver
- Modification of Device Tree files
- Debugging kernel issues on BeagleBone Black
12. Best Practices and Summary
- Adherence to kernel coding style
- Strategies for writing maintainable drivers
- Avoidance of common development pitfalls
- Resources for kernel documentation
- Workflow for open-source contribution
- Review of key course concepts
- Question and answer session
- Recommended 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.