Intel PCI-7200 Switch User Manual


 
C/C++ Libraries
41
Bus Mastering DMA mode of PCI-7200 :
PCI bus mastering offers the highest possible speed available on the PCI-7200.
When the function _7200_DI_DMA_Start is executed, it will enable PCI bus
master operation. This is conceptually similar to DMA (Direct Memory Access)
transfers in a PC but is really PCI bus mastering. It does not use an 8237-style
DMA controller in the host computer and therefore isn't blocked in 64K max.
groups. PCI-7200 bus mastering works as follows:
1. To set up bus mastering, first do all normal PCI-7200 initialization necessary
to control the board in status mode. This includes testing for the presence of
the PCI BIOS, determining the base addresses, slot number, vendor and
device ID's, I/O or memory, space allocation, etc. Please make sure your
PCI-7200 is plugged in a bus master slot, otherwise this function will not be
workable.
2. Load the PCI controller with the count and 32-bit physical address of the
start of previously allocated destination memory, which will accept data. This
count is the number of bytes (not long words!) transferred during the bus
master operation and can be a large number up to 64 million (2^26) bytes.
Since the PCI-7200 transfers are always long words, this is 16 million long
words (2^24).
3. After the input sampling is started, the input data is stored in the FIFO of PCI
controller. Each bus mastering data transfer continually tests if any data in
the FIFO and then blocks transfer, the system will continuously loop until the
conditions are satisfied again but will not exit the block transfer cycle if the
block count is not complete. If there is momentarily no input data, the
PCI-7200 will relinquish the bus temporarily but returns immediately when
more input data appear. This operation continues until the whole block is
done.
4. This operation proceeds transparently until the PCI controller transfer byte
count is reached. All normal PCI bus operation applies here such as a
receiver which cannot accept the transfers, higher priority devices
requesting the PCI bus, etc. Remember that only one PCI initiator can have
bus mastering at any one time. However, review the PCI priority and
"fairness" rules. Also study the effects of the Latency Timer. And be aware
that the PCI priority strategy (round robin rotated, fixed priority, custom, etc.)
is unique to your host PC and is explicitly not defined by the PCI standard.
You must determine this priority scheme for your own PC (or replace it).
The interrupt request from the PCI controller can be optionally set up to
indicate that this loanword count is complete although this can also be
determined by polling the PCI controller.