PowerPC Burst PCI access
Peter Dufault
dufault at hda.com
Fri Apr 8 00:30:04 UTC 2005
These comments relate to the MVME5500 VME powerPC port and a PCI data
acquisition card.
In my control application I noticed a while ago that reading back the
data from the PCI data acquisition board is extremely slow. The board
(acromag PMC341) collects the data into a pre-fetchable memory buffer
that it says will transfer data at 40 MByte/s using burst reads. I'm
seeing about 4 MByte/s using naive reads and I eventually need to solve
this problem. With a 20KHz control loop I'm losing about 1/4 of the
CPU using naive reads.
As I understand it, if the memory region that the PowerPC fetches from
is cacheable then the PowerPC will attempt to burst cache-line size
reads. I think the mapping from PowerPC to DAQ card is first through
the PowerPC BAT registers and then a PCI window.
Is my understanding about right? Is there some code I should look at
as an example?
I also tried fetching the memory as a "long double" but I started
getting exceptions in my tasks. I assume my ISR started using floating
point resources during the copy which caused this, so I also need a
pointer to a method of doing cache-line size memory fetches without
affecting the floating point state.
Thanks,
Peter
Peter Dufault
HD Associates, Inc.
More information about the users
mailing list