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
- Fundamentals of Embedded Linux
- Architectural structure of the Linux kernel
- Distinguishing between user space and kernel space
- Core duties of the kernel
- Standard workflow for kernel development
- Overview of compatible embedded platforms
2. Establishing the Development Environment
- Configuring the development workstation
- Principles of cross-compilation
- Installing essential development utilities
- Setting up the BeagleBone Black development board
- Configuring the serial console
- Launching the target device
3. Acquiring and Analyzing Kernel Source Code
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Retrieving kernel source code
- Navigating the source code organization
- Reference to kernel documentation
- Handling kernel version control
4. Kernel Configuration, Compilation, and Launch
- Configuring the kernel via menuconfig
- Choosing specific kernel features
- Performing cross-compilation of the kernel
- Generating kernel images
- Installing kernel modules
- Introduction to bootloaders
- Booting a customized kernel
5. Fundamentals of the Device Tree
- Functionality of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts for describing hardware
- Editing Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architectural design of kernel modules
- Creating loadable kernel modules
- Processes for loading and unloading modules
- Configuring module parameters
- Managing module dependencies
- Interacting with kernel modules
- Techniques for debugging modules
7. Debugging the Linux Kernel
- Logging kernel events with printk()
- Utilizing dmesg
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging using GDB
- Using basic performance tracing utilities
8. Character Device Drivers
- Model for Linux device drivers
- Understanding character devices
- Registration of drivers
- Defining file operations
- Implementing read and write operations
- The IOCTL interface
- Memory management strategies
- Cleaning up drivers
9. Driver Integration and Hardware Interaction
- Platform devices and corresponding drivers
- Programming GPIO
- Handling interrupts
- Managing timers and deferred work
- Accessing hardware registers
- Utilizing memory-mapped I/O
10. Version Control via Git
- Core concepts of Git
- Managing kernel source code repositories
- Techniques for branching and merging
- Generating patches
- Reviewing code changes
- Collaborative practices in kernel development
11. Practical Kernel Development Exercises
- Customizing a kernel configuration
- Building and deploying the kernel
- Writing a simple kernel module
- Developing a basic character device driver
- Editing Device Tree files
- Resolving kernel issues on the BeagleBone Black
12. Best Practices and Conclusion
- Adhering to kernel coding standards
- Writing sustainable drivers
- Avoiding common development pitfalls
- Accessing kernel documentation resources
- Workflow for contributing to open-source projects
- Recap of essential concepts
- Q&A session
- Recommended next steps for Linux kernel development
Requirements
Foundational experience with operating 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.