First day
Reminders on kernel programming
- Reminders on kernel module development
- Kernel objects
Exercise: |
Writing a kernel module creating and using kernel objects and sets |
Exercise: |
Interacting with a kernel module through a kernel object and the sysfs file sytem |
Hotplug
Exercise: |
Writing a kernel module sending hotplug events to a user mode program. |
Exercise: |
Cross-compiling, configuring and using Udev. |
Second Day
Devices and Drivers
- 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 |
Power-management : APM and ACPI
- The APM standard.
- The ACPI standard.
Exercise: |
Writing a user program to shut down the system. |
Power-management, suspend and hibernate
- Power management in drivers
- Freezing tasks
- Suspend in RAM
- Suspend on Disk
- Debugging power management
Exercise: |
Writing a kernel module reacting to suspend in RAM and system wakeup |
|
Third Day
Cpu frequency governors
- The cpufreq user interface.
- The various governors available.
Idle Cpu governors
- The Idle task.
- The Idle device concept.
- CpuIdle governors.
USB Drivers
- 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 |
Fourth Day
The libUSB user-mode USB driver framework
- The libUSB libraries.
- libUSB 0.1.12.
- libUSB 1.0
Exercise: |
Building libUSB |
Exercise: |
Writing a user-mode USB driver using libUSB |
USB gadget drivers
- 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.
|