Get in Touch
 Duration 14 hours

Course Outline

1. Introduction to the Linux Kernel

  • Fundamentals of Embedded Linux
  • Architectural structure of the Linux kernel
  • Distinguishing between user space and kernel space
  • Core duties of the kernel
  • Standard workflow for kernel development
  • Overview of compatible embedded platforms

2. Establishing the Development Environment

  • Configuring the development workstation
  • Principles of cross-compilation
  • Installing essential development utilities
  • Setting up the BeagleBone Black development board
  • Configuring the serial console
  • Launching the target device

3. Acquiring and Analyzing Kernel Source Code

  • Structure of the Linux kernel source tree
  • Differences between stable and long-term support kernels
  • Retrieving kernel source code
  • Navigating the source code organization
  • Reference to kernel documentation
  • Handling kernel version control

4. Kernel Configuration, Compilation, and Launch

  • Configuring the kernel via menuconfig
  • Choosing specific kernel features
  • Performing cross-compilation of the kernel
  • Generating kernel images
  • Installing kernel modules
  • Introduction to bootloaders
  • Booting a customized kernel

5. Fundamentals of the Device Tree

  • Functionality of the Device Tree
  • Device Tree Source (DTS) files
  • Device Tree Blob (DTB)
  • Concepts for describing hardware
  • Editing Device Tree files
  • Building and deploying Device Trees

6. Linux Kernel Modules

  • Architectural design of kernel modules
  • Creating loadable kernel modules
  • Processes for loading and unloading modules
  • Configuring module parameters
  • Managing module dependencies
  • Interacting with kernel modules
  • Techniques for debugging modules

7. Debugging the Linux Kernel

  • Logging kernel events with printk()
  • Utilizing dmesg
  • Implementing dynamic debugging
  • Analyzing kernel panics
  • Interpreting Oops messages
  • Debugging using GDB
  • Using basic performance tracing utilities

8. Character Device Drivers

  • Model for Linux device drivers
  • Understanding character devices
  • Registration of drivers
  • Defining file operations
  • Implementing read and write operations
  • The IOCTL interface
  • Memory management strategies
  • Cleaning up drivers

9. Driver Integration and Hardware Interaction

  • Platform devices and corresponding drivers
  • Programming GPIO
  • Handling interrupts
  • Managing timers and deferred work
  • Accessing hardware registers
  • Utilizing memory-mapped I/O

10. Version Control via Git

  • Core concepts of Git
  • Managing kernel source code repositories
  • Techniques for branching and merging
  • Generating patches
  • Reviewing code changes
  • Collaborative practices in kernel development

11. Practical Kernel Development Exercises

  • Customizing a kernel configuration
  • Building and deploying the kernel
  • Writing a simple kernel module
  • Developing a basic character device driver
  • Editing Device Tree files
  • Resolving kernel issues on the BeagleBone Black

12. Best Practices and Conclusion

  • Adhering to kernel coding standards
  • Writing sustainable drivers
  • Avoiding common development pitfalls
  • Accessing kernel documentation resources
  • Workflow for contributing to open-source projects
  • Recap of essential concepts
  • Q&A session
  • Recommended next steps for Linux kernel development

Requirements

Foundational experience with operating a GNU/Linux system.

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories