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
- An overview of Embedded Linux
- Linux kernel architecture
- Differences between user space and kernel space
- Core responsibilities of the kernel
- The kernel development workflow
- A summary of supported embedded platforms
2. Setting Up the Development Environment
- Preparing the development workstation
- Concepts of cross-compilation
- Installation of essential development tools
- Configuration of the BeagleBone Black development board
- Serial console setup
- Booting the target device
3. Obtaining and Understanding the Kernel Source
- Navigating the Linux kernel source tree
- Distinctions between stable and long-term support kernels
- Downloading kernel sources
- Exploring the structure of the source code
- Utilizing kernel documentation
- Managing different kernel versions
4. Configuring, Compiling, and Booting the Kernel
- Configuring the kernel via menuconfig
- Selecting specific kernel features
- Cross-compiling the kernel
- Building kernel images
- Installing kernel modules
- Overview of bootloaders
- Booting a custom-built kernel
5. Device Tree Fundamentals
- The purpose of the Device Tree
- Device Tree Source (DTS) files
- Device Tree Blob (DTB)
- Concepts of hardware description
- Modifying Device Tree files
- Building and deploying Device Trees
6. Linux Kernel Modules
- Architecture of kernel modules
- Constructing loadable kernel modules
- Loading and unloading modules
- Utilizing module parameters
- Understanding module dependencies
- Interacting with kernel modules
- Techniques for debugging modules
7. Linux Kernel Debugging
- Kernel logging using printk()
- Utilizing the dmesg utility
- Implementing dynamic debugging
- Analyzing kernel panics
- Interpreting Oops messages
- Debugging with GDB
- Overview of basic performance tracing tools
8. Character Device Drivers
- The Linux device driver model
- Understanding character devices
- Registering drivers
- Implementing file operations
- Handling read and write operations
- Implementing the IOCTL interface
- Managing memory in drivers
- Performing driver cleanup
9. Driver Integration and Hardware Access
- Platform devices and drivers
- GPIO programming techniques
- Handling interrupts
- Using timers and deferred work
- Accessing hardware registers
- Working with memory-mapped I/O
10. Version Control with Git
- Fundamentals of Git
- Managing kernel source code
- Branching and merging strategies
- Creating patches
- Reviewing code 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
- Adhering to the kernel coding style
- Writing maintainable drivers
- Avoiding common development pitfalls
- Leveraging kernel documentation resources
- Navigating the open-source contribution workflow
- Review of key concepts
- Questions and answers
- Next steps for Linux kernel development
Requirements
A foundational understanding of 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.