Get in Touch

Course Outline

1. Introduction to the Linux Kernel

  • Overview of Embedded Linux
  • Architecture of the Linux kernel
  • Distinction between user space and kernel space
  • Core responsibilities of the kernel
  • Workflows for kernel development
  • Survey of compatible embedded platforms

2. Setting Up the Development Environment

  • Configuring the development workstation
  • Principles of cross-compilation
  • Installation of essential development tools
  • Setup of the BeagleBone Black development board
  • Configuration of the serial console
  • Initiating boot processes on the target device

3. Obtaining and Understanding the Kernel Source

  • Structure of the Linux kernel source tree
  • Differences between stable and long-term support kernels
  • Acquisition of kernel source code
  • Navigation of source code architecture
  • Accessing kernel documentation
  • Version management strategies for the kernel

4. Configuring, Compiling, and Booting the Kernel

  • Kernel configuration via menuconfig
  • Selection of specific kernel features
  • Cross-compilation of the kernel
  • Generation of kernel images
  • Installation of kernel modules
  • Fundamentals of the bootloader
  • Booting a customized kernel

5. Device Tree Fundamentals

  • Functionality of the Device Tree
  • Device Tree Source (DTS) file structure
  • Device Tree Blob (DTB) concepts
  • Principles of hardware description
  • Modification of Device Tree files
  • Compilation and deployment of Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Compilation of loadable kernel modules
  • Processes for loading and unloading modules
  • Management of module parameters
  • Handling module dependencies
  • Interaction methods with kernel modules
  • Techniques for debugging modules

7. Linux Kernel Debugging

  • Kernel logging utilizing printk()
  • Utilization of dmesg
  • Implementation of dynamic debugging
  • Analysis of kernel panics
  • Interpretation of Oops messages
  • Debugging processes with GDB
  • Use of fundamental performance tracing utilities

8. Character Device Drivers

  • The Linux device driver model
  • Concepts of character devices
  • Driver registration procedures
  • Implementation of file operations
  • Managing read and write operations
  • The IOCTL interface
  • Memory management considerations
  • Driver cleanup routines

9. Driver Integration and Hardware Access

  • Management of platform devices and drivers
  • GPIO programming techniques
  • Interrupt handling mechanisms
  • Use of timers and deferred work
  • Accessing hardware registers
  • Operations involving memory-mapped I/O

10. Version Control with Git

  • Basic Git commands and concepts
  • Managing kernel source code versions
  • Strategies for branching and merging
  • Generation of patches
  • Review processes for code changes
  • Collaborative kernel development workflows

11. Hands-on Kernel Development Labs

  • Configuration of a custom kernel
  • Construction and deployment of the kernel
  • Development of a basic kernel module
  • Creation of a fundamental character device driver
  • Adjustment of Device Tree files
  • Troubleshooting kernel issues on the BeagleBone Black

12. Best Practices and Summary

  • Standards for kernel coding style
  • Writing drivers that are easy to maintain
  • Identification of common development errors
  • Resources for kernel documentation
  • Workflow for contributing to open-source projects
  • Recap of essential concepts
  • Session for questions and answers
  • Recommended next steps in Linux kernel development

Requirements

Foundational proficiency with the GNU/Linux operating system

 14 Hours

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories