60.3.1. DMA
THIS SECTION IS UNDER CONSTRUCTION
Раньше были сложности с интеграцией, поэтому DMA не размещался
на каждом устройстве, а был встроен в компьютер.
Как это работало:
Программное обеспечение настраивало регистры DMA контроллера на
определенный блок памяти
Когда устройству надо было передать данные оно давало на шину сигнал DRQi (DMA Request)
(i = уникальный номер канала DMA)
DMA контроллер это видел - и выставлял на шину адресс и другие управляющие сигналы
а так же давал сигнал DACKi (DMA Acknowledge)
И устройство выставляло данные на шину/читало данные с шины.
Что можно было сделать
Установить параметры
Адресс буфера в физической памяти
Ранние имплементации имели ограничения что буфер не может
пересекать границу кратную например 64K, или 128K
Размер одной передачи
Byte/Word/Dword
Количество оставшихся возможных передач
Тип операции
Чтение/Запись
Запустить/Остановить
Получить состояние
Все нормально
DMA Overrun - зона закончилась
В общем случае DMA контроллеры устарели, сейчас устройства
просто Bus Master и сами ходят по сложным структурам памяти
содержащим указатели на буфера.
Index Prev Next