Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DMA

569
01 февраля 2002 года
Kar|_SuSe
6 / / 20.12.1999
hi *
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
461
04 февраля 2002 года
gerard
102 / / 20.12.1999
Как правило, имеется два контроллера DMA, управляющие каналами 0-3 и 4-7. Каждый из восьми каналов имеет три регистра, номера которых следующие:

Номер канала 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 стандартно используется для регенерации памяти, и его не рекомендуют применять для чего-то другого), но можно поэкспериментировать.
569
06 февраля 2002 года
Kar|_SuSe
6 / / 20.12.1999
ogromnoe posibo (:
no toshe ne mogu ponyat' kak moshno sabit' master0 i pri etom ne rasryadit' pamyat':)
461
06 февраля 2002 года
gerard
102 / / 20.12.1999
Может быть, регенерация памяти и пересылка типа "память-память" могут производиться одновременно?.. В крайнем случае, можно попробовать аналогичный способ для канало 4 и 5 второго контроллера.
461
06 февраля 2002 года
gerard
102 / / 20.12.1999
Может быть, регенерация памяти и пересылка типа "память-память" могут производиться одновременно?.. В крайнем случае, можно попробовать аналогичный способ для каналов 4 и 5 второго контроллера.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог