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
- Architecture of the Linux kernel
- Differences between user space and kernel space
- Key functions of the kernel
- The kernel development lifecycle
- Survey of supported embedded hardware platforms
2. Preparing the Development Environment
- Configuring the development workstation
- Understanding cross-compilation
- Installing essential development utilities
- Setting up the BeagleBone Black development board
- Configuring the serial console
- Boot process for the target device
3. Acquiring and Analyzing Kernel Source
- The Linux kernel source code tree
- Distinctions between stable and long-term support kernels
- Retrieving kernel source code
- Navigating the source code structure
- Utilizing kernel documentation
- Version control for kernel releases
4. Configuring, Building, and Booting the Kernel
- Kernel configuration via menuconfig
- Choosing specific kernel features
- Process of cross-compiling the kernel
- Generating kernel images
- Managing kernel modules
- Overview of the bootloader
- Launching a customized kernel
5. Device Tree Fundamentals
- The role of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts of hardware description
- Editing Device Tree files
- Compilation and deployment of Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Developing loadable kernel modules
- Processes for loading and unloading modules
- Configuring module parameters
- Handling module dependencies
- Interaction mechanisms with kernel modules
- Techniques for debugging modules
7. Linux Kernel Debugging
- Kernel logging via printk()
- Utilizing dmesg
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging sessions with GDB
- Introduction to performance tracing utilities
8. Character Device Drivers
- The Linux device driver framework
- Nature of character devices
- Driver registration procedures
- Defining file operations
- Implementing read and write operations
- The IOCTL interface
- Memory management within drivers
- Proper driver cleanup
9. Driver Integration and Hardware Access
- Concepts of platform devices and drivers
- Programming GPIOs
- Managing interrupts
- Utilizing timers and deferred tasks
- Reading and writing hardware registers
- Operations with memory-mapped I/O
10. Version Control with Git
- Core Git concepts
- Managing kernel source code repositories
- Techniques for branching and merging
- Generating patches
- Code review processes
- Collaborative workflows in kernel development
11. Practical Kernel Development Labs
- Configuration of a custom kernel
- Build and deployment of the kernel
- Development of a simple kernel module
- Creation of a basic character device driver
- Modification of Device Tree files
- Troubleshooting kernel issues on BeagleBone Black
12. Best Practices and Summary
- Kernel coding standards
- Strategies for writing maintainable drivers
- Identifying common development errors
- Essential kernel documentation resources
- Workflows for open-source contributions
- Recap of fundamental concepts
- Questions and answers session
- Recommended next steps for Linux kernel development
Requirements
Essential knowledge of operating a GNU/Linux environment
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.