Fellow Device Driver Writers,
I have seen some good discussion about DMA on this
list. I have two issues I am hoping to get some advice on.
Background
***********
I am running Windows 2000. I have an INTEL IQ80303 evaluation board.
The 80303 is the successor to the INTEL 960 chip. This board is plugged
in to the PCI bus on an INTEL D815EEA motherboard. This motherboard
has an INTEL 815 chip set. My application, digital fluoroscopy,
requires me to transfer a 2MB image between my 80303 board to the pc
host system memory once every 33 milliseconds.
My First Question
*****************
When I set up the 80303 as a busmaster and write data to
host system memory I am able to transfer a 2MB image to
host memory in about 17 milliseconds. This is good!.
When I set the 80303 up as busmaster and do a read from
system memory it takes 38 milliseconds to transfer 2MB.
This is bad!!!
On reads, my PCI bus analyzer shows 24 clock cycle (96 bytes)
bursts followed by over 30 clock cycles with TRDY high. In this
test the 815 motherboard is the target so it is the one
setting TRDY.
Does anyone out there have experience doing pci busmaster
writes and reads using the 815 chip set? If so, am I out
of luck or is there something I can do to get faster reads?
The 810 chip set is as lousy as the 815
On other chip sets we have had better results.
The 820 does well.
The 840 is pretty good.
The INTEL SERVER STL2 motherboard we tried was wonderful.
We want to use the 815 because it is cheaper.
My Second Question
******************
One solution would be for my 80303 board to send a message
to a W2K driver and the driver pushes (writes) the data
to my 80303 card. I will say up front that I don’t really
like this solution. However, even if we do not do this, I still
have call to push data to another card and I would like to do
it quicker than 69 milliseconds.
I coded up a 2MB data push to my card. I am using NuMega DriverWorks.
The KMemoryRange::outd command ends up calling
WRITE_REGISTER_BUFFER_ULONG.
The MapIoSPace call in DriverWorks sets the mapped memory to noncached.
It takes 69 milliseconds to transfer 2MB of data. When I look at the
transfer
on my PCI bus analyzer I see lots of single DWORD writes
and some 3 to 8 DWORD bursts. This is really bad.
Since the mapped memory was noncached I tried an RtlCopyMemory.
Performance was no better.
My hardware guy insists there must be a way to set up a host
to pci card dma transfer with the motherboard as the master.
I am not sure if there is a better way.
Is there a way to set up a motherboard to pci card busmastering
dma transfer with a motherboard resource acting as the master?
Thanks in advance
Chuck Rush
xxxxx@infimed.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com