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
- Linux kernel architecture
- User space vs. kernel space
- Kernel responsibilities
- Kernel development workflow
- Overview of supported embedded platforms
2. Setting Up the Development Environment
- Preparing the development workstation
- Cross-compilation concepts
- Installing required development tools
- Setting up the BeagleBone Black development board
- Serial console configuration
- Booting the target device
3. Obtaining and Understanding the Kernel Source
- Linux kernel source tree
- Stable vs. long-term support kernels
- Downloading kernel sources
- Exploring the source code structure
- Kernel documentation
- Managing kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Kernel configuration using menuconfig
- Selecting kernel features
- Cross-compiling the kernel
- Building kernel images
- Installing kernel modules
- Bootloader overview
- Booting a custom kernel
5. Device Tree Fundamentals
- Purpose of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Hardware description concepts
- Modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Kernel module architecture
- Building loadable kernel modules
- Loading and unloading modules
- Module parameters
- Module dependencies
- Interacting with kernel modules
- Module debugging techniques
7. Linux Kernel Debugging
- Kernel logging with printk()
- Using dmesg
- Dynamic debugging
- Kernel panic analysis
- Oops messages
- Debugging with GDB
- Basic performance tracing tools
8. Character Device Drivers
- Linux device driver model
- Character devices
- Registering drivers
- File operations
- Read and write operations
- IOCTL interface
- Memory management
- Driver cleanup
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming
- Interrupt handling
- Timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Git fundamentals
- Managing kernel source code
- Branching and merging
- Creating patches
- Reviewing changes
- Collaborating on 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 style
- Writing maintainable drivers
- Common development pitfalls
- Kernel documentation resources
- Open-source contribution workflow
- Review of key concepts
- Questions and answers
- Next steps for Linux kernel development
Requirements
Basic 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.