Specifications
Software Interface 37
3.3 Data Transfer Scheme
This section describes the shared-memory scheme used to move data
between the host system and the DTC04 module.
3.3.1 Rings
Data moves between the host and the module through two unidirectional
rings. These rings use a total of 64 Kbytes of memory in the module. This
memory is shared by the host and the module. Each ring uses 32 Kbytes
of the shared memory.
NOTE
The last 256 bytes of each 32 Kbyte area are reserved. Host device
handlers should consider each memory area to be 32K—256 bytes
long.
The first ring in the shared memory is called the command ring. The
command ring passes command data from the host to the module. The
host is the sender for the command ring.
The second ring is called the message ring. The message ring passes
status data from the module to the host. The module is the sender for the
message ring.
Each ring is an array of buffers. Each segment of data uses one or more
of the buffers. The host determines the size of each buffer when the host
initializes the shared memory space. Usually, all the buffers are the same
size.
Each ring has a load pointer that points to the next buffer to fill, and
an unload pointer that points to the next buffer to empty. The host and
module maintain these load pointers. The host keeps its pointers in data
structures handled by the module’s device driver. The module keeps
its pointers in private memory. On initialization, the host sets its load
pointer to the first buffer in the command ring, and its unload pointer to
the first buffer in the message ring. The module microcode sets its load
pointer to the first buffer in the message ring, and its unload pointer to
the first buffer in the command ring.