Tom Stepleton <
stepleton@gmail.com> writes:
Does anyone have any guide to what the Transputer has to be doing to
do DMA in a B008?
Nothing special, really. The B008, like the B004 and compatible boards,
offers a link that goes to the host computer, and the code on the
Transputer just has to use that link, sending and receiving bytes across
it. It's then up to the host computer how it wants to serve the link;
whether one byte at a time using port I/O, or, in the case of the B008,
using DMA. (The C012 chip on the B008 knows how to implement its half
of the DMA dance with the PC host through the ISA bus.)
When the Transputer sends a message, it gets queued on the B008 for
transfer to the host, and when the host sends a message, it gets queued
on the B008 for transfer to the Transputer. In both directions, if DMA
is to be used between the host and the B008, the host has to program its
DMA controller correctly, and then tell the B008 to go ahead and run the
DMA transfer. The code running on the Transputers on the B008 don't
know whether the transfer is done using port I/O or DMA; it just sees a
normal inter-Transputer link that happens to go to the host.
Are there any good examples out there of doing DMA with a B008 card?
I've implemented a MINIX 3.4 driver for the B004 and B008. It does DMA
for the latter. I've got a little write-up about that on my web site,
at <
https://hamartun.priv.no/b004.html>, and there are links from there
to the code on github. I mostly use the driver to support Helios.
-tih
--
Most people who graduate with CS degrees don't understand the significance
of Lisp. Lisp is the most important idea in computer science. --Alan Kay
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)