Page 1 of 1

DMA limitations

Posted: Tue Dec 09, 2003 3:14 pm
by mr. xsism
what are the memory limitations with DMA? IIRC it must be under 1MB in 8bit DMA nad under 4MB in 16bit? Is this correct? Can i use paging to have a buffer else where but then put it at a virtual address so the DMA can be fooled?

Thanks amigos.

Re:DMA limitations

Posted: Tue Dec 09, 2003 3:20 pm
by Tim
The ISA DMA controller requires the buffer be located under 16MB (physical) and that it not cross a 64KB boundary. PCI DMA depends on the card that's doing it (there's no 'PCI DMA controller') but there are no general restrictions.

Remember DMA happens outside of the CPU, so the hardware only sees RAM addresses, not segmentation, paging or protection.

Re:DMA limitations

Posted: Thu Dec 11, 2003 5:07 am
by drizzt
- The ISA DMA (8 and 16 bit) buffers must be below 16MB;
- Memory used by 8-bit DMA (DMA channels 0-3) can not cross a 64K boundary;
- Memory used by 16-bit DMA (channels 4-7) can not cross a 128K boundary;

PCI (32-bit) DMA; also known as bus-mastering, does not have these restrictions.

Re:DMA limitations

Posted: Thu Dec 11, 2003 6:19 am
by Therx
Does the floppy drive use ISA DMA or another because I've read that it needs memory below 1mb

Pete

Re:DMA limitations

Posted: Thu Dec 11, 2003 7:31 am
by drizzt
The floppy drive uses the 8-bit ISA DMA (the channel #2); AFAIK the buffer must be located below 16MB and not below 1MB...

Re:DMA limitations

Posted: Thu Dec 11, 2003 10:30 am
by mr. xsism
ok, so under 16MB. Yeah Floppy must use ISA DMA 8bit since it is cnahhel 2(0,1,2<the 3rd chan).