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
- Architectural overview of the Linux kernel
- Differences between user space and kernel space
- Core functions of the kernel
- Standard kernel development workflows
- Overview of supported embedded platforms
2. Preparing the Development Environment
- Configuring the development workstation
- Understanding cross-compilation principles
- Installation of essential development tools
- Setup of the BeagleBone Black development board
- Configuration of the serial console
- Initiating the target device
3. Acquiring and Analyzing Kernel Source Code
- The Linux kernel source directory
- Distinctions between stable and long-term support kernels
- Downloading kernel source files
- Examining the source code layout
- Navigating kernel documentation
- Managing kernel version releases
4. Kernel Configuration, Compilation, and Booting
- Configuring the kernel via menuconfig
- Choosing specific kernel features
- Executing cross-compilation
- Creating kernel images
- Deploying kernel modules
- Overview of bootloaders
- Booting a customized kernel
5. Device Tree Essentials
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB) files
- Concepts in hardware description
- Editing Device Tree configurations
- Compiling and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Compiling loadable kernel modules
- Processes for loading and unloading modules
- Defining module parameters
- Managing module dependencies
- Interacting with active kernel modules
- Techniques for module debugging
7. Debugging the Linux Kernel
- Kernel logging using printk()
- Utilizing dmesg for logs
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging sessions with GDB
- Basic tools for performance tracing
8. Character Device Drivers
- The Linux device driver framework
- Character devices explained
- Driver registration procedures
- Handling file operations
- Implementing read and write methods
- Using the IOCTL interface
- Memory management strategies
- Driver cleanup routines
9. Driver Integration and Hardware Interaction
- Platform devices and corresponding drivers
- Programming GPIOs
- Managing interrupts
- Utilizing timers and deferred work queues
- Reading and writing hardware registers
- Operations with memory-mapped I/O
10. Version Control via Git
- Fundamentals of Git
- Managing kernel source code in repositories
- Techniques for branching and merging
- Generating patches
- Conducting code reviews
- Collaborative workflows for kernel development
11. Practical Kernel Development Exercises
- Configuring a bespoke kernel
- Building and deploying the kernel
- Developing a basic kernel module
- Creating a fundamental character device driver
- Modifying Device Tree configurations
- Diagnosing kernel issues on BeagleBone Black
12. Best Practices and Conclusion
- Linux kernel coding standards
- Developing maintainable drivers
- Avoiding common development errors
- Key kernel documentation resources
- Workflows for contributing to open source
- Summary of core concepts
- Question and discussion session
- Future pathways for Linux kernel developers
Requirements
Familiarity with basic GNU/Linux system operations
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.