DMA limitations

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
mr. xsism

DMA limitations

Post 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.
Tim

Re:DMA limitations

Post 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.
drizzt

Re:DMA limitations

Post 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.
Therx

Re:DMA limitations

Post by Therx »

Does the floppy drive use ISA DMA or another because I've read that it needs memory below 1mb

Pete
drizzt

Re:DMA limitations

Post 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...
mr. xsism

Re:DMA limitations

Post 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).
Post Reply