D8USB Linux Drivers
Writing USB-2.0 and USB-3.0 host and gadget drivers on Linux
|
Objectives
|
||||||
- A PC workstation and a target board per two trainees group.
- Printed course material.
- Good practice of C programming on Linux
- Good knowledge of Linux kernel and driver programming (see our D3 - Linux Drivers course and D7 - Power Management in Linux Drivers courses)
- Any embedded systems engineer or technician with the above prerequisites.
- The prerequisites indicated above are assessed before the training by the technical supervision of the traineein his company, or by the trainee himself in the exceptional case of an individual trainee.
- Trainee progress is assessed in two different ways, depending on the course:
- For courses lending themselves to practical exercises, the results of the exercises are checked by the trainer while, if necessary, helping trainees to carry them out by providing additional details.
- Quizzes are offered at the end of sections that do not include practical exercises to verifythat the trainees have assimilated the points presented
- At the end of the training, each trainee receives a certificate attesting that they have successfully completed the course.
- In the event of a problem, discovered during the course, due to a lack of prerequisites by the trainee a different or additional training is offered to them, generally to reinforce their prerequisites,in agreement with their company manager if applicable.
Course Outline
- Reminders on kernel module development
- Kernel objects
| Exercise: | Writing a kernel module creating and using kernel objects and sets | |
- The sysfs file system
| Exercise: | Interacting with a kernel module through a kernel object and the sysfs file sytem | |
- Hotplug in the kernel
- uevents
| Exercise: | Writing a kernel module sending hotplug events to a user mode program. | |
- Hotplug at user level
- Udev
- Hal and Dbus
| Exercise: | Cross-compiling, configuring and using Udev. | |
- The Device/Driver model in Linux
- Device class and types
- Bus drivers
- Bus types
- Generic devices and drivers
- System devices and drivers
- Platform devices and drivers
| Exercise: | Writing a platform device driver showing how device matching work | |
- The USB bus
- USB devices
- USB descriptors
- USB endpoints
- USB requests
- User view of the USB bus and devices
- USB device drivers
- Hotplug
- Communicating with devices through URBs
| Exercise: | Writing a basic usb device driver using URBs | |
| Exercise: | Writing an usb device driver using synchronous request management | |
- The libUSB libraries.
- libUSB 0.1.12.
- libUSB 1.0
| Exercise: | Building libUSB | |
| Exercise: | Writing a user-mode USB driver using libUSB | |
- Basic USB gadgets.
- Composite USB gaddget drivers.
| Exercise: | Writing a gadget driver and the corresponding host driver on the Linux workstation. | |
- The USB On-The-Go (OTG) specification.
- OTG support in Linux
More
To book a training session or for more information, please contact us on info@ac6-training.com.
Registrations are accepted till one week before the start date for scheduled classes. For late registrations, please consult us.
You can also fill and send us the registration form
This course can be provided either remotely, in our Paris training center or worldwide on your premises.
Scheduled classes are confirmed as soon as there is two confirmed bookings. Bookings are accepted until 1 week before the course start.
Last update of course schedule: 23 February 2026
Booking one of our trainings is subject to our General Terms of Sales
Related Courses
D0
Linux user mode programming
D1
Embedded Linux with Buildroot and Yocto
D1S
Embedded Linux with Ac6 System Workbench
D1Y
Embedded Linux with Yocto
D3
Linux Drivers
D4
Real-time Linux
D5
Embedded GUI
D7
Power Management in Linux Drivers
Q1
Embedded GUIs with Qt
Y1
Yocto Project Development
Y12
Comprehensive Yocto Project Usage
Y2
Yocto Project Expert