DMA
est' li u kogo porti registrov DMA-Controlerov
esli ne satrudnit kin'te plz ...
i kak realisuet'sya RAMtoRAM-transfer ?
s ispol'sovaniem kaskada controlerov (AT) v kotorom na master0 RAMtoDEV a na slave2 DEVtoRAM (moyo predstavlenie) ?
TIA
Номер канала DMA 00 01 02 03 04 05 06 07
Регистр адреса 00 02 04 06 C0 C4 C8 CC
Регистр-счетчик 01 03 05 07 C2 C6 CA CE
Регистр страниц 87 83 81 82 8F 8B 89 8A
Кроме того, каждый из двух контроллеров имеет управляющие регистры, номера которых следующие:
Регистр команд/состояния 08h D0h
Регистр запроса передачи 09h D2h
Регистр маскировки канала 0Ah D4h
Регистр режима передачи 0Bh D6h
Регистр сброса 0Ch D8h
Регистр сброса 0Dh DAh
Регистр сброса 0Eh DCh
Регистр сброса 0Fh DEh
Следует отметить, что первый контроллер является 8-разрядным, поэтому при записи в его регистр 16-разрядного слова нужно сначала послать младший байт, потом старший;
точно так же и при чтении. Второй контроллер
- 16-разрядный, поэтому в его регистры можно сразу записывать слово (и читать).
В регистр адреса заносятся младшие 16 бит физического адреса памяти, в регистр-счетчик
- число передаваемых слов, в регистр страниц
- остальные биты физического адреса (4 бита в RM, 8 или 16 в PM). При этом для второго контроллера физический адрес выражается в словах, а не в байтах. Например, для адреса 24680h нужно занести 2340h в регистр адреса и 1 в регистр страниц (а не 4680h и 2, как для первого контроллера). При чтении эти регистры содержат текущие значения адреса и счетчика слов.
Теперь что касается передачи "память-память".
В регистре команд (08h или D0h) младший бит
(номер 0) разрешает передачу между каналами 0 и 1. Видимо, если записать адрес передачи
в регистры канала 0, адрес приема в регистр канала 1, установить счетчик канала 0, а затем записать в регистр команд значение 01h,
то можно будет передавать данные прямо из памяти в память. Не знаю, так ли это на самом деле (вообще-то канал 0 стандартно используется для регенерации памяти, и его не рекомендуют применять для чего-то другого), но можно поэкспериментировать.
no toshe ne mogu ponyat' kak moshno sabit' master0 i pri etom ne rasryadit' pamyat':)
Может быть, регенерация памяти и пересылка типа "память-память" могут производиться одновременно?.. В крайнем случае, можно попробовать аналогичный способ для канало 4 и 5 второго контроллера.
Может быть, регенерация памяти и пересылка типа "память-память" могут производиться одновременно?.. В крайнем случае, можно попробовать аналогичный способ для каналов 4 и 5 второго контроллера.