Chapter 9. Communicating with Hardware
Although playing with scull and similar toys is
a good introduction to the software interface of a Linux device
driver, implementing a real device requires
hardware. The driver is the abstraction layer between software
concepts and hardware circuitry; as such, it needs to talk with both
of them. Up until now, we have examined the internals of software
concepts; this chapter completes the picture by showing you how a
driver can access I/O ports and I/O memory while being portable
across Linux platforms.
This chapter continues in the tradition of staying as independent of
specific hardware as possible. However, where specific examples are
needed, we use simple digital I/O ports (such as the standard PC
parallel port) to show how the I/O instructions work and normal
frame-buffer video memory to show memory-mapped I/O.
We chose simple digital I/O because it is
the easiest form of an input/output port. Also, the parallel port
implements raw I/O and is available in most computers: data bits
written to the device appear on the output pins, and voltage levels
on the input pins are directly accessible by the processor. In
practice, you have to connect LEDs or a printer to the port to
actually see the results of a digital I/O
operation, but the underlying hardware is extremely easy to use.
|