21 Days Challenge on Embedded Linux Device Drivers
Character Drivers | Kernel Synchronization | Interrupt Mangement | Challenges | Project
30+ Hands-On
21 Days Challenge on Embedded Linux Device Drivers Overview
Emertxe’s Advanced Device Drivers Course is one of the most comprehensive courses designed in this domain. It ramps up ramp-ups up working professionals to design, develop, test, debug and launch them. This course is designed for experienced professionals.
The Advanced Device Driver course is designed to equip working professionals with in-depth knowledge and practical skills in developing and managing device drivers for complex hardware systems. This course delves into the intricacies of driver development, focusing on advanced techniques and methodologies essential for working with modern hardware architectures.
Participants gain a comprehensive understanding of various driver models, including character, block, USB and PCI drivers. It also covers advanced driver topics like network drivers, platform drivers and file-system drivers. Throughout the course, participants are provided with hands-on exercises and projects that simulate real-world scenarios.
By the end of the Advanced Device Driver course, participants emerge with a deep understanding of driver development principles and the ability to design, implement, and maintain robust drivers. It will put you ahead in a fast track career path and professional advancement.
Pre-requisistes and Key Takeaways
Our advanced Linux device drivers courses start with an introduction to the drivers ecosystem and take further deeper topics consisting of character driver, block driver, USB driver and PCI driver. It also covers advanced driver topics like network drivers, platform drivers and file-system drivers. Details of Advanced linux device drivers course syllabus with practicals as follows.
Key Takeaways:
- To get you started with writing device drivers in Linux
- Provide real time hardware exposure
- Equip you with real-time tools, debugging techniques and industry usage
- Begin with writing character drivers, followed by USB
- Learn how to handle interrupts, synchronization and timer
- Develop Network device drivers
- Build File system driver
- Implement Platform drivers
- Learn how to debug the kernel using KDB / KGDB
- Specific debugging using USBmon, Network trace etc.
Topics Covered:
- Day1: Introduction & Character device drivers
- Day2: HW access, Interrupts, Time keeping, delays and deferred work
- Day3: Concurrency, USB drivers
- Day4: Block drivers, PCI drivers
- Day5: Network drivers
- Day6: Linux device driver model, Platform devices and drivers
- Day7: Kernel debugging techniques, File system drivers
- One month lab assistance
Hands-On Sessions:
- The Driver specific Commands & Tools
- Setting up the Driver Development Environment
- Writing your “first” Driver
- Writing various Character Drivers
- UART (Hardware) Based Drivers
- Understanding the USB Ecosystem
- Writing a USB Driver
- Interrupt implementation using deferred execution
- Concurrency management using mutex, semaphores
- Memory based Block Driver
- Implementation of a char based PCI driver
- Using KDB debugger
- Creating proc entries for a driver
- Using KGDB for debugging
- Implementing Network device driver (Ethernet)
- Implementation of Platform driver for RTC
- Implementation of a File System driver
Prerequisites:
- Good C & Programming Skills
- Basic Hands – On Linux Usage
- Good to have – Understanding of basic File related system calls
Platform Details:
- OS – Ubuntu Linux
- Hardware – BeagleBone Black
- Kernel version – 3.x/4.x
Upskill & Get Ahead in Your Career
Advanced Linux Device Drivers - Course Syllabus
Our advanced Linux device drivers courses start with an introduction to the drivers ecosystem and take further deeper topics consisting of character driver, block driver, USB driver and PCI driver. It also covers advanced driver topics like network drivers, platform drivers and file-system drivers. The first 4 days of the curriculum will remain the same as mentioned in the Linux Device Drivers – Intermediate Course. It will additionally cover advanced topics in the remaining 3 days, which is mentioned below. Details of Advanced linux device drivers course syllabus with practicals as follows
`
- Day-5
- Network Drivers
- Introduction to Network Stack
- Architecture
- Introduction to DMA
- Socket Buffer
- Socket buffer (skb) and its usage
- Functions related to socket buffers
Packet Transmission
- Controlling transmission concurrency
- Transmission timeouts
- Packet Reception (Interrupt Mode & NAPI Mode)
Communication With The Phy
- Handling Link Changes
- Statistical Information
- Power management
- Implementation of Network driver (Ethernet)
Day-6
- Overview of Device Driver Model
- Device Structure
- Device Driver Structure
- Classes
- Driver binding
- Practical Implementation using Linux device driver model
- Overview
- Platform devices
- Platform device initialization
- I/O resources
- Platform drivers
- Operations on device
- Implementation of platform driver (RTC driver on Beaglebone black)