I/O Overview
6-2
6.1 I/O Overview
At the application level, input and output may be handled by stream, pipe,
message queue, or host channel objects. Each type of object has its own
module for managing data input and output.
Note:
An alternative to pipes and streams is to use the GIO class driver to
interface with IOM mini-drivers. The DSP/BIOS Driver Developer's Guide
(SPRU616) describes the GIO class driver and the IOM mini-driver model.
The information in this chapter related to stream and pipe objects is still
relevant if you are using IOM mini-drivers with streams or pipes.
A stream is a channel through which data flows between an application
program and an I/O device. This channel can be read-only (input) or
write-only (output) as shown in Figure 6-1. Streams provide a simple and
universal interface to all I/O devices, allowing the application to be completely
ignorant of the details of an individual device’s operation.
Figure 6-1. Input/Output Stream
An important aspect of stream I/O is its asynchronous nature. Buffers of data
are input or output concurrently with computation. While an application is
processing the current buffer, a new input buffer is being filled and a previous
one is being output. This efficient management of I/O buffers allows streams
to minimize copying of data. Streams exchange pointers rather than data,
thus reducing overhead and allowing programs to meet real-time constraints
more readily.
A typical program gets a buffer of input data, processes the data, and then
outputs a buffer of processed data. This sequence repeats over and over,
usually until the program is terminated.
Digital-to-analog converters, video frame grabbers, transducers, and DMA
channels are just a few examples of common I/O devices. The stream
module (SIO) interacts with these different types of devices through devices
(managed by the DEV module) that use the DSP/BIOS programming
interface.
Application
Program
Input Output