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.
DMA limitations
Re:DMA limitations
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.
Remember DMA happens outside of the CPU, so the hardware only sees RAM addresses, not segmentation, paging or protection.
Re:DMA limitations
- 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.
- 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
Does the floppy drive use ISA DMA or another because I've read that it needs memory below 1mb
Pete
Pete
Re:DMA limitations
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
ok, so under 16MB. Yeah Floppy must use ISA DMA 8bit since it is cnahhel 2(0,1,2<the 3rd chan).