Get in Touch
 Duration 14 hours

Course Outline

1. Fundamentals of the Linux Kernel

  • Introduction to Embedded Linux
  • Architecture of the Linux kernel
  • Differences between user space and kernel space
  • Core responsibilities of the kernel
  • Processes involved in kernel development
  • Survey of compatible embedded platforms

2. Configuring the Development Environment

  • Setup of the development workstation
  • Principles of cross-compilation
  • Installation of necessary development utilities
  • Preparation of the BeagleBone Black development board
  • Configuration of the serial console
  • Starting the target device

3. Acquiring and Interpreting Kernel Source Code

  • Structure of the Linux kernel source tree
  • Differences between stable and long-term support kernels
  • Retrieving kernel source code
  • Navigating the codebase structure
  • Kernel documentation resources
  • Handling kernel versioning

4. Kernel Configuration, Compilation, and Booting

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

5. Basics of the Device Tree

  • Function of the Device Tree
  • Device Tree Source (DTS) documentation
  • Device Tree Blob (DTB)
  • Concepts for describing hardware
  • Editing Device Tree files
  • Compilation and deployment of Device Trees

6. Linux Kernel Modules

  • Architecture of kernel modules
  • Constructing loadable kernel modules
  • Processes for loading and unloading modules
  • Defining module parameters
  • Managing module dependencies
  • Communication with kernel modules
  • Techniques for debugging modules

7. Debugging the Linux Kernel

  • Logging output with printk()
  • Utilizing dmesg
  • Implementing dynamic debugging
  • Analyzing kernel panics
  • Interpreting oops messages
  • Debugging using GDB
  • Essential performance tracing utilities

8. Character Device Drivers

  • The Linux device driver model
  • Character-based devices
  • Driver registration processes
  • Defining file operations
  • Implementing read and write functions
  • The IOCTL interface
  • Memory management strategies
  • Procedures for driver cleanup

9. Driver Integration and Hardware Interaction

  • Integration of platform devices and drivers
  • Programming GPIOs
  • Managing interrupts
  • Utilizing timers and deferred tasks
  • Reading from and writing to hardware registers
  • Interaction with memory-mapped I/O

10. Source Control Using Git

  • Core Git concepts
  • Managing kernel source code repositories
  • Techniques for branching and merging
  • Generating patches
  • Process for code review
  • Collaborative kernel development

11. Practical Kernel Development Labs

  • Configuration of a tailored kernel
  • Building and installing the kernel
  • Development of a basic kernel module
  • Coding a simple character device driver
  • Modification of Device Tree files
  • Troubleshooting kernel issues on the BeagleBone Black

12. Industry Best Practices and Conclusion

  • Standards for kernel coding style
  • Creating drivers that are easy to maintain
  • Avoiding common development errors
  • Available kernel documentation
  • Workflow for contributing to open source
  • Recap of critical concepts
  • Discussion and Q&A session
  • Recommended next steps in Linux kernel development

Requirements

Fundamental knowledge of operating on a GNU/Linux environment

Number of participants


Price per participant

Testimonials (2)

Upcoming Courses

Related Categories