Linux Training Overview|
Fundamentally, a device driver implements the interface between a piece of peripheral hardware and the application. In a traditional unprotected, “flat” memory model system, a driver may be little more than a set of functions conforming to a well-defined API and statically linked into an executable image.
But in the context of a protected mode operating system such as Linux, device drivers take on added significance owing to the distinction between User space and Kernel space. This 3-day hands-on seminar provides an introduction to the wonderful world of programming in Kernel space. As such, it provides insights not only into device driver programming, but also into the philosophy and design strategies of the kernel itself.
Numerous programming exercises introduce the rich kernel API that offers a multitude of services to driver writers. You’ll learn how Linux handles asynchronous I/O in a way that is totally transparent to applications. You’ll examine the unique problems of debugging in Kernel space. Perhaps most important, you’ll see how much of a device driver involves interactions with the kernel that have nothing to do with accessing physical hardware.
Linux Training Course duration
Linux Training Course outline
Brief review of basic Linux concepts
Introducing device drivers
- Protected mode memory management - user space vs. kernel space
- File system and directory structure
- Development environment
- What is a “device driver”?
- Linux device classes and user space API
- Kernel space driver API
a driver into the kernel
Debugging kernel modules
- proc files
- Tracing—strace, Linux trace toolkit
- Debuggers—gdb, kdb, kgdb
Kernel memory management
- Blocking vs. non-blocking operation
- Invoking the driver from multiple processes
Accessing real hardware
- Using I/O Ports--“side effects”
- A parallel port driver
- Platform dependencies
- How Linux handles interrupts
- Implementing and installing an interrupt handler
- Bottom halves -- work queues, and tasklets
- Registering a block driver
- Handling requests
- Mounting and unmounting
- Network driver methods