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
- Foundations of Embedded Linux
- Architectural design of the Linux kernel
- Distinctions between user space and kernel space
- Core functions and responsibilities of the kernel
- Standard workflows for kernel development
- Survey of compatible embedded platforms
2. Establishing the Development Environment
- Configuring the primary development workstation
- Principles of cross-compilation
- Installation of essential development utilities
- Setup of the BeagleBone Black target board
- Configuration of the serial console
- Initiating the boot process on the target device
3. Acquiring and Analyzing Kernel Sources
- Structure of the Linux kernel source tree
- Differences between stable and long-term support kernels
- Methods for obtaining kernel source code
- Navigating the internal code organization
- Utilizing official kernel documentation
- Strategies for managing kernel versions
4. Configuring, Building, and Launching the Kernel
- Customizing kernel settings via menuconfig
- Selection of specific kernel features
- Executing cross-compilation of the kernel
- Generation of kernel image files
- Deployment of kernel modules
- Fundamentals of the bootloader
- Bootloading a customized kernel
5. Essentials of the Device Tree
- The role and purpose of the Device Tree
- Anatomy of Device Tree Source (DTS) files
- Understanding Device Tree Blobs (DTB)
- Concepts of hardware description
- Techniques for modifying Device Tree definitions
- Compilation and deployment of Device Trees
6. Managing Linux Kernel Modules
- Architectural design of kernel modules
- Construction of loadable kernel modules
- Procedures for loading and unloading modules
- Definition and use of module parameters
- Handling module dependencies
- Interaction with active kernel modules
- Techniques for debugging module behavior
7. Techniques for Linux Kernel Debugging
- Implementing kernel logging with printk()
- Utilizing dmesg for log retrieval
- Application of dynamic debugging
- Analysis of kernel panic events
- Interpretation of Oops messages
- Interactive debugging using GDB
- Introduction to basic performance tracing utilities
8. Development of Character Device Drivers
- Overview of the Linux device driver model
- Nature and usage of character devices
- Procedures for registering drivers
- Implementation of file operations
- Handling read and write requests
- Utilizing the IOCTL interface
- Strategies for memory management
- Proper driver cleanup procedures
9. Integrating Drivers and Accessing Hardware
- Understanding platform devices and drivers
- Programming General Purpose Input/Output (GPIO) pins
- Managing hardware interrupts
- Use of timers and deferred work queues
- Direct access to hardware registers
- Operations involving memory-mapped I/O
10. Collaborative Version Control with Git
- Core concepts of Git
- Version control strategies for kernel code
- Management of branches and merges
- Generation of patch files
- Process for code review
- Collaborative practices in kernel development
11. Practical Kernel Development Exercises
- Configuration of a bespoke kernel
- Construction and deployment of the kernel
- Creation of a fundamental kernel module
- Development of a basic character device driver
- Modification of Device Tree definitions
- Troubleshooting kernel issues on BeagleBone Black hardware
12. Best Practices and Course Conclusions
- Adherence to kernel coding standards
- Principles of writing maintainable drivers
- Avoidance of common development errors
- Identification of key kernel documentation resources
- Workflow for open-source contributions
- Consolidation of core concepts
- Opportunity for questions and clarification
- Guidance on subsequent steps in Linux kernel development
Requirements
Foundational experience in 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.