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
- Linux kernel structural design
- Distinguishing user space from kernel space
- Core operational responsibilities of the kernel
- Procedures for kernel development
- Summary of compatible embedded architectures
2. Establishing the Development Environment
- Configuring the development workstation
- Principles of cross-compilation
- Deployment of necessary development utilities
- Initialization of the BeagleBone Black target hardware
- Configuration of serial console interfaces
- Initiating boot sequences on the target device
3. Acquisition and Analysis of Kernel Source Code
- Structure of the Linux kernel source repository
- Differentiation between stable and long-term support releases
- Retrieval of kernel source files
- Navigation of the source code hierarchy
- Consultation of official kernel documentation
- Management of kernel version control
4. Configuration, Compilation, and Deployment
- Kernel parameter customization via menuconfig
- Selection of functional kernel components
- Execution of cross-compilation processes
- Generation of kernel image files
- Installation of kernel modules
- Overview of bootloader mechanisms
- Loading a customized kernel instance
5. Device Tree Concepts
- Functionality and intent of the Device Tree
- Format and usage of Device Tree Source files
- Device Tree Blob specifications
- Methodologies for describing hardware configurations
- Modification of Device Tree definitions
- Compilation and deployment of Device Tree data
6. Linux Kernel Modules
- Architectural design of kernel modules
- Construction of loadable kernel modules
- Processes for module loading and removal
- Configuration of module parameters
- Management of module dependencies
- Interaction protocols with kernel modules
- Techniques for module debugging
7. Linux Kernel Debugging Procedures
- Logging mechanisms using printk()
- Utilization of dmesg utilities
- Implementation of dynamic debugging features
- Analysis of kernel panic events
- Interpretation of Oops error messages
- Debugging processes with GDB
- Application of foundational performance tracing tools
8. Character Device Drivers
- Linux device driver framework
- Definition and use of character devices
- Driver registration protocols
- Implementation of file operation interfaces
- Handling read and write operations
- IOCTL interface management
- Memory management strategies
- Driver cleanup procedures
9. Driver Integration and Hardware Interaction
- Management of platform devices and drivers
- General Purpose Input/Output (GPIO) control
- Interrupt signal processing
- Utilization of timers and deferred work queues
- Accessing hardware register data
- Handling memory-mapped I/O operations
10. Source Code Management with Git
- Essential Git operations
- Administration of kernel source code repositories
- Branching and merging strategies
- Generation of patches
- Procedures for code review
- Collaborative workflows in kernel development
11. Practical Kernel Development Exercises
- Customization of kernel configurations
- Compilation and deployment of the kernel
- Development of a simple kernel module
- Construction of a basic character device driver
- Adjustment of Device Tree definitions
- Troubleshooting kernel issues on BeagleBone Black hardware
12. Best Practices and Course Summary
- Adherence to kernel coding standards
- Development of maintainable drivers
- Identification of common development errors
- Access to kernel documentation resources
- Workflows for open-source contribution
- Review of principal concepts
- Inquiry and response session
- Pathways for advanced Linux kernel development
Requirements
Familiarity 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.