Hi to All,
I’m working on a NT driver for a PCI board with 32Mb RAM on it and a
MPC8240 processor on-board. MPC8240 processor has an internal DMA
controller capable of four types of DMA transfers:
- local memory to local memory
- PCI memory to local memory
- local memory to PCI memory
- PCI memory to PCI memory
What we want is to transfer a user buffer located in PC’s memory to a
specific location at onboard RAM. For this we want to use the MPC8240 as a
master DMA controller.
We wrote a master DMA driver following the “Windows NT Device Driver Book”
samples. We ended at the point of having the physical address of the user buffer
and have to program the controller’s registers.
We thought that programming MPC8240 for doing a PCI to local memory transfer
and loading:
- its the source address register with the physical address of the user buffer
- its destination address register with the address where the user buffer to be copied
- its counter register with the number of bytes in the buffer
would be enough but it is not enough. The DMA transfer is not started… ;-(
I really don’t know if the MPC8240 is able to access the PC’s RAM and perform this
transfer. Maybe not.My hardware knowledge are very limited in this field.
On the other side, the MPC8240 is expecting an PCI address in source address
register (for PCI to local transfer), that is an address above 2GB.
Obviously the physical address of the user buffer is under this limit.
Is there any means to map this user buffer to PCI space? Are we on a wrong way?
Any minute of your precious time gets HUGE appreciation from us,
Daniel Pop
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