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
- Introduction to Embedded Linux
- Architecture of the Linux kernel
- Distinction between User space and kernel space
- Core responsibilities of the kernel
- Workflow for kernel development
- Survey of compatible embedded platforms
2. Establishing the Development Environment
- Configuring the development workstation
- Understanding cross-compilation
- Installation of necessary development tools
- Configuration of the BeagleBone Black development board
- Setup of serial console
- Booting the target device
3. Acquiring and Interpreting Kernel Source Code
- Structure of the Linux kernel source tree
- Differences between stable and long-term support (LTS) kernels
- Downloading kernel sources
- Exploring source code organization
- Kernel documentation resources
- Version management for the kernel
4. Configuring, Building, and Booting the Kernel
- Configuring the kernel via menuconfig
- Enabling specific kernel features
- Process of cross-compiling the kernel
- Generating kernel images
- Deployment of kernel modules
- Overview of bootloaders
- Booting a customized kernel
5. Basics of the Device Tree
- Role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB) files
- Concepts of hardware description
- Editing Device Tree files
- Compilation and deployment of Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Construction of loadable kernel modules
- Processes for loading and unloading modules
- Use of module parameters
- Handling module dependencies
- Interaction with kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Logging with printk()
- Utilizing dmesg
- Dynamic debugging features
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging using GDB
- Essential performance tracing utilities
8. Character Device Drivers
- The Linux device driver model
- Nature of character devices
- Driver registration process
- Implementing file operations
- Read and write handling
- IOCTL interface implementation
- Memory management strategies
- Cleanup procedures for drivers
9. Driver Integration and Hardware Interaction
- Platform devices and their drivers
- GPIO configuration
- Managing interrupts
- Use of timers and deferred work
- Accessing hardware registers
- Utilization of memory-mapped I/O
10. Source Control Using Git
- Core Git concepts
- Managing kernel source code repositories
- Branching and merging strategies
- Generating patches
- Reviewing code changes
- Collaborative kernel development
11. Practical Kernel Development Exercises
- Customization of kernel configuration
- Building and deploying the kernel
- Creation of a basic kernel module
- Development of a simple character device driver
- Modification of Device Tree files
- Debugging kernel issues on BeagleBone Black
12. Best Practices and Conclusions
- Kernel coding standards
- Writing sustainable and maintainable drivers
- Common development challenges
- Key kernel documentation resources
- Workflow for open-source contributions
- Recap of fundamental concepts
- Q&A session
- Future pathways in Linux kernel development
Requirements
Familiarity with basic operations on a GNU/Linux system
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.