Linux Device Driver Training

Good news.. i just found cool training for the developer or Validation team.. especially who work with the new hardware/driver… You can use the knowledge to implement it in your daily task..Adding a Driver to the Kernel Tree
Details: Linux Certified

Linux Device Driver Training

Linux Device Driver Development Course

Overall objective of this class is to teach attendees on how to develop device drivers for Linux.

This three day course provides substantial practice with the key steps in developing Linux device drivers. The course shows attendees how device drivers work with the Linux kernel, how to compile and load drivers, how to debug drivers, as well as other essential topics.

This course acquaints developers with the issues essential for Linux device driver development. The course progresses through a number of topics. Each topic is presented along with a supporting laboratory exercise before moving on to the next topic.

Attendees will spend approximately 50 percent of the class time actually gaining hands-on experience with these topics.

The following modules will be covered during the class:

Devices in Linux
Devices treated as files, the /dev directory
Device classes – character, block, network, pipe
Creating device files with mknod
User Space Driver APIs
Low-level API
Streams API
How Loadable Modules Work Benefits of loadable modules
Correct use of insmod, modprobe, rmmod, and lsmod
Passing parameters to a loadable module
The GPL and your driver code
Compiling, Loading And Exporting
Writing a simple module
Compiling modules
Loading/unloading modules
Exporting symbols from a loadable module
Creating stacked loadable modules
Character Devices Major and minor numbers
Registering character device file
Driver methods – the file operations table
Transferring data to/from User Space
Tracing and Debugging printk for debugging
Device information in /proc
strace to track system calls
ksyms and ksymoops
Debuggers – gdb and kgdb
Blocking and Wait Queues Multi-tasking
Schedule()
Wait Queues
Save sleeping
Poll()
Accessing Hardware I/O ports vs. memory mapping
Allocating and mapping I/O space
Functions for reading and writing I/O ports
Barriers
Accessing I/O from User Space
Handling Interrupts Interrupt Handler functions
Restrictions of kernel code running in interrupt context
Deferred interrupt handling tasklets and workqueues
Accessing PCI hardware
detecting PCI devices
Resour
ce conflicts
Vendor
/device IDs
I/O mapping
USB Drivers USB structure and Topology
E
ndpoints, interfaces and configurations
USB Request Blocks(urbs)
Driver Structure and organization
“Gadget” drivers
Managing Time Timer interrupts and jiffies
Short Delays
Task queues
Kernel Timers
Block Device Drivers Block Device Drivers
Header files
Registering block drivers
The block_device_operations structure
Special Methods

Network Drivers

The net_device structure
Sockets
Naming scheme and registration
Network driver methods
NAPI the new API

Adding a Driver to the Kernel Tree

Where to put it – kernel layout for drivers
Modifying the Makefile

Adding it to configuration options – the Kconfig file


Course Objectives:

• To provide an understanding of the essentials of Linux device drivers.
• To give you practical experience in developing Linux device drivers.
• The steps necessary to add devices to a Linux system
• How to determine what hardware is present on a Linux system
• The purpose and functionality of device drivers
• Compiling and linking device drivers
• Trade-offs between loadable modules and drivers compiled into the kernel.

Who Should Attend:
The course is designed for software engineers who are new to Linux device drivers. Attendees should have experience with C, be able to perform basic Unix commands, and have some experience with the basic Gnu tools of gcc, gdb, and make.

Course Materials
The class materials for this course have been meticlously designed by leading practioners in this area. The workshop materials include a comprehensive student workbook and CD. The workbook contains all of the slides used in the course as well as hands-on lab exercises.  The CD contains the lab exercise code as well as a large amount of Linux software.

Course Workshop and Set-up:
The workshop makes use of standard PC’s with a desktop Linux distribution for development. The course will make use of PC’s and PC devices as examples.

Linux Project

Here is the usefull link for the developer and Linux User especially who is working on the Hardware Level.

Most of this project ar Involved by Intel

Here is more project:Credit to Intel / Intel Linux Graphic

Intel provides open source drivers for many devices. The following links go to the project sites of several of these.

Project Description
e100/e1000
Intel® PRO/100/1000/10Gb drivers
ipw2100
Intel® PRO/Wireless 2100 Driver for Linux
ipw2200
Intel® PRO/Wireless 2200BG Driver for Linux
ipw3945
Intel® PRO/Wireless 3945ABG Driver for Linux
iwlwifi
Intel Wireless WiFi Link Drivers for Linux
UWB
Linux UWB + Wireless USB + WiNET
LKP
Linux Kernel Performance
ACPI
Advanced Configuration and Power Interface
POSIX
Open Source POSIX Test Suite
OPENHPI
Hardware Platform Interface
OPENWSMAN
Open WS Manageability
SAF test
Open Service Availability Forum
Firmware Kit
Linux-Ready Firmware Developer Kit
IRQ Balance
Linux daemon that distributes interrupts